Tengo más de 50 archivos GPX que me gustaría "cargar por lotes" en una base de datos PostGIS. Todos los datos de track_points se cargarían en una tabla de "track_points" (con campos típicos de GPS como lat, long, elevación, tiempo, etc.) y los datos de tracks se cargarían en una tabla de geometría de línea de "tracks" similar y diseñada adecuadamente.
Prefiero automatizar este proceso para que cuando obtenga mis próximos 50+, no tenga que ingresar manualmente los datos en la base de datos. Personalmente prefiero usar Python para ejecutar este tipo de procesos, pero cualquier sugerencia es bienvenida.
Mi proceso de pensamiento general es:
- Obtenga una lista de archivos GPX para procesar (lo suficientemente fácil a través de las herramientas estándar de Python)
- Recorra cada archivo GPX y extraiga / convierta los datos necesarios al formato PostGIS
- Inserte los datos del GPS en PostGIS utilizando la biblioteca de Python psycopg
Creo que puedo administrar los pasos 1 y 3, pero me pregunto si existe un método / biblioteca relativamente simple que convierta los datos (tracks y track_points) en formato PostGIS, o simplemente el formulario tabular que podría insertar en la tabla ya creada .
Ya leí " ¿Hay una buena biblioteca de análisis de rastreo GPS? ", " ¿Cómo construir una base de datos geográfica de registros GPS? " Y " Cómo extraer datos .gpx con python ", y he examinado el GDAL / OGR y enlaces de Python de FWTools, pero no quiero reinventar la rueda si alguien ya tiene un buen método para esto.
CopyLayer
. He agregado el nombre del archivo GPX como prefijo, por lo que las tablas deben ser tan únicas como los nombres de los archivos de entrada. La opción "agregar" de ogr2ogr es complicada y no estoy seguro de cómo hacerlo en este momento.Después de una investigación adicional, escribí mi propio script Python gpx2postgis.py que automatiza el proceso de agregar funciones GPX a las tablas existentes. El script usa partes del trabajo proporcionado por @Mike T arriba y otros. Lo he agregado a GitHub si desea descargar o hacer contribuciones. Crea nuevos esquemas de tabla (según sea necesario) basados en las subcapas GPX de entrada, y agrega características a esas tablas.
Si bien no es una solución de Python, me encontré con una pregunta similar en StackOverflow que me hizo darme cuenta de que podía recorrer todos mis archivos GPX y llamar a la línea de comando ogr2ogr para procesarlos usando los tipos de funciones GPX .
fuente