我反编译System.Device.Location.GeoCoordinate.GetDistanceTo(...),发现它使用Haversine公式,该公式应指定地球的半径作为计算步骤之一。
反编译代码中指定的半径为6376500.0
(米)。
在MSDN中,documentation for GetDistanceTo有一条评论:
Haversine公式解释了地球的曲率,但是 假设球形地球而不是椭球形。
维基百科states
将地球建模为球体的几种不同方式各自产生一个 平均半径为6,371公里
在我搜索的任何地方,我发现找不到任何人,很少将半径指定为6,376.5
km。
所以,即使它们非常近,GetDistanceTo
使用6,376.5
km,但广泛接受的半径为6,371
km。为什么不同? GetDistanceTo
的创造者是否找到了更接近地球半径的方法?
答案 0 :(得分:1)
除非我的数学计算出来,否则这可能导致最多34公里的差异。
听起来很多,但只有0.17%的误差。
也许你只能使用/显示两个重要位置的结果,然后它才真正重要。