En nuestras encuestas aéreas de vida silvestre, generalmente generamos docenas de archivos GPX, y generalmente convertimos la mayoría de ellos en archivos shape para mostrar en una aplicación SIG. Los archivos GPX son una excelente manera de mantener todos (o casi todos) sus datos GPS en un solo lugar: son archivos xml que almacenan información de registros de ruta, puntos de referencia y rutas en un formato conveniente. Almacenan múltiples pistas, incluso viejas pistas guardadas de un Garmin.
Me gustaría almacenar todos estos datos de seguimiento en una base de datos espacial, en paralelo con otras tablas que tienen datos de observación puntual de la misma encuesta.
ogr2ogr me permitirá convertir la pista en una base de datos espacial:
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'
Sin embargo, esto importa cada pista guardada como una línea, ¡perdiendo la información de tiempo / ubicación para cada punto de pista!
¿Alguien sabe de alguna manera inteligente de construir una base de datos de tracklog que conserve esa información?
EDITAR :
Los tracklogs no son solo una línea, son colecciones de puntos secuenciales, cada uno con un atributo de elevación y tiempo. Cada punto pertenece a un segmento de pista, que a su vez pertenece a una pista dada, y los puntos dentro de cada segmento de pista se tomaron sin interrupción y se puede suponer que están vinculados. Por ejemplo:
<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>
Por lo tanto, para guardar un tracklog, debe guardar esta colección de puntos con sus datos asociados.
Una solución podría ser cargar estas pistas como puntos, con columnas adicionales para el nombre de la pista, segmento, elevación y tiempo; Sin embargo, no creo que ogr convierta las pistas como puntos.
Solución
Gracias a @scruss que señaló gpx2spatialite , que instalé (OS X 10.9) con sudo easy_install gpx2spatialite
. Este conjunto de herramientas está diseñado para el proyecto 'drawinglife' (y por lo tanto tiene información de 'ciudad' que probablemente sea innecesaria para la mayoría de nosotros); la página principal gpx2spatialite no explica mucho, pero el wiki de drawinglife es mejor. Aún así, muchas características no documentadas, como eliminar duplicados.
Cree una base de datos espacial para archivos GPX que contendrá segmentos de pista, pistas, puntos de ruta y puntos de referencia. También tiene una configuración de 'usuarios' (lo cual parece extraño, ya que sqlite no es un sistema de acceso de usuarios, sino que estaba destinado a dibujar life) diseñado para etiquetar las diferentes pistas:
gpx2spatialite create_db MyGPXArchive.db
Cargue una carpeta completa de archivos GPX, incluidas todas las subcarpetas, verificando y eliminando duplicados en el camino:
gpx2spatialite -s -d MyGPXArchive.db -u SL25 Selous2013/
Opciones:
-s
= no verifique si los puntos de seguimiento están en la base de datos de la ciudad (lo acelera MUCHO)-d MyGPXArchive.db
= base de datos a utilizar;-u SL25
= agregar el usuario SL25 (solo una etiqueta que usé para el conjunto de pistas recopiladas);Selous2013
= la carpeta (con subcarpetas) que tiene las pistas que me interesan.
Loco:
Si ha guardado pistas en un Garmin anterior que descarta la información de la marca de tiempo, bloqueará la importación (elimine esas pistas guardadas utilizando una utilidad como GPSU). Si tiene gpsbabel , primero filtre el archivo con algo como:
gpsbabel -w -r -t -i gpx -f [INPUT.gpx] -x track, start = 20000101 -o gpx -F [OUTPUT.gpx]