我反编译了 System.Device.Location.GeoCoordinate.GetDistanceTo(...) 并发现它使用了 Haversine 公式,这个公式需要在计算步骤中指定地球半径。
在反编译代码中指定的半径是 6376500.0 米。
在 MSDN 中,GetDistanceTo 的 文档 中有以下备注:
Haversine 公式考虑了地球的曲率,但假设地球是一个球体而不是椭圆体。
Wikipedia 表示:
几种不同的将地球建模成球体的方式都得出了平均半径为 6,371 千米。
此外,无论我搜索到哪里,我很少能找到将半径规定为 6,376.5 公里的人。
因此,尽管它们非常接近,GetDistanceTo 使用的是 6,376.5 公里,但广泛接受的半径为 6,371 公里。为什么会有差异?GetDistanceTo 的创建者是否找到一种更好的方法来近似地球的半径?
在反编译代码中指定的半径是 6376500.0 米。
在 MSDN 中,GetDistanceTo 的 文档 中有以下备注:
Haversine 公式考虑了地球的曲率,但假设地球是一个球体而不是椭圆体。
Wikipedia 表示:
几种不同的将地球建模成球体的方式都得出了平均半径为 6,371 千米。
此外,无论我搜索到哪里,我很少能找到将半径规定为 6,376.5 公里的人。
因此,尽管它们非常接近,GetDistanceTo 使用的是 6,376.5 公里,但广泛接受的半径为 6,371 公里。为什么会有差异?GetDistanceTo 的创建者是否找到一种更好的方法来近似地球的半径?