2013-10-02 30 views
3

我反編譯System.Device.Location.GeoCoordinate.GetDistanceTo(...),並發現它使用Haversine公式,它應該指定地球的半徑作爲計算的一個步驟。GeoCoordinate.GetDistanceTo對地球使用錯誤的半徑?

反編譯代碼中指定的半徑爲6376500.0(米)。

在MSDN中,documentation for GetDistanceTo具有備註:

haversine公式佔地球的曲率,但 假定球形地球,而不是橢圓。

維基百科states每個模擬地球是一個球體的

幾種不同的方式產生 平均6371公里

而且我到處尋找,我找到找不到半徑很少有人指定半徑爲6,376.5公里。

因此,即使它們非常接近,GetDistanceTo使用6,376.5公里,但是被廣泛接受的半徑是6,371公里。爲什麼區別? GetDistanceTo的創造者是否找到了一個更好的方法來近似地球的半徑?

+0

經過一段快速Google,看起來他們在赤道使用半徑(無論如何也接近它!) – Surfbutler

+0

@Surfbutler,但是爲什麼?當Haversine公式呈現球形地球時,爲什麼不使用平均半徑而不是最大半徑?爲什麼使用最大半徑的方法會更好? –

+0

我懷疑只有編寫函數的微軟開發人員知道這個答案。 – Surfbutler

回答

1

除非我的數學出來,否則可能會導致高達34公里的差異。

聽起來很多,但只有一個額外的0.17%的錯誤。

也許你只能使用/顯示結果到2個重要的地方,那麼它並不重要。