Czy wzór Haversine 'a czy wzór Vincenty' ego jest lepszy do obliczania odległości?

Który jest lepszy do obliczenia odległości między dwoma punktami szerokości / długości geograficznej, wzorem Haversine 'a czy wzorem Vincenty' ego? Dlaczego?

Odległość jest oczywiście obliczana na Ziemi. Czy Współrzędne WGS84 vs GCJ02 mają wpływ na obliczenia lub odległość (wzór Vincenta uwzględnia oś WGS84)?

Na przykład w Androidzie formuła Haversine jest używana w Google Map Utils , ale formuła Vincenty jest używana przez android.Location object (Location.distanceBetween()).

Author: Peter O., 2016-07-07

2 answers

Haversine jest prostszym obliczeniem, ale nie zapewnia wysokiej dokładności.

Vincenty jest bardziej dokładny, ale jest również bardziej obliczeniowo intensywny i dlatego będzie działać wolniej i zwiększyć zużycie baterii.

Jak w przypadku czegokolwiek "lepszego" to kwestia twojego konkretnego zastosowania. Dla Twojej aplikacji Vincenty może być "lepszym" Wyborem niż Haversine, ale dla innej aplikacji Haversine może być lepszym wyborem. Będziesz miał aby spojrzeć na szczegóły swoich przypadków użycia i dokonać ustalenia na podstawie tego, co tam znajdziesz.

 19
Author: andand,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-07 14:51:44

Haversine i Vincenty to dwa algorytmy rozwiązywania różnych problemy. Haversine oblicza wielką odległość okręgu na kuli podczas gdy Wincenty oblicza najkrótszą (geodezyjną) odległość na powierzchni elipsoida rewolucji. Więc odpowiedź na twoje pytanie może zostać złamana na 2 części:

    Czy chcesz obliczyć odległość kuli na elipsoidzie?
  1. Jak dokładny jest Haversine lub Vincenty w obliczaniu danego problemu?

Dla ziemskich zastosowań, elipsoida rewolucji jest rozsądną przybliżenie do "średniego poziomu morza"; błąd wynosi ± 100 m. spłaszczenie tej elipsoidy jest małe, około 1/300, a więc może być przybliżona przez sferę (np. o równej objętości).

Wielkie odległości kół różnią się od odległości geodezyjnych nawet o 0,5%. W niektóre zastosowania, np. jaka jest odległość od Przylądka do Kairu?, ten błąd można pominąć. W innych zastosowaniach, np. określenie granice morskie, jest daleko zbyt duża (jest 5 m w odległości 1 km). Ogólnie rzecz biorąc, bezpieczniej jest korzystać z odległości geodezyjnej.

Jeśli interesuje Cię odległość przebyta (samochodem, łodzią lub samolotem), na obranej ścieżce jest wiele ograniczeń i ani Wielki okrąg lub odległość geodezyjna, która mierzy długość najkrótszych ścieżek na idealnej powierzchni, byłoby właściwe.

Na pytanie, czy algorytmy są dokładne:

Haversine jest dokładna do zaokrąglenia, chyba że punkty są prawie antypodal. Lepsze formuły podane są w artykuł na Wikipedii o odległościach wielkich kół.

Wincentego jest zwykle dokładna do około 0,1 mm. jednak jeśli punkty są prawie antypodowa, algorytm nie jest zbieżny, a błąd jest znacznie większe. Podaję lepszy algorytm rozwiązania problemu geodezyjnego w algorytmach geodezyjnych . Zobacz też: artykuł na Wikipedii o geodezji na elipsoidzie.

Rozwiązanie problemu geodezyjnego jest wolniej niż rozwiązywanie dla wielkie koło. Ale i tak jest bardzo szybki (około 1 µs na obliczenia), więc to nie powinien być powód, aby preferować duże odległości okrężne.

ADENDUM

Tutaj {[18] } jest pakiet Java, który implementuje mój algorytm do znajdowania odległości geodezyjnych. W przeciwieństwie do metody Wincentego jest to dokładne aby zaokrąglić i zbiega się wszędzie.

 48
Author: cffk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-04 00:53:55