Wie kann man GPX-Dateien als Massenimport in QGIS importieren und zu einem einzigen Shapefile zusammenführen?

11

Ich möchte meine eigene 'Heatmap' aller Radtouren erstellen, die ich mit der App Strava in QGIS aufgezeichnet habe.

Ich habe über 450 einzelne GPX-Dateien und möchte die Spurpunktebenen zu einem einzigen Shapefile zusammenführen, damit ich sie zu einer Polygonebene verbinden und durch join_count symbolisieren kann, wie in diesem Beispiel gezeigt:

Geben Sie hier die Bildbeschreibung ein

Einige meiner GPX-Dateien enthalten "Ride" im Dateinamen und andere "Run". Ich möchte die Dateien filtern und nur diejenigen mit "Ride" belassen.

Wie kann ich dies mit QGIS effizient erreichen?

MFBawls
quelle

Antworten:

13

Verwenden Sie das Befehlszeilentool ogr2ogr, das mit QGIS verteilt wird. Öffnen Sie unter Windows die OSGeo4W-Shell aus der QGIS-Programmgruppe und geben Sie ein

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

Der entsprechende Befehl in einer Unix-Bash-Shell wäre

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

Stellen Sie sicher, dass die Ausgabedatei (gpx.shp) vorher nicht vorhanden ist. Dann erstellt ogr2ogr ein einziges Shapefile aus allen GPX-Dateien mit "Ride". Unter http://www.gdal.org/drv_gpx.html finden Sie einige Hinweise zum ogr gpx-Treiber .

Redoute
quelle
3

Ich weiß, dass dies spät ist, aber es könnte eines Tages anderen helfen. Es gibt ein QGIS-Plugin namens Batch GPS Importer, das ich in dieser Antwort näher erläutert habe .

Die neueste Version kann Dateien mit Präfix- und Suffix-Text herausfiltern. Batch GPS Importer

Ich hoffe, es hilft.

wondim
quelle
2

Sie können mehrere GPX-Dateien gleichzeitig importieren, obwohl Sie jede einzelne Datei zur Eingabe der gewünschten Datenschicht aufgefordert werden. Mit über 400 Spuren wird das keinen Spaß machen.

Vielleicht möchten Sie sich ogr2ogr ansehen . Dies ist das Schweizer Taschenmesser für die Konvertierung von Geodateien. Es konvertiert fast jedes Geoformat in jedes andere kompatible (Vektor / Raster) Geoformat.

Ein ogr2ogr-Aufruf sieht ungefähr so ​​aus

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

Sie können es programmgesteuert aufrufen (z. B. aus einem Python-Skript, einer .bat-Datei oder einem Bash-Skript), um über jede Fahrt * .gpx zu iterieren und es beispielsweise in ein Shapefile zu konvertieren.

Allerdings konnte ich dies nicht für ein paar zufällige GPX-Traces verwenden, die ich von OpenStreetMap heruntergeladen hatte (ogrinfo mochte sie auch nicht, obwohl QGIS sie geladen hatte). Aber ich konnte GPX-Dateien von einer anderen Quelle öffnen.

Versuche zu rennen

ogrinfo example.gpx tracks

und sehen Sie, ob Sie eine nützliche Ausgabe erhalten. Wenn Sie eine Liste mit Treibern erhalten, ist diese fehlgeschlagen.

Ihr Kilometerstand kann variieren, es ist einen Versuch wert.

Beachten Sie, dass jedes Shapefile ein eigenes Verzeichnis hat. Wenn Sie also nicht mühsam Code schreiben möchten, können Sie stattdessen CSV ausprobieren. Siehe diesen Blog-Beitrag .

Um das Zusammenführen durchzuführen, können Sie (mithilfe von Code) alle Shapefiles in ein einziges Verzeichnis kopieren und dann die Tools Vektor> Datenverwaltung> Shapefiles in einem Verzeichnis zusammenführen

Wenn Sie den von Ihnen illustrierten Hexbin-Stil mögen, sollten Sie sich das MMQgis-Plugin ansehen . Auf diese Weise können hexagonale Gitter erstellt werden, mit denen Sie dann die Analyse "Punkte im Polygon" durchführen können.

Steven Kay
quelle
4
Unter Windows habe ich die OSGeo4W-Shell aus der QGIS-Programmgruppe geöffnet und versucht for %p in (C:\Data\*.gpx) do ogr2ogr gpx.shp -append %p track_points -fieldTypeToString DateTime. gpx.shp darf vorher nicht existieren, dann erzeugt ogr2ogr ein einzelnes Shapefile.
Redoute
1
Sie sollten dies als Antwort @Redoute aufschreiben!
Alex Leith
@ Redoute Ja bitte können Sie als vollständige Antwort schreiben? Vielen Dank
MFBawls
1
Übersetzung eines ausgezeichneten Vorschlags von @Redoute für Linux-Benutzer, es funktioniert wie ein Zauber ...#!/bin/bash for i in $( ls ./*.gpx ); do ogr2ogr gpx.shp -append $i track_points -fieldTypeToString DateTime done
Steven Kay