Nei nostri sondaggi sulla fauna selvatica aerea generiamo in genere dozzine di file GPX e di solito li convertiamo in file di forma per la visualizzazione in un'applicazione GIS. I file GPX sono un modo formidabile per conservare tutti (o quasi tutti) i tuoi dati GPS in un unico posto: sono file xml che memorizzano informazioni su tracklog, waypoint e rotte in un unico comodo formato. Memorizzano più tracce, anche vecchie tracce salvate da un Garmin.
Vorrei archiviare tutti questi dati di traccia in un database spazialite, parallelamente ad altre tabelle che contengono dati osservativi puntuali dello stesso sondaggio.
ogr2ogr mi permetterà di convertire la traccia in un database spazialite:
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'
Tuttavia, questo importa ogni traccia salvata come una linea - perdendo le informazioni sul tempo / posizione per ogni punto della traccia!
Qualcuno sa di eventuali modi intelligenti di creare un database tracklog che conserverà tali informazioni?
MODIFICA :
I tracklog non sono solo una linea: sono raccolte di punti sequenziali, ciascuno con un attributo di elevazione e tempo. Ogni punto appartiene a un segmento di traccia, che a sua volta appartiene a una determinata traccia, e i punti all'interno di ciascun segmento di traccia sono stati rilevati senza interruzione e si può presumere che siano collegati. Per esempio:
<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>
Pertanto, per salvare un tracklog è necessario salvare questa raccolta di punti con i relativi dati associati.
Una soluzione potrebbe essere quella di caricare queste tracce come punti, con colonne aggiuntive per nome, segmento, altezza e tempo della traccia; Tuttavia, non credo che ogr convertirà le tracce in punti.
Soluzione
Grazie a @scruss che ha sottolineato gpx2spatialite , con cui ho installato (OS X 10.9) sudo easy_install gpx2spatialite
. Questo set di strumenti è progettato per il progetto "drawinglife" (e quindi contiene alcune informazioni sulla "città" che probabilmente non sono necessarie per la maggior parte di noi); la pagina principale di gpx2spatialite non spiega molto, ma la wiki di drawinglife è migliore. Tuttavia, molte funzionalità non documentate, come la rimozione di duplicati!
Crea un database spazialite per i file GPX che conterrà segmenti di traccia, tracce, trackpoint e waypoint. Ha anche impostato "utenti" (che sembra strano, dal momento che sqlite non è un sistema di accesso per l'utente, ma era pensato per il disegno) progettato per etichettare le varie tracce:
gpx2spatialite create_db MyGPXArchive.db
Carica un'intera cartella di file GPX, comprese tutte le sottocartelle, controllando e rimuovendo i duplicati lungo il percorso:
gpx2spatialite -s -d MyGPXArchive.db -u SL25 Selous2013/
Opzioni:
-s
= non controllare se i trackpoint sono nel database della città (velocizza MOLTO)-d MyGPXArchive.db
= database da utilizzare;-u SL25
= aggiungi l'utente SL25 (solo un'etichetta che ho usato per il set di tracce raccolte);Selous2013
= la cartella (con le sottocartelle) che contiene le tracce che mi interessano.
bugs:
Se hai salvato tracce su un Garmin più vecchio che scarta le informazioni sul timestamp, si bloccherà l'importazione (rimuovi quelle tracce salvate utilizzando un'utilità come GPSU). Se hai gpsbabel , filtra prima il file con qualcosa del tipo:
gpsbabel -w -r -t -i gpx -f [INPUT.gpx] -x track, start = 20000101 -o gpx -F [OUTPUT.gpx]