¿Cómo importar a granel archivos gpx a QGIS y combinarlos en un solo archivo de forma?

11

Estoy buscando crear mi propio 'mapa de calor' de todos los paseos en bicicleta que he grabado usando la aplicación Strava en QGIS.

Tengo más de 450 archivos gpx individuales y me gustaría fusionar las capas de puntos de seguimiento en un solo archivo de forma para poder unirlas a una capa de polígono y simbolizar mediante join_count como se ve en este ejemplo:

ingrese la descripción de la imagen aquí

Algunos de mis archivos gpx contienen 'ride' en el nombre del archivo y otros 'run', me gustaría filtrar los archivos dejando solo aquellos con 'ride'.

¿Cómo puedo lograr esto de manera eficiente usando QGIS?

MFBawls
fuente

Respuestas:

13

Use la herramienta de línea de comandos ogr2ogr, que se distribuye con QGIS. En Windows, abra el Shell OSGeo4W del grupo de programas QGIS e ingrese

for %p in (path_to_gpx_files\*ride*.gpx) do ogr2ogr path_for_output\gpx.shp -append %p track_points -fieldTypeToString DateTime

El comando equivalente en un shell bash de Unix sería

for file in path_to_gpx_files/*ride*.gpx; do ogr2ogr path_for_output/gpx.shp -append "${file}" track_points -fieldTypeToString DateTime; done

Asegúrese de que el archivo de salida (gpx.shp) no exista antes, entonces ogr2ogr producirá un único archivo de forma de todos los archivos gpx con "paseo" en él. Hay algunas notas sobre el controlador ogr gpx en http://www.gdal.org/drv_gpx.html .

Redoute
fuente
3

Sé que esto es tarde, pero podría ayudar a otros algún día. Hay un complemento QGIS llamado Batch GPS Importer que expliqué más en esta respuesta .

La última versión puede filtrar archivos usando texto de prefijo y sufijo. Importador por lotes de GPS

Espero que ayude.

wondim
fuente
2

Puede importar varios archivos GPX a la vez, aunque se le pedirá a todos y cada uno de los archivos la capa de datos que desee. Con más de 400 trazas, eso no será divertido.

Es posible que desee mirar ogr2ogr . Esta es la navaja suiza de las conversiones de archivos geográficos, convertirá casi cualquier geoformato en cualquier otro geoformato compatible (vector / ráster).

una llamada ogr2ogr se parece a algo

ogr2ogr -f "ESRI Shapefile" example.shp example.gpx

Puede llamarlo mediante programación (p. Ej., Desde un script de Python, un archivo .bat o un script de bash) para iterar sobre cada recorrido * .gpx y convertirlo en un archivo de forma, por ejemplo.

Dicho esto, no pude hacer que esto funcionara en un par de trazos aleatorios de gpx que descargué de OpenStreetMap (a ogrinfo tampoco les gustaron, aunque QGIS los cargó). Pero pude abrir archivos GPX de otra fuente.

Intenta correr

ogrinfo example.gpx tracks

y vea si obtiene alguna salida útil. Si obtiene una lista de controladores, ha fallado.

Su millaje puede variar, vale la pena intentarlo.

Tenga en cuenta que cada archivo de forma terminará con su propio directorio, por lo que si no desea la molestia de escribir código, puede probar CSV en su lugar ... vea esta publicación de blog .

Para hacer la fusión, podría (usando código) copiar todos los archivos de forma en un solo directorio, luego usar Vector> Herramientas de administración de datos> Combinar archivos de forma en uno

Si eres aficionado al estilo hexbin que ilustraste, es posible que desees mirar el complemento MMQgis . Esto permite crear cuadrículas hexagonales, que luego puede usar para hacer el análisis de 'puntos en el polígono'.

Steven Kay
fuente
44
En Windows abrí el Shell OSGeo4W del Grupo de Programas QGIS y probé for %p in (C:\Data\*.gpx) do ogr2ogr gpx.shp -append %p track_points -fieldTypeToString DateTime. gpx.shp no debe existir antes, entonces ogr2ogr produce un solo archivo de forma.
Redoute
1
¡Deberías escribir esto como respuesta @Redoute!
Alex Leith
@Redoute Sí, ¿puedes escribir como respuesta completa? Gracias
MFBawls
1
Traducción de excelente sugerencia de @Redoute para usuarios de Linux, funciona de maravilla ...#!/bin/bash for i in $( ls ./*.gpx ); do ogr2ogr gpx.shp -append $i track_points -fieldTypeToString DateTime done
Steven Kay