НИИ МЛЯ
(прокрастинация. профанация. прострация.)
На главную Отдел ИИ Отдел ПА Отдел РП Лаборатория ЕН Лаборатория ЭХ
Лаборатория естественных наук

О вычислении расстояния между двумя точками на поверхности Земли

(Принято к публикации 2014-10-23)

Пусть нам даны две точки на поверхности Земли: A и B. Опишем этот радостный факт математически.

Будем считать Землю шаром радиуса R. С этим шаром свяжем сферическую систему координат (R, φ, ψ). В этой сферической системе координат точки A и B будут иметь координаты:

A = (RA, φA, ψA)
B = (RB, φB, ψB)

X Y Z R φ ψ

В декартовой системе координат XYZ эти же точки будут иметь координаты:

A = (R cos φA cos ψA, R sin φA cos ψA, R sin ψA)
B = (R cos φB cos ψB, R sin φB cos ψB, R sin ψB)

Попробуем теперь вычислить расстояние между этими точками по поверхности Земли, то есть, длину дуги большой окружности, проходящей через точки A и B.

Самый простой способ сделать это - посчитать косинус угла между радиус-векторами A и B:

cos(A, B) = cos φA cos ψA * cos φB cos ψB + sin φA cos ψA * sin φB cos ψB + sin ψA sin ψB

Тогда расстояние между точками A и B по поверхности сферы будет равно:

F(A, B) = R arccos( cos φA cos ψA * cos φB cos ψB + sin φA cos ψA * sin φB cos ψB + sin ψA sin ψB )

В качестве тестового примера проведем вычисление расстояния от Москвы (55°45′06″с.ш., 37°37′04″в.д.) до Новосибирска (55°01′00″с.ш., 82°55′00″в.д.):

Пункт А: широта долгота
Пункт B: широта долгота

Расчет:

Как видим, погрешность вычисления по сравнению с, например, данными Google Maps (2810.73 км), не превышает 1 км, т.е. ~0.01%.