Является ли Формула Хаверсина или Формула Винченти лучше для вычисления расстояния?
Что лучше для расчета расстояния между двумя точками широты/долготы, Формулой Хаверсина или Формулой Vincenty? Почему?
Расстояние, очевидно, рассчитывается на Земле. Координаты WGS84 и GCJ02 влияют на расчет или расстояние (формула Vincenty учитывает ось WGS84)?
Например, в Android, Формула Хаверсина используется в Google Map Utils, но Формула Vincenty используется объектом android.Location
(Location.distanceBetween()
).
Ответы
Ответ 1
Haversine - это более простое вычисление, но оно не обеспечивает высокую точность предложений Vincenty.
Vincenty является более точным, но также более интенсивно вычислит и поэтому будет работать медленнее и увеличивать использование батареи.
Как и что-либо "лучше", речь идет о вашем конкретном приложении. Для вашего приложения, Vincenty может быть "лучшим" выбором, чем Haversine, но для другого приложения Haversine может быть лучшим выбором. Вам нужно будет ознакомиться с особенностями ваших случаев использования и сделать определение, основанное на том, что вы там найдете.
Ответ 2
Хаверсине и Винченти - два алгоритма для решения разных
проблемы. Хаверсин вычисляет большое расстояние круга на сфере
в то время как Винценти вычисляет кратчайшее (геодезическое) расстояние на поверхности
эллипсоид революции. Таким образом, ответ на ваш вопрос может быть нарушен
на 2 части:
- Вы хотите вычислить расстояние на сфере на эллипсоиде?
- Насколько точны Haversine или Vincenty при расчете данной проблемы?
Для наземных применений эллипсоид революции является разумным
приближение к "среднему уровню моря"; ошибка & plusmn; 100 м.
уплощение этого эллипсоида невелико, около 1/300, и поэтому может быть
аппроксимируется сферой (равный объем, например).
Большие расстояния на расстоянии отличаются от геодезических расстояний до 0,5%. В
некоторые приложения, например, какое расстояние от мыса до Каира?,
этой ошибкой можно пренебречь. В других приложениях, например, при определении
морские границы, он слишком велик (он 5 м на расстоянии 1
км). В общем, вы более безопасны с использованием геодезической дистанции.
Если вас интересует дистанция (на машине, лодке или самолете),
существует множество ограничений на пути, и ни великие
круг или геодезическое расстояние, которые измеряют длину кратчайших путей
на идеальной поверхности, было бы уместно.
О том, являются ли алгоритмы точными:
Haversine точно округляет, если очки почти
антиподальны. Лучшие формулы приведены в
Статья в Википедии о больших расстояниях.
Винчентий обычно с точностью до 0,1 мм. Однако, если точки
почти антипод, алгоритм не сходится, и ошибка
намного больше. Я даю лучший алгоритм для решения геодезической задачи
в Алгоритмы для геодезических. См. Также
Статья в Википедии о геодезических на эллипсоиде.
Решение геодезической задачи происходит медленнее, чем решение для
большой круг. Но это все еще очень быстро (около 1 м/с за расчет), поэтому
это не должно быть основанием для предпочтения больших расстояний на расстоянии.
ADENDUM
Здесь - это пакет Java, который реализует мой алгоритм
для нахождения геодезических расстояний. В отличие от метода Винченти, это точно
к округлению и сходится повсюду.