2013-10-02 4 views
3

System.Device.Location.GeoCoordinate.GetDistanceTo (...)를 디 컴파일하고 지구의 반지름을 계산 단계 중 하나로 지정해야하는 Haversine 수식을 사용한다는 것을 알았습니다.GeoCoordinate.GetDistanceTo 지구의 반지름이 잘못 되었습니까?

디 컴파일 된 코드에 지정된 반지름은 6376500.0 (미터)입니다. MSDN에

상기 documentation for GetDistanceTo는 발언 가지고 지구의 곡률

하버 사인 식 계정 있지만 은 타원형이 아닌 구면 지구를 가정한다.

구 각을 지구를 모델링

여러 가지 방법이 가 6,371km

내가 검색 사방 또한

, 내가 찾을 수없는 발견의 반경을 의미 얻을 것을

위키 백과 states 누구나 아주 작은 반지름을 6,376.5km로 지정하십시오.

꽤 가까워도 GetDistanceTo6,376.5 km를 사용하지만 널리 허용되는 반경은 6,371km입니다. 차이점은 무엇입니까? GetDistanceTo의 제작자가 지구의 반경을 근사하는 더 좋은 방법을 찾았습니까?

+0

적도에서 반경을 사용하고있는 것처럼 보이는 빠른 Google의 모습 (어쨌든 가깝습니다.) – Surfbutler

+0

@Surfbutler하지만 이유는 무엇입니까? Haversine식이 구형 지구를 가정 할 때 최대 반경 대신 평균 반경을 사용하는 것이 어떻습니까? 최대 반경을 사용하는 것이 왜 어떤면에서 더 좋을까요? –

+0

필자는이 함수를 작성한 Microsoft 개발자 만이 그 대답을 알고 있다고 생각합니다. – Surfbutler

답변

1

내 수학이 틀린 경우가 아니면 최대 34km의 차이가 발생할 수 있습니다.

소리가 많이 들리지 만 추가 0.17 % 오류 만 발생합니다.

아마도 2 개의 중요한 장소에 대해서만 결과를 사용하거나 표시 할 수 있지만 그다지 중요하지는 않습니다.