Mam chmurę punktów, której współrzędne odnoszą się do lokalnego układu współrzędnych. Mam także naziemne punkty kontrolne z wartościami GPS. Czy mogę przekonwertować te lokalne współrzędne na globalny układ współrzędnych za pomocą PROJ.4 lub innej biblioteki?
Każdy kod w Pythonie dla wyżej wymienionego problemu byłby bardzo pomocny.
python
coordinate-system
gps
proj
ground-control
użytkownik18953
źródło
źródło
Odpowiedzi:
Wygląda na to, że chcesz przeprowadzić afiniczną transformację między lokalnym układem współrzędnych a układem współrzędnych georeferencyjnych.
Afinit przekształca zasadniczo wszystkie układy współrzędnych i można je przedstawić za pomocą poniższego równania macierzowego.
Masz jednak problem dwuetapowy.
Proj.4 wyróżnia się na nr 2: przenoszenie między układami współrzędnych georeferencyjnych ze znanymi matrycami transformacji. Według mojej wiedzy nie można go użyć do znalezienia macierzy transformacji z danych punktowych. Możesz jednak z łatwością zrobić to wszystko, używając lekkiej algebry liniowej (odwrócenie macierzy najmniejszych kwadratów) w Numpy. Użyłem wersji tej klasy do zmniejszenia danych z kilku badań terenowych:
Może być używany jako taki:
projected_coordinates
jest teraz w WGS84, UTM lub dowolnym innym układzie współrzędnych zarejestrowanym przez GPS. Główną cechą tej metody jest to, że można jej używać z dowolną liczbą punktów wiążących (3 lub więcej) i zwiększa dokładność, im więcej punktów wiążących jest używanych. Zasadniczo znajdujesz najlepsze dopasowanie we wszystkich punktach remisowych.źródło
Funkcja transformacji trawy wykonuje dokładnie to, czego potrzebujesz, mimo że nie jest oparta na pythonie ani proj, zgodnie z żądaniem:
http://grass.osgeo.org/grass65/manuals/g.transform.html
źródło
Zawsze łatwiej jest zidentyfikować lokalny układ współrzędnych, tak jak tutaj:
Rzut stereograficzny elipsoidy WGS84 na płaszczyźnie [python]
GDAL może teraz przekształcać dane wektorowe przy użyciu punktów GCP.
źródło
Utknąłem w tym samym problemie kilka tygodni temu, wymyśliłem skrypt w języku Python, który może pomóc. Oryginalne rozwiązanie stąd
źródło