W naszych lotniczych badaniach dzikiej przyrody zwykle generujemy dziesiątki plików GPX i zwykle konwertujemy większość z nich na pliki kształtów do wyświetlania w aplikacji GIS. Pliki GPX to świetny sposób na przechowywanie wszystkich (lub prawie wszystkich) danych GPS w jednym miejscu - są to pliki xml, które przechowują informacje o śladzie, punkcie i trasie w jednym wygodnym formacie. Przechowują wiele śladów, nawet stare zapisane ślady z Garmin.
Chciałbym przechowywać wszystkie te dane śledzenia w przestrzennej bazie danych, równolegle z innymi tabelami, które zawierają dane obserwacyjne z tej samej ankiety.
ogr2ogr pozwoli mi przekonwertować ścieżkę na przestrzenną bazę danych:
ogr2ogr -append -f "SQLite" -dsco SPATIALITE=yes # add to table with Spatialite filetype
-dsco INIT_WITH_EPSG=yes -t_srs epsg:4326 # using WGS84
SURVEYDATA.sqlite GPXFILE.gpx tracks -nln tracktable; # adding tracks to 'tracktable'
Jednak to importuje każdy zapisany ślad jako linię - tracąc informacje o czasie / lokalizacji dla każdego punktu śladu!
Czy ktoś zna jakieś sprytne sposoby budowy bazy danych rejestrów śledzenia, która zachowa te informacje?
EDYCJA :
Śledzenia nie są tylko linią - są kolekcjami kolejnych punktów, każdy z atrybutem wysokości i czasu. Każdy punkt należy do odcinka toru, który z kolei należy do danego toru, a punkty w każdym segmencie toru zostały zebrane bez przerwy i można założyć, że są połączone. Na przykład:
<trk><name>ACTIVE LOG</name>
<trkseg>
<trkpt lat="-13.471403" lon="31.382982"><ele>467.818725585938</ele><time>2009-09-09T03:53:38Z</time></trkpt>
<trkpt lat="-13.471403" lon="31.382982"><ele>468.780029296875</ele><time>2009-09-09T03:53:50Z</time></trkpt>
<trkpt lat="-13.471403" lon="31.382982"><ele>465.896118164063</ele><time>2009-09-09T03:54:43Z</time></trkpt>
</trkseg>
Dlatego, aby zapisać dziennik śledzenia, musisz zapisać ten zbiór punktów wraz z powiązanymi z nimi danymi.
Jednym z rozwiązań może być załadowanie tych ścieżek jako punktów, z dodatkowymi kolumnami dla nazwy ścieżki, odcinka, wysokości i czasu; Nie sądzę jednak, by ogr przekształcił ścieżki w punkty.
Rozwiązanie
Dzięki @scruss, który wskazał gpx2spatialite , z którym zainstalowałem (OS X 10.9) sudo easy_install gpx2spatialite
. Ten zestaw narzędzi jest przeznaczony do projektu „rysunek życia” (a zatem zawiera pewne informacje „miasta”, które prawdopodobnie nie są potrzebne dla większości z nas); główna strona gpx2spatialite nie wyjaśnia zbyt wiele, ale wiki drawinglife jest lepsza. Mimo to wiele nieudokumentowanych funkcji - takich jak usuwanie duplikatów!
Utwórz przestrzenną bazę danych dla plików GPX, która będzie zawierać segmenty ścieżek, ślady, punkty i punkty trasy. Ma również skonfigurowanych „użytkowników” (co wydaje się dziwne, ponieważ sqlite nie jest systemem dostępu użytkownika, ale był przeznaczony do rysowania życia) zaprojektowanych do oznaczania różnych ścieżek:
gpx2spatialite create_db MyGPXArchive.db
Załaduj cały folder plików GPX, w tym wszystkie podfoldery, sprawdzając i usuwając duplikaty po drodze:
gpx2spatialite -s -d MyGPXArchive.db -u SL25 Selous2013/
Opcje:
-s
= nie sprawdzaj, czy punkty trasy znajdują się w bazie danych miasta (znacznie przyspiesza)-d MyGPXArchive.db
= baza danych do użycia;-u SL25
= dodaj użytkownika SL25 (tylko etykietę, której użyłem dla zbioru zebranych ścieżek);Selous2013
= folder (z podfolderami) zawierający ścieżki, którymi jestem zainteresowany.
Błędy:
Jeśli zapisałeś ślady na starszym Garminie, który odrzuca informacje o znaczniku czasu, spowoduje to zawieszenie importu (usuń zapisane ślady za pomocą narzędzia takiego jak GPSU). Jeśli masz gpsbabel , najpierw przefiltruj plik za pomocą czegoś takiego:
gpsbabel -w -r -t -i gpx -f [INPUT.gpx] -x ścieżka, start = 20000101 -o gpx -F [OUTPUT.gpx]
Odpowiedzi:
ptrv / gpx2spatialite robi to wyjątkowo dobrze, oszczędzając znaczniki czasu dla wszystkich punktów i uzyskując dane dotyczące prędkości i długości ścieżek. Nie zaimportuje również zduplikowanych ścieżek, więc możesz nakarmić go ogromnym stosem plików GPX i odpowiednio je zamrozić.
Aktualizacja : przykłady użycia, zgodnie z żądaniem:
Zainicjuj nową bazę danych:
Dodaj pojedynczy plik GPX:
(Jeśli nazwa użytkownika użytkownik nie istnieje w bazie danych, zapyta, czy chcesz ją utworzyć. Baza danych jest zbudowana z tras / punktów / tras przypisanych do jednego lub większej liczby użytkowników.)
Dodaj wszystkie pliki GPX do folderu / :
Zastosowanie: jest to przestrzenna baza danych, w której linie ścieżek tabeli zawierają ścieżki jako polilinie, punkty ścieżki zawierające poszczególne punkty (wraz z czasem, wysokością itp.) Oraz punkty trasy dla dowolnych zdefiniowanych punktów trasy. Istnieje również wiele wskaźników, niektóre definicje miast świata i być może także osadzone informacje o stylizacji SLD, których jeszcze nie zbadałem. Jako trywialny przykład, oto mapa tego, jak moje miasto rodzinne (Toronto) jest zdefiniowane przez ~ 7 lat dzienników śladów:
Dzięki zastosowaniu linii o przezroczystości 75%, najczęściej podróżowane trasy stają się ciemniejsze.
źródło
easy_install gpx2spatialite
że faktycznie zainstalowałby go jako skrypt dostępny z wiersza poleceń!user
Opcja została również mylące, nie tłumaczyć go na stronie głównej, a spatialite to system non-access-ograniczone.user
Opcja ma sens dla projektu Drawinglife, gdyż pozwala wielu uczestników, aby dodać swoje utwory do tej samej bazy danych. Dziękujemy za podpowiedzi na temat wykluczania oznaczania miasta i znalezienia przyczyn awarii. Jeśli masz pliki GPX bez znaczników czasu, możesz zsyntetyzować dane czasu za pomocą opcji faketime GPSBabel .gpx2spatialite import -u user -s -d db.spatialite file1.gpx …
W dalszej części komentarza - „czy FME ma określoną metodę zapisywania plików GPX?”
Tak, masz pełną kontrolę nad trasami, punktami, śladami i metadanymi
FME jest bardzo godnym i potężnym narzędziem do wspólnego przetwarzania danych GIS i danych nieprzestrzennych.
zobacz więcej szczegółów http://evangelism.safe.com/fmeevangelist26/
źródło
Istnieje kilka pomysłów tutaj do tworzenia własnego programu do danych gpx ekstrakt w python lub Perl. Odtąd umieszczanie danych w przestrzennej bazie danych nie jest zbyt dużym wysiłkiem. Musisz pomyśleć o odpowiednim schemacie do przechowywania w przestrzeni - jakie atrybuty chcesz zachować?).
źródło
Jeśli chcesz wybrać trasę OGR, najlepszym rozwiązaniem jest najpierw eksport do Shapefile, który wyeksportuje wiele plików shapefile reprezentujących rozróżnienie waypoint / trackpoint / way / track i powiązane metadane, a następnie scali każdy zestaw plików do głównego SQLite Baza danych.
źródło
Spróbuj dodać
do komendy ogr2ogr
źródło