3

我反编译了System.Device.Location.GeoCoordinate.GetDistanceTo(...),发现它使用Haversine公式,它应该指定地球的半径作为计算步骤之一。

反编译代码中指定的半径为6376500.0(米)。

在 MSDN 中,GetDistanceTo 的文档有一个注释:

Haversine 公式解释了地球的曲率,但假设地球是球形而不是椭球。

维基百科指出

将地球建模为球体的几种不同方法均产生 6,371 公里的平均半径

同样在我搜索的任何地方,我都找不到将半径指定为6,376.5公里的任何人。

因此,即使它们非常接近,GetDistanceTo使用6,376.5公里,但广泛接受的半径是6,371公里。为什么有区别?创造者是否GetDistanceTo找到了一种更好的方法来近似地球的半径?

4

1 回答 1

1

除非我的数学不合格,否则这可能会导致高达 34 公里的差异。

听起来很多,但只有额外的 0.17% 错误。

也许您只能将结果使用/显示到 2 个重要的地方,那么这并不重要。

于 2013-10-02T13:23:20.103 回答