Mam ponad 50 plików GPX, które chciałbym „wsadowo załadować” do bazy danych PostGIS. Wszystkie dane track_points zostałyby załadowane do tabeli „track_points” (z typowymi polami GPS, takimi jak lat, long, elewacja, czas itp.), A dane tracków zostałyby załadowane do podobnej, odpowiednio zaprojektowanej tabeli geometrii linii „track”.
Wolę zautomatyzować ten proces, aby po otrzymaniu następnych 50+ nie musiałem ręcznie wprowadzać danych do bazy danych. Osobiście wolę używać Pythona do pisania skryptów tego rodzaju procesów, ale wszelkie sugestie są mile widziane.
Mój ogólny proces myślowy polega na:
- Uzyskaj listę plików GPX do przetworzenia (dość łatwe dzięki standardowym narzędziom Python)
- Pętlę przez każdy plik GPX i wyodrębnić / przekonwertować niezbędne dane do formatu PostGIS
- Wstaw dane GPS do PostGIS za pomocą biblioteki psycopg Python
Myślę, że mogę zarządzać krokami 1 i 3, ale zastanawiam się, czy istnieje względnie prosta metoda / biblioteka, która przekształciłaby dane (ścieżki i punkty_scieżki) w format PostGIS, czy po prostu tabelaryczny formularz, który mógłbym wstawić do już utworzonej tabeli .
Przeczytałem już „ Czy istnieje dobra biblioteka analizy śladów GPS? ”, „ Jak zbudować geograficzną bazę danych dzienników GPS? ” Oraz „ Jak wyodrębnić dane .gpx za pomocą pytona ” i zajrzałem do GDAL / OGR i wiązania FWTools w Pythonie, ale nie chcę wymyślać koła na nowo, jeśli ktoś ma już na to dobrą metodę.
CopyLayer
. Dodałem nazwę z pliku GPX jako prefiks, więc tabele powinny być tak unikalne, jak nazwy plików wejściowych. Opcja „append” z ogr2ogr jest trudna, ale nie jestem pewien, jak to zrobić w tej chwili.Po dodatkowych badaniach napisałem własny skrypt Pythona gpx2postgis.py, który automatyzuje proces dodawania funkcji GPX do istniejących tabel. Skrypt wykorzystuje części pracy dostarczone przez @Mike T powyżej i inne. Dodałem go do GitHub, jeśli chcesz pobrać lub wnieść wkład. Tworzy nowe schematy tabel (w razie potrzeby) w oparciu o wejściowe podwarstwy GPX i dołącza funkcje do tych tabel.
Nie będąc rozwiązaniem Pythona, natrafiłem na podobne pytanie na StackOverflow, które uświadomiło mi, że mogę po prostu zapętlić wszystkie moje pliki GPX i wywołać linię poleceń ogr2ogr, aby przetworzyć je przy użyciu typów funkcji GPX .
źródło