QGIS: Georeferenzierte Fotos auf einer Karte anzeigen

Hier wird ein Verfahren beschrieben, mit dem man unter Linux eine Sammlung georeferenzierter Fotos mit QGis auf einer Karte darstellen kann. Die Fotos können in beliebig geschachtelten Unterverzeichnissen liegen. Ausgewertet werden die EXIF-Tags GPSLongitude und GPSLatitude. In einem ersten Schritt werden die Fotos analysiert und eine SQLite/SpatiaLite-Datenbank erstellt. Im zweiten Schritt wird diese Datei in einen QGis-Layer geladen und der Layer so konfiguriert, dass beim Überfahren der Position eines Fotos mit der Maus das Foto angezeigt wird.

Die Anleitung wurde mit QGIS 3.4 unter Linux Debian getestet.

Schritt 1: Erstellen einer SpatiaLite-Datenbank

In diesem Schritt wird das integrierte Werkzeug zum Import geogetaggter Fotos verwendet:

  • QGIS ab Version 3.4
  • Plugin Processing muss installiert sein
  • Über den Menüpunkt Verarbeitung-Werkzeugkiste wird die Seitenleiste Verarbeitungswerkzeuge geöffnet.
  • Unter Vektorerzeugung wählt man das Werkzeug Geogetaggte Fotos Importieren aus
  • Im Dialog gibt man den Pfad an, in dem sich die Fotos befinden. Das Ergebnis speichert man in einer Spatialite-Datenbank.
Import der Foto-Daten

Import der Foto-Daten

Wurde in Schritt 1 die Option Öffne Ausgabedatei nach erfolgreicher Ausführung gewählt, werden die importierten Daten in einem neuen Layer angezeigt. Sinnvollerweise wird noch ein Kartenlayer angelegt. Im Beispiel wird dafür mit der Erweiterung QuickMapServices Rasterkarte von openstreetmap.org verwendet. Dabei ist darauf zu achten, dass die Projektion des Projekts auf EPSG:3857 gesetzt wird.

Schritt 2: Anzeigen der Fotos

Nach dem Import werden die Positionen der Fotos als Punkte auf der Karte angezeigt. Wird in der Werkzeugleiste das Sprechblasensymbol (Kartenhinweise) aktiv gesetzt und streicht man mit der Maus über einen dieser Punkte, wird die beim Import vergebene Id des Fotos angezeigt.

Layer nach dem Inport

Layer nach dem Inport

Der Layer wird jetzt so konfiguriert, dass beim Überstreichen mit der Maus nicht die Id sondern ein Popup mit dem verkleinerten Foto angezeigt wird. Hierzu öffnet man den Eigenschaftsdialog des Layers und geht in das Tab Anzeigen und trägt dort einen Ausdruck ein, der den HTML-Code für die Anzeige des Fotos erzeugt:
Konfiguration der Anzeige

Konfiguration der Anzeige

[% concat('<img src="file://',"photo", '" width=300>') %]
Anzeige des Fotos beim Überfahren mit der Maus

Anzeige des Fotos beim Überfahren mit der Maus

Öffnen des Fotos in einer Anwendung

Diese Funktion wird im Tab Aktionen des Eigenschaftendialog des Layers eingerichtet. Hierzu drückt man auf Voreingestellte Aktion hinzufügen, löscht alle Aktionen außer Datei öffnen und trägt dort als Aktion "[% “photo” %]" ein.

Layereigenschaften - Aktionen

Layereigenschaften - Aktionen

Damit die Aktion beim Klicken auf die Position eines Fotos ausgeführt wird, muss diese in der Werkzeugleiste aktiviert werden:

Aktion &quot;Datei öffnen&quot; aktivieren

Aktion "Datei öffnen" aktivieren

Ein Klick auf die Position eines Fotos ruft jetzt die Standardanwendung für JPG-Dateien aus.