这不是乌鸦飞翔的距离。
我正在寻找这样的API:
distanceMiles = CalculationMilesBetweenPointsAlongRoad(LatLon1,LatLon2,RoadPolyline)
我有一条以折线表示的道路。
当车辆在这条道路上行驶时,我捕获经纬度。我想计算每个报告的LatLon之间的车辆行驶距离。
由于数据摄取的速度,我想在不进行空间查询的情况下执行此操作,但是如果唯一的方法是将道路折线存储在BigQuery或PostGIS中并不断对其进行查询,那我就可以了。
答案 0 :(得分:3)
当车辆在道路上行驶时,我捕获经纬度。我想计算每个报告的LatLon之间的车辆行驶距离。
让我用飓风玛丽亚在2017年所做的计算距离的场景来模拟您的用例
在查询下面为此“准备”数据(BigQuery标准SQL):
#standardSQL
WITH points AS (
SELECT ROW_NUMBER() OVER(ORDER BY iso_time) pos,
ST_GEOGPOINT(longitude, latitude) AS point
FROM `bigquery-public-data.noaa_hurricanes.hurricanes`
WHERE name LIKE '%MARIA%' AND season = '2017'
AND ST_DWITHIN(ST_GEOGFROMTEXT('POLYGON((-179 26, -179 48, -10 48, -10 26, -100 -10.1, -179 26))'), ST_GEOGPOINT(longitude, latitude), 10)
), lines AS (
SELECT pos, ST_MAKELINE(LAG(point) OVER(ORDER BY pos), point) line
FROM points
)
SELECT pos, line
FROM lines
WHERE pos > 1
上方可以显示为
现在,下面计算飓风“穿越”的距离
#standardSQL
WITH points AS (
SELECT ROW_NUMBER() OVER(ORDER BY iso_time) pos,
ST_GEOGPOINT(longitude, latitude) AS point
FROM `bigquery-public-data.noaa_hurricanes.hurricanes`
WHERE name LIKE '%MARIA%' AND season = '2017'
AND ST_DWITHIN(ST_GEOGFROMTEXT('POLYGON((-179 26, -179 48, -10 48, -10 26, -100 -10.1, -179 26))'), ST_GEOGPOINT(longitude, latitude), 10)
), lines AS (
SELECT pos, ST_MAKELINE(LAG(point) OVER(ORDER BY pos), point) line
FROM points
)
SELECT SUM(ST_LENGTH(line)) path_length
FROM lines
WHERE pos > 1
注意:ST_LENGTH(geography_expression)
返回地理输入中线的总长度(以米为单位)
您可以了解有关ST_LENGTH here
的更多信息