QGis: Animation von GPX-Tracks mit Heatmap

Überblick

Mit QGis ist es recht einfach, Geodaten auf der Zeitachse zu animieren. Ich nutze das, um meine Radtouren dynamisch über die Zeit darzustellen. Die Animation zeigt die GPX-Tracks entsprechend ihrer Aufnahmetage an. Optional kann eine ebenfalls dynamische Heatmap erzeugt werden.

Tracks vorbereiten

Da ich in QGIS keine Möglichkeit gefunden habe, mehrere GPX-Dateien auf einfache Weise in einen Layer zu laden, erstelle ich zunächst mit den GDAL-Tools eine GPKG-Datei, welche die GPX-Tracks als Multilinestrings enthält. Für die Animation muss jeder Track mit dem Datum versehen werden, an dem er aufgezeichnet wurde. Das Datum in den Metadaten der GPX-Datei ist dafür nicht geeignet, da dieses u.U. verändert wird, wenn der Track nachbearbeit wurde. Ich hole mir das Datum daher aus den Trackpunkten:

   TIME=$(gdal vector info --features --format json <gpx-datei> -l track_points | jq -r '.layers[0].features[0].properties.time')
   ISODATE="${TIME:0:4}-${TIME:5:2}-${TIME:8:2}"

Dann wird der Track

  • in eine temporäre GPKG-Datei importiert,
  • um das Datum ergänzt und
  • an die GPKG-Datei aller Tracks angehängt.
   ogr2ogr trackTmp.gpkg <gpx-datei> tracks
   ogrinfo trackTmp.gpkg -dialect sqlite -sql "ALTER TABLE tracks ADD COLUMN date DATE"
   ogrinfo -dialect sqlite -sql "update tracks set date='$ISODATE'" trackTmp.gpkg
   ogr2ogr -append tracks.gpkg trackTmp.gpkg tracks

Animation mit QGis erzeugen

Tracks laden

Die im vorangehenden Schritt erzeugte GPKG-Datei wird als Layer in QGis geladen und bildet die gRundlage für die Animation.

Track animieren

  • In den Layer-Eigenschaften im Tab Zeitlich:
    • Dynamische Zeitsteuerung aktivieren
    • Konfiguration: Einzelfeld mit Datum/Zeit
    • Grenzen: Vorgabewert
    • Feld: date
    • Objekte über Zeit sammeln :aktiv

Danach muss man nur noch das Bedienfeld für die Steuerung der Animation aktivieren: Ansicht > Bedienfelder > Zeitsteuerung. Das Zeitintervall für die Animation kann mit dem Aktualisierungssymbol neben den enstprechenden Eingabefeldern auf das Datum des ersten bzw. letzten Tracks gesetzt werden. Als Schrittweite wählt man ein zu den geladenen Tracks passendes Intervall, z.B. 1 Monat. Dann kann die Animation abgespielt werden.

Video erzeugen

  • Auf Animierter Film klicken

  • Es werden Einzelbilder erzeugt, aus denen mit einem externen Tool ein Video erzeugt werden kann, z.B. mit ffmpeg:

    ffmpeg -r 25 -pattern_type glob -i 'frame*.png'\
           -c:v libx264 -preset fast -crf 20\
           -filter:v "setpts=1.0*PTS" animation.mp4
    

Animation mit Heatmap

  • Track-Layer wie zuvor beschrieben erstellen
  • Punkt-Layer aus Track erzeugen mit dem Werkzeug Stützpunkte extrahieren
  • Punkt-Layer als Heatmap darstellen
    • Farbverlauf durch Verschieben der Gradientenstopps niedrigschwellig konfigurieren, so dass auch geringe Punktdichte genügt, um “Hitze” anzuzeigen.
  • Dynamische Zeitsteuerung für Punkt-Layer aktivieren
  • Animation mit Track- und Punkt-Layer erstellen