使用一组请求的点进行距离计算

Posted

技术标签:

【中文标题】使用一组请求的点进行距离计算【英文标题】:Distance Calculation with a requested set of points 【发布时间】:2017-05-01 14:18:55 【问题描述】:

我需要确定提交集合中每个点(纬度/经度)到其他每个点的距离。可能是 2 到 200 分。像 Haversine 这样的公式是必需的。例如 A,B,C 将返回 A-B - x.x 米,A-C - x.x 米,B-C = x.x 米。

我正在考虑使用 Java 中的自定义解决方案之类的选项,或者可能利用 Hadoop / Apache Spark 之类的分布式计算或地理处理工具 (ESRI/ARCGIS) 之类的工具。

以前有人解决过这个要求吗?

有什么经验教训吗?

【问题讨论】:

您需要在这里提出具体问题 200个点需要199个阶乘距离计算,不管怎么计算都需要很长时间。 【参考方案1】:

对于具有 (lon,lat) 坐标 [注意 X,Y 顺序] 与 Esri Spatial Framework for Hadoop 的点之间的距离(以米为单位),请使用 ST_GeodesicLengthWGS84。

More samples of ST_GeodesicLengthWGS84 can be found in this test script.

GIS-SE 相关问答:https://gis.stackexchange.com/questions/170479/join-on-range-query-using-esris-gis-tools-for-hadoop/#185660

[披露:合作者。]

更新:Java API - GeometryEngine.html#geodesicDistanceOnWGS84

【讨论】:

以上是关于使用一组请求的点进行距离计算的主要内容,如果未能解决你的问题,请参考以下文章

找到最接近一组圆的点

计算两个坐标之间距离的点

给定距离内的点分组算法

百度地图高级开发:map.getDistance计算多点之间的距离并输入矩阵

在 Python 中使用 osmnx 到距离内边缘的最近点

(译)计算距离方位和更多经纬度之间的点