Comment importer en vrac des fichiers gpx dans QGIS et les fusionner en un seul fichier de formes?

11

Je cherche à créer ma propre «heatmap» de toutes les balades à vélo que j'ai enregistrées en utilisant l'application Strava dans QGIS.

J'ai plus de 450 fichiers gpx individuels et je voudrais fusionner les couches de points de suivi en un seul fichier de formes afin que je puisse les joindre à une couche polygonale et symboliser par join_count comme indiqué dans cet exemple:

entrez la description de l'image ici

Certains de mes fichiers gpx contiennent «ride» dans le nom de fichier et d'autres «run», je voudrais filtrer les fichiers en ne laissant que ceux avec «ride».

Comment puis-je y parvenir efficacement en utilisant QGIS?

MFBawls
la source

Réponses:

13

Utilisez l'outil de ligne de commande ogr2ogr, qui est distribué avec QGIS. Sous Windows, ouvrez le shell OSGeo4W à partir du groupe de programmes QGIS et entrez

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

La commande équivalente dans un shell bash Unix serait

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

Assurez-vous que le fichier de sortie (gpx.shp) n'existe pas auparavant, alors ogr2ogr produira un seul fichier de formes à partir de tous les fichiers gpx contenant "ride". Il y a quelques notes sur le pilote ogr gpx sur http://www.gdal.org/drv_gpx.html .

Redoute
la source
3

Je sais que c'est tard mais ça pourrait aider les autres un jour. Il existe un plugin QGIS appelé Batch GPS Importer que j'ai expliqué plus dans cette réponse .

La dernière version peut filtrer les fichiers en utilisant le préfixe et le suffixe. Importateur GPS par lots

J'espère que ça aide.

Wondim
la source
2

Vous pouvez importer plusieurs fichiers GPX à la fois, mais vous serez invité à chaque fichier pour la couche de données que vous souhaitez. Avec plus de 400 traces, ça ne va pas être amusant.

Vous voudrez peut-être regarder ogr2ogr . Ceci est le couteau suisse des conversions de fichiers géographiques, il convertira presque tous les géoformats en tout autre géoformat compatible (vecteur / raster).

un appel ogr2ogr ressemble à quelque chose

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

Vous pouvez l'appeler par programme (par exemple à partir d'un script python, d'un fichier .bat ou d'un script bash) pour itérer sur chaque trajet * .gpx et le convertir en un fichier de formes, par exemple.

Cela dit, je n'ai pas pu faire fonctionner cela sur quelques traces gpx aléatoires que j'ai téléchargées depuis OpenStreetMap (ogrinfo ne les aimait pas non plus, bien que QGIS les ait chargées). Mais j'ai pu ouvrir des fichiers GPX à partir d'une autre source.

Essayez de courir

ogrinfo example.gpx tracks

et voyez si vous obtenez une sortie utile. Si vous obtenez une liste de pilotes, elle a échoué.

Votre kilométrage peut varier, ça vaut le coup.

Notez que chaque fichier de formes se terminera avec son propre répertoire, donc si vous ne voulez pas les tracas de l'écriture de code, vous pouvez essayer CSV à la place .. voir cet article de blog .

Pour effectuer la fusion, vous pouvez (en utilisant du code) copier tous les fichiers de formes dans un seul répertoire, puis utiliser le vecteur> Outils de gestion des données> Fusionner les fichiers de formes en un seul

Si vous aimez le style hexbin que vous avez illustré, vous voudrez peut-être regarder le plugin MMQgis . Cela permet de créer des grilles hexagonales, que vous pouvez ensuite utiliser pour effectuer l'analyse des «points dans le polygone».

Steven Kay
la source
4
Sous Windows, j'ai ouvert le shell OSGeo4W du groupe de programmes QGIS et j'ai essayé for %p in (C:\Data\*.gpx) do ogr2ogr gpx.shp -append %p track_points -fieldTypeToString DateTime. gpx.shp ne doit pas exister auparavant, alors ogr2ogr produit un seul fichier de formes.
Redoute
1
Vous devriez écrire ceci comme une réponse @Redoute!
Alex Leith
@Redoute Oui, pouvez-vous écrire comme réponse complète? Merci
MFBawls
1
traduction d'une excellente suggestion de @Redoute pour les utilisateurs de Linux, cela fonctionne comme un charme ...#!/bin/bash for i in $( ls ./*.gpx ); do ogr2ogr gpx.shp -append $i track_points -fieldTypeToString DateTime done
Steven Kay