2013-03-06 11 views
6

Mam mały problem algorytmiczny.Szerokość/długość i metry

Pracuję nad aplikacją na Androida. Otrzymuję współrzędne GPS. Na przykład: szerokość geograficzna: 23.23907, długość geograficzna: 50.45786.

Więc mam rację. Chcę obliczyć szczegóły obwiedni w tym punkcie plus minus 5 metrów. Np .:

[23.23907 - 5 meters ; 23.23907 + 5 meters] 
[50.45786 - 5 meters ; 50.45786 + 5 meters] 

Jak wykonać obliczenia?

Dziękuję bardzo!

+2

Sprawdź z tego: http://stackoverflow.com/questions/639695/how-to-convert-latitude-lub-length-to-meters – Trinimon

+0

możliwy duplikat [znalezienie współrzędnej w pewnej odległości od źródła] (http: // stackoverflow.com/questions/14398378/finding-a-coordinate-at-some-distance-from-the-source) – Joni

Odpowiedz

14

Formuła haversine może być uproszczona, gdy pracujesz tylko w kierunkach północ-południe i wschód-zachód.

Jeśli obwód Ziemi wynosi C, punkt w odległości d kilometrów na południe od danego punktu wynosi 360 * d/C stopni na południe. Punkt d km na wschód to 360 * d/(C * cos (szerokość geograficzna)) stopni na wschód. Cosinus w mianowniku pochodzi z faktu, że długość długości geograficznej na danej szerokości geograficznej jest mniejsza od równika o tyle.

Więc jeśli the Earth's circumference jest 40075,04 kilometrów, aby przejść 5 m do Północ/Południe chcesz dodać/odjąć 0.0000449 od szerokości geograficznej i wykorzystać tę samą długość. Aby przenieść 5 m na zachód/wschód, należy użyć tej samej szerokości geograficznej i dodać/odjąć 0.0000449/cos (szerokość geograficzna) do długości geograficznej. Nie zapomnij jednak o skrzyniach brzegowych: w pobliżu biegunów musisz zacisnąć szerokość geograficzną do 90 °, a w pobliżu długości 180 ° będziesz też dodawał lub odejmował 360 °, aby utrzymać długość geograficzną w odpowiednim zakresie.

Z numerów zakres okazuje się być w przybliżeniu:

latitude: [23.23903 ; 23.23911] 
longitude: [50.45781 ; 50.45791] 

Aktualizacja: Należy pamiętać, że to wciąż zakłada, że ​​Ziemia jest idealną sferą, which it's not. System GPS na przykład modeluje Ziemię jako elipsoidę, gdzie równik ma 6378.137 km, a bieguny znajdują się 6356.7523142 km od środka Ziemi. Różnica wynosi około 1/300. i ma znaczenie dla wielu aplikacji, ale w tym przypadku jest w granicach błędu.

Korygowanie formuły dla długości geograficznej powinno być proste, ponieważ podobieństwa są nadal okręgami: należy po prostu zamienić cos(latitude) dla poprawnego współczynnika. Obliczanie wartości correct latitude jest trudniejsze, ponieważ południki nie są okręgami, ale elipsami, a długość łuku elipsy nie może zostać obliczona przy użyciu funkcji elementarnych, więc należy zastosować przybliżenia.

+0

Wielkie dzięki, to jest proste! – Apaachee

+0

@AntoineMathys: poprawne, dodałem notatkę na ten temat. – Joni

4

chciałbym dodać bardzo ważną komentarz (dla niewtajemniczonych lub dla tych, którzy zapomnieli o tym):

cosinus ma być obliczona na szerokości geograficznej w radianach, a nie w stopniach.

konwersji: radianów = PI/180 * stopni


(przepraszam za uczynienie sobie odpowiedź, ale z mojego obecnego reputacji 35 nie mogę skomentować)

Powiązane problemy