Bei unseren Luftaufnahmen von Wildtieren generieren wir in der Regel Dutzende von GPX-Dateien und wandeln die meisten davon in Shapefiles für die Anzeige in einer GIS-Anwendung um. GPX-Dateien sind eine hervorragende Möglichkeit, alle (oder fast alle) GPS-Daten an einem Ort zu speichern - es handelt sich um XML-Dateien, in denen Tracklog-, Wegpunkt- und Routeninformationen in einem praktischen Format gespeichert sind. Sie speichern mehrere Titel, sogar alte gespeicherte Titel von einem Garmin.
Ich möchte all diese Streckendaten in einer Spatialite-Datenbank zusammen mit anderen Tabellen speichern, die Punktbeobachtungsdaten aus derselben Erhebung enthalten.
Mit ogr2ogr kann ich den Track in eine Spatialite-Datenbank konvertieren:
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'
Dabei wird jedoch jede gespeicherte Spur als Linie importiert, wodurch die Zeit- / Ortsinformationen für jeden Spurpunkt verloren gehen!
Kennt jemand clevere Möglichkeiten zum Erstellen einer Tracklog-Datenbank, die diese Informationen speichert?
EDIT :
Tracklogs sind nicht nur eine Linie - sie sind Sammlungen von aufeinanderfolgenden Punkten, die jeweils ein Höhen- und ein Zeitattribut aufweisen. Jeder Punkt gehört zu einem Spursegment, das wiederum zu einer bestimmten Spur gehört, und Punkte innerhalb jedes Spursegments wurden ohne Unterbrechung aufgenommen und können als verknüpft angenommen werden. Beispielsweise:
<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>
Um ein Tracklog zu speichern, müssen Sie diese Punktesammlung mit den zugehörigen Daten speichern.
Eine Lösung könnte darin bestehen, diese Tracks als Punkte mit zusätzlichen Spalten für Trackname, Segment, Höhe und Zeit zu laden. Ich denke nicht, dass Ogr die Tracks als Punkte konvertieren wird.
Lösung
Dank @scruss der darauf hinwies, gpx2spatialite , die ich installiert (OS X 10.9) mit sudo easy_install gpx2spatialite
. Diese Tools sind für das Projekt 'drawinglife' konzipiert (und enthalten daher einige 'Stadt'-Informationen, die für die meisten von uns wahrscheinlich nicht erforderlich sind). Die Hauptseite von gpx2spatialite erklärt nicht viel, aber das Wiki von drawinglife ist besser. Trotzdem viele undokumentierte Funktionen - wie das Entfernen von Duplikaten!
Erstellen Sie eine Spatialite-Datenbank für GPX-Dateien, die Track-Segmente, Tracks, Trackpoints und Waypoints enthält. Es wurden auch "Benutzer" eingerichtet (was seltsam erscheint, da sqlite kein Benutzerzugriffssystem ist, sondern für das Zeichnen gedacht ist), um die verschiedenen Spuren zu kennzeichnen:
gpx2spatialite create_db MyGPXArchive.db
Laden Sie einen ganzen Ordner mit GPX-Dateien, einschließlich aller Unterordner, und überprüfen und entfernen Sie dabei doppelte Dateien:
gpx2spatialite -s -d MyGPXArchive.db -u SL25 Selous2013/
Optionen:
-s
= überprüfe nicht, ob die Trackpoints in der Stadtdatenbank sind (beschleunigt die Suche um ein Vielfaches)-d MyGPXArchive.db
= zu verwendende Datenbank;-u SL25
= füge den Benutzer SL25 hinzu (nur eine Bezeichnung, die ich für die gesammelten Titel verwendet habe);Selous2013
= der Ordner (mit Unterordnern), der die Tracks enthält, die mich interessieren.
Bugs:
Wenn Sie Tracks auf einem älteren Garmin gespeichert haben, der Zeitstempelinformationen verwirft, stürzt der Import ab (entfernen Sie diese gespeicherten Tracks mit einem Dienstprogramm wie GPSU). Wenn Sie gpsbabel haben , filtern Sie die Datei zuerst mit etwas wie:
gpsbabel -w -r -t -i gpx -f [INPUT.gpx] -x Spur, Start = 20000101 -o gpx -F [OUTPUT.gpx]