【发布时间】:2010-09-06 21:00:41
【问题描述】:
如何计算经纬度指定的两点之间的距离?
为了澄清,我想以公里为单位;这些点使用 WGS84 系统,我想了解可用方法的相对准确性。
【问题讨论】:
-
为了更准确 - 请参阅stackoverflow.com/questions/1420045/…
-
请注意,您不能在像 WGS 84 这样的旋转椭球体上应用半正弦公式。您只能在具有半径的球体上应用此方法。
-
这里的大部分答案都是使用简单的球面三角法,因此与 GPS 系统中使用的 WGS84 椭球距离相比,结果相当粗糙。一些答案确实参考了 Vincenty 的椭球公式,但该算法是为 1960 年代的台式计算器设计的,并且存在稳定性和准确性问题;我们现在有更好的硬件和软件。请参阅GeographicLib 了解具有多种语言实现的高质量库。
-
@MikeT - 虽然这里的许多答案似乎在小距离内很有用:如果您从 WGS 84 获取纬度/经度,并应用Haversine 就好像那些 是球体上的点,你没有得到答案,其错误只是由于地球的扁平化因素,所以可能在更准确公式的 1% 以内?需要注意的是,这些距离很短,比如在一个城镇内。
-
对于这些平台:Mono/.NET 4.5/.NET Core/Windows Phone 8.x/通用 Windows 平台/Xamarin iOS/Xamarin Android 参见stackoverflow.com/a/54296314/2736742
标签: algorithm math maps latitude-longitude haversine