Расчет географического расстояния с использованием алгоритма на основе точечного произведения декартовых координат - PullRequest
0 голосов
/ 27 октября 2018

Я хотел бы рассчитать расстояние между двумя географическими точками (определенными парой широты и долготы), используя решение, описанное здесь .

Несмотря на то, что я понимаю общую концепцию, деталь с , которая предварительно преобразует все ваши сферические (широта / долгота) координаты в трехмерные декартовы координаты единичной длины , для меня проблематична.

Может ли кто-нибудь объяснить алгоритм, который мы должны написать для достижения вышеизложенного? Java была бы идеальной, но подойдет и псевдокод.

Обновление: меня не интересует метод Haversine.

1 Ответ

0 голосов
/ 27 октября 2018

Начнем с преобразования в сферические координаты.Обратите внимание, что широта / долгота почти совпадают с углами в сферических координатах.Единственное отличие состоит в том, что в отличие от phi широта начинается не с северного полюса, а с экватора.

enter image description here

Итак, если у вас широта равнадо +90 (90 ° с.ш.) соответствующий угол phi равен 0 °, а когда широта равна -90 (90 ° S), соответствующий phi угол равен 180 °.

phi   = -latitude + 90°
theta =  longitude
rho   = 1

Теперь вы можете перейтив декартово:

x=rho*sin(theta)*cos(phi); y = rho*sin(theta)*sin(phi); z = rho*cos(theta);

Но в вашем случае rho = 1, поэтому

x = sin(theta)*cos(phi);
y = sin(theta)*sin(phi);
z = cos(theta);

, где phi и thetaопределены как указано выше.

...