Есть ряд вопросов, которые могут помочь, в том числе:
Учитывая две позиции, вы создаете сферические треугольные углы A в Амстердаме, B в Дубае и C на Северном полюсе со сторонами a = 90 ° - ϕ Ams , b = 90 ° - ϕ Dub , а угол C = Δλ = λ Dub - λ Ams . Требуемый ответ - сторона c.
Использование некоторого материала из моего ответа на SO 389211.
( Это радикально пересмотренный ответ - моя предыдущая попытка использовала неправильный сферический треугольник, и поэтому получил неправильный ответ. )
Искусство ASCII в худшем виде:
+ C (North Pole)
/|
b/ |
/ |
(Amsterdam) A + | a
\ |
c\ |
\|
+ B (Dubai)
Основной закон косинуса для сферических треугольников:
cos c = cos a . cos b + sin a . sin b . cos C
Отметив, что cos (90º - x) = грех x и sin (90º - x) = cos x, мы можем написать:
cos c = sin ϕ Ams . sin ϕ Dub + cos ϕ Ams . cos ϕ Dub . cos Δλ
Угол c в радианах затем преобразуется в расстояние путем умножения на радиус Земли.
Применение этого к вашим данным:
Dubai:
ϕ Dub = 25.248665°N
, λ Dub = 55.352917°E
Amsterdam:
ϕ Ams = 52.309071°N
, λ Ams = 4.763385°E
Δλ = 50.589532°
Работа до 6 знаков после запятой для тригонометрии:
cos c = 0.426548 × 0.791320 + 0.904465 × 0.611402 × 0.634872
= 0.337536 + 0.351079
= 0.688615
Откуда:
c = 46.479426°
= 0.811219 radians
Умножение этого на 6371 км как номинальный радиус земли дает
c = 5168 km
Следовательно, для R = 6371 км расстояние составляет 0,811219 × 6371 = 5168 км (до 4 с.ф.).
TrueKnowledge говорит, что должно быть около 5155 км. Позиционные данные, которые он использует, сравнимы с указанными вами значениями, и Википедия подтверждает указанный вами радиус. Это достаточно близко - повторный расчет с идентичными координатами и большим количеством цифр в расчете даст лучший ответ, но близкий к этому.