Znaleźć odległość między dwiema współrzędnymi w elipsoidzie?


18

Mam dwa zestawy szerokości i długości geograficznej.

Jak znaleźć odległość między dwiema lokalizacjami, jeśli założę, że Ziemia jest idealną elipsoidą (o mimośrodowości 0,0167)?

Odpowiedzi:


16

1
Formuły na tej stronie wydają się ignorować ekscentryczność. Zakładają, że Ziemia jest kulą, a nie elipsoidą.
Jon Bringhurst

Wcześniej zawsze korzystałem z biblioteki, która znała odległości między niektórymi ustawionymi długimi punktami, a następnie przeprowadzałem uśrednianie, aby obliczyć odległość jakichkolwiek nieznanych punktów. Zapytam o to kilka osób.
Wallbasher

Ach, drugi link wydaje się mieć właściwą formułę. Dzięki!
Jon Bringhurst

1
Dzięki za odpowiedź @Wallbasher. Byłoby jednak najlepiej, gdyby odpowiedzi były samodzielne. Byłoby to bardzo pomocne, gdybyś opublikował odpowiednią formułę wraz z odpowiedzią.
RK

7

Powiedzmy więc, że znasz swoje dwie szerokości i długości geograficzne

Możesz obliczyć współrzędne kartezjańskie dla każdego:

xa = (Cos(thisLat)) * (Cos(thisLong));
ya = (Cos(thisLat)) * (Sin(thisLong));
za = (Sin(thisLat));

xb = (Cos(otherLat)) * (Cos(otherLong));
yb = (Cos(otherLat)) * (Sin(otherLong));
zb = (Sin(otherLat));

A następnie obliczyć wielką odległość między nimi za pomocą:

MeanRadius * Acos(xa * xb + ya * yb + za * zb);

To uproszczone podejście pozwala na wstępne obliczenie wartości x, y i z, które mogą być przechowywane obok siebie w bazie danych w celu uzyskania wydajnych zapytań „punktów w obrębie x mil”.

Oczywiście zakłada to idealną kulę, a Ziemia nie jest nawet idealną elipsoidą, więc dokładność będzie wynosić tylko kilka metrów.


1
Chciałem również zwrócić uwagę na „idealną kulę”. Powinieneś być świadomy, że ta metoda da ci różne stopnie dokładności w zależności od tego, gdzie jesteś na świecie.
TroutSlayer

@TrotuSlayer jest ogólnie wystarczająco dobry dla większości aplikacji i zawsze występuje kompromis między szybkością a dokładnością. Jeśli chcesz być bardziej dokładny, nadszedł czas, aby wyciągnąć koło nadążne lub skorzystać z założeń, że Ziemia jest płaska dla danego obszaru, a odległości 2D są wystarczające.
Rowland Shaw,

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.