我反編譯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
的創造者是否找到了一個更好的方法來近似地球的半徑?
經過一段快速Google,看起來他們在赤道使用半徑(無論如何也接近它!) – Surfbutler
@Surfbutler,但是爲什麼?當Haversine公式呈現球形地球時,爲什麼不使用平均半徑而不是最大半徑?爲什麼使用最大半徑的方法會更好? –
我懷疑只有編寫函數的微軟開發人員知道這個答案。 – Surfbutler