Szukam algorytmu, który po podaniu pary szerokości i długości geograficznej oraz translacji wektora w metrach we współrzędnych kartezjańskich (x, y) dałby mi nową współrzędną. Coś jak odwrotna Haversine. Mógłbym również pracować z transformacją odległości i kursu, ale prawdopodobnie byłoby to wolniejsze i nie tak dokładne. Idealnie, algorytm powinien być szybki, ponieważ pracuję na systemie wbudowanym. Dokładność nie jest krytyczna, w odległości 10 metrów byłoby dobrze.
108
Odpowiedzi:
Jeśli twoje przemieszczenia nie są zbyt duże (mniej niż kilka kilometrów) i nie masz racji na biegunach, skorzystaj z szybkiej i brudnej prognozy, że 111 111 metrów (111,111 km) w kierunku y wynosi 1 stopień (szerokości geograficznej) i 111.111 * cos (szerokość geograficzna) metrów w kierunku x wynosi 1 stopień (długości geograficznej).
źródło
Jak mówi Liedman w swojej odpowiedzi, formuły lotnicze Williamsa są nieocenionym źródłem, a aby zachować dokładność do 10 metrów w przypadku przemieszczeń do 1 km, prawdopodobnie będziesz musiał użyć bardziej złożonego z nich.
Ale jeśli chcesz zaakceptować błędy powyżej 10 m dla punktów przesuniętych o więcej niż około 200 m, możesz użyć uproszczonego obliczenia płaskiej ziemi. Myślę, że błędy nadal będą mniejsze niż 50 m dla przesunięć do 1 km.
To powinno zwrócić:
źródło
Uważam, że Aviation Formulary, tutaj jest świetny dla tego rodzaju formuł i algorytmów. W przypadku swojego problemu sprawdź „podaną długość / długość promieniową i odległość”: tutaj
Należy pamiętać, że ten algorytm może być zbyt skomplikowany, aby można było z niego korzystać, jeśli chcesz utrzymać niski poziom funkcji trygonometrii itp.
źródło
Pierwszym punktem może być rzutowanie na punkt. Możesz zrobić coś takiego jak ten pseudo-kod:
gdzie (x, y) jest pożądanym przesunięciem.
Nie musisz używać utm, dowolnego płaskiego układu współrzędnych, który ma sens w twojej okolicy.
Z jakim oprogramowaniem pracujesz?
źródło
Stworzyłem prostą niestandardową mapę w Google Maps, która ilustruje algorytm szacowania wymieniony w zaakceptowanej odpowiedzi (1/111111 == jeden metr). Zapraszam do obejrzenia i zabawy tutaj:
https://drive.google.com/open?id=1XWlZ8BM00PIZ4qk43DieoJjcXjK4z7xe&usp=sharing
źródło