Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 计算道路多段线上两个纬度/纬度之间的距离_Javascript_Java_Google Bigquery_Geospatial_Postgis - Fatal编程技术网

Javascript 计算道路多段线上两个纬度/纬度之间的距离

Javascript 计算道路多段线上两个纬度/纬度之间的距离,javascript,java,google-bigquery,geospatial,postgis,Javascript,Java,Google Bigquery,Geospatial,Postgis,这不是乌鸦飞的距离 我正在寻找这样的API: 距离英里数=计算点之间的英里数(LatLon1、LatLon2、道路多段线) 我将道路表示为多段线 当一辆车在这条路上行驶时,我捕捉到lat/lons。我想计算车辆在每个报告的LatLon之间行驶的距离 由于数据摄取的速度,我希望在不进行空间查询的情况下执行此操作,但如果唯一的方法是将道路多段线存储在BigQuery或PostGIS中并不断对其进行查询,则我可以 当车辆在道路上行驶时,我会捕捉到横向/纵向。我想计算车辆在每个报告的LatLon之间行驶

这不是乌鸦飞的距离

我正在寻找这样的API:

距离英里数=计算点之间的英里数(LatLon1、LatLon2、道路多段线)

我将道路表示为多段线

当一辆车在这条路上行驶时,我捕捉到lat/lons。我想计算车辆在每个报告的LatLon之间行驶的距离

由于数据摄取的速度,我希望在不进行空间查询的情况下执行此操作,但如果唯一的方法是将道路多段线存储在BigQuery或PostGIS中并不断对其进行查询,则我可以

当车辆在道路上行驶时,我会捕捉到横向/纵向。我想计算车辆在每个报告的LatLon之间行驶的距离

让我模拟一下您的用例,以计算2017年飓风玛丽亚造成的距离

下面的查询为此“准备”数据(BigQuery标准SQL):

以上内容可以可视化为

现在,下面计算飓风“经过”的距离

注意:
ST_LENGTH(geography_expression)
返回输入地理区域中行的总长度(以米为单位)


如果您使用Google的API,
新的Google.maps.Polyline()
,您可以阅读更多有关ST_LENGTH的信息。我的解决方案是在谷歌云平台上,仅限于服务器端。看了谷歌的道路、方向、API等,似乎找不到我想要的need@Jason-如此重要-您可以通过使用投票下方张贴答案左侧的勾号来
标记已接受答案
。看看为什么它很重要!对答案进行投票也很重要。投票选出有帮助的答案。。。当有人回答你的问题时,你可以检查一下该做什么。遵循这些简单的规则,你可以提高自己的声望得分,同时让我们有动力来回答你的问题:O)请考虑!米哈伊尔:我的问题是关于道路的,答案是飓风和基于区域的地理信息系统(多边形)。@Jason-地质点的标签真的重要吗?假设多段线的lat/lon属于汽车路径而不是飓风路径,是否可以重用逻辑和代码?当然,它假设一组报告的拉特伦描述了尽可能接近的道路。不管怎样,我想最好是尽力帮忙,而不是忽视这个问题。顺便说一句,我在这里没有看到基于区域的gis,所以您可能会误读一些东西-它纯粹是多段线/路径basedOk。我读的是ST_长度,它是米,所以我会在沿途的某个地方换算成英里。让我来分析一下什么是“设置”和什么是“答案”:)正确。您可以在最末端转换为英里,如
SUM(ST_LENGTH(line))*0.000621371
。所以在这个特殊的例子中,它将是5307英里
#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