Software-Tipps

Q(GIS)&A - Wie kann man (mehrere) Fotos in Attributformularen anhängen?

Natürlich ist QGIS in vielerlei Hinsicht großartig. Doch wenn man mich auffordert, meine Lieblings-Funktion zu nennen, muss ich nicht lange überlegen: Die umfangreichen Konfigurationsmöglichkeiten rund um Attributformulare. Denn neben dem Digitalisieren der Geometrien ist das Eintragen der dazugehörigen Sachdaten ein ebenso wichtiger Punkt für eine funktionierende Datenhaltung. QGIS stellt dabei schon ohne Python-Programmierung viele Hilfsmittel zur Verfügung - Vorgabewerte, Restriktionen und Auswahllisten, um nur ein paar Schlagwörter zu nennen.

Auch in unseren Projekten sowie bei den Teilnehmenden der Schulungen unserer FOSS Academy ist die Datenerfassung oft ein wichtiges Thema und das Interesse an Attributformularen entsprechend groß. Deshalb wollen wir auch in unserer Q(GIS)&A-Reihe immer wieder Beiträge rund um diese Funktion einstreuen. Meine Kollegin Elisa hat vor kurzem den Anfang gemacht und hat in einem Blogartikel einige Möglichkeiten für die Verwendung dynamischer Attribute und Vorgabewerte vorgestellt.

In diesem Text geht es speziell um die Frage, wie man Anhänge (z.B. Fotos) in einem Attributformular darstellen kann, wo die entsprechenden Dateien am Besten gespeichert werden und was zusätzlich notwendig ist, um auch mehrere Anhänge zu einem Objekt anlegen zu können. Da das Einfügen von Fotos insbesondere bei der mobilen Arbeit zum Einsatz kommt, gibt es am Ende auch einen kurzen Verweis auf QField.

Für diesen Beitrag stelle ich keine Beispieldaten zur Verfügung, sondern erstelle einen neuen Datensatz. Testet die vorgestellten Funktionen gerne, indem ihr ebenfalls einen neuen Datensatz erstellt (ich empfehle ein Datenbank-Format wie GeoPackage oder PostgreSQL) und in diesem Objekte an beliebigen Stellen digitalisiert sowie beliebige Anhänge von eurem Rechner verwendet. Wichtig ist, dass der Datensatz ein Text-Attribut erhält, in welchem die Pfade zu den Anhängen gespeichert werden.

Abbildung 1: Erstellung eines minimalistischen (GeoPackage-)Datensatzes zum Abspeichern von (Punkt-)Objekten mit Anhängen.

Attributformulare mit Anhängen lebendiger gestalten

Vor der Digitalisierung von Objekten muss das Attributformular vorbereitet werden. Dies geschieht in den Layereigenschaften > Attributformular. Im Foto-Attribut muss der Bedienelementtyp geändert werden. Dieser gibt an, wie der Wert in einem Attribut angegeben wird (z.B. Kontrollkästchen oder Auswahlliste) - wir benötigen Anhang.

Ich belasse die Einstellungen zunächst zum großen Teil wie angegeben (einige Erläuterungen dazu erfolgen später). Einzig bei der integrierten Dokumentenanzeige stelle ich den Typ auf Bild um (ihr könnt natürlich auch Video oder Audio verwenden), damit mir die Anhänge direkt im Formular angezeigt werden können.

Ist das bestätigt, könnt ihr den Layer in den Bearbeitungsmodus setzen und ein Objekt hinzufügen. Im Formular findet ihr beim Attribut nun die typische “Datei öffnen” - Schaltfläche. Klickt ihr auf diese, könnt ihr die gewünschte Datei heraussuchen und auswählen. Schon erscheint das Bild im Formular! Video- und Audio-Dateien können hier auch abgespielt werden.

Abbildung 2: Der Inhalt der ausgewählten Datei wird im Attributformular angezeigt.

Wie werden Pfade und Dateien gespeichert?

Mit der aktuellen Konfiguration erhalten wir folgendes Ergebnis: Der absolute Pfad der ausgewählten Datei wird als Wert im Attribut eingetragen und das dazugehörige Foto als Vorschau im Formular angezeigt. Doch es gibt auch verschiedene Möglichkeiten, die ausgewählten Dateien neu abzuspeichern (Option "Speichertyp"). Je nachdem, wie das QGIS-Projekt bzw. die Daten geteilt oder veröffentlicht werden sollen, sind unterschiedliche Konfigurationsmöglichkeiten sinnvoll. Ich stelle euch im Folgenden die Einstellungen kurz vor:

Möglichkeit 1: Vorhandene Datei wählen

Die bereits verwendete Standardeinstellung. Man wählt eine Datei aus und der Pfad zu dieser Datei wird in das Attribut eingetragen. Hierbei kann gewählt werden, ob der Pfad absolut, relativ zum Projektpfad oder relativ zu einem selbst gewählten Vorgabepfad eingetragen werden soll (Option "Pfad speichern als"). Der Vorgabepfad (sofern eingetragen) ist auch derjenige, welcher beim "Datei öffnen" stets zuerst angezeigt wird.

Diese Option ist für private Projekte geeignet oder wenn die angehängten Dateien schon alle sinnvoll in einer Projektstruktur liegen (z.B. in einem entsprechenden Unterordner beim QGIS-Projekt) - dann kann bei Verwendung von relativen Pfaden das Projekt inklusive Anhänge auch problemlos weitergegeben werden.

Theoretisch können auch Verzeichnispfade anstelle von Dateipfaden abgespeichert werden (Option "Speichermodus"). Dabei werden aber keine Anhänge dargestellt.

Abbildung 3: Die Option "Vorhandene Datei wählen" mit der Wahl, die Pfade zu den Dateien relativ oder absolut abzuspeichern.

Möglichkeit 2: Einfache Kopie

Mit dieser Option wird nach Auswahl einer Datei eine Kopie dieser mit identischem Namen in den eingestellten Ordner abgespeichert und der Pfad zur Kopie absolut gespeichert. Hierbei nicht verwirren lassen - in den Einstellungen steht "Externer Speicher", jedoch kann hier auch der Verzeichnispfad zu einem lokalen Ordner bzw. zu einem Ordner auf einem Netzlaufwerk eingetragen werden.

Diese Option ist z.B. geeignet, wenn die anzuhängenden Dateien an unterschiedlichen Orten gespeichert sind und erst damit in einen gemeinsamen Ordner "gesammelt" werden sollen oder wenn die Anhänge in einem Ordner auf einem zentralen Server innerhalb eines Netzwerkes abgespeichert werden sollen.

Der gewünschte Pfad wird unter "Speicher-URL" eingetragen (Bei dieser fehlt leider eine "Datei öffnen"-Schaltfläche). Falls eine Authentifizierung notwendig sein sollte, kann diese angegeben werden - Informationen dazu in der QGIS Dokumentation.

Wichtige Hinweise:

  • Die Speicherung relativer Pfade ist bei dieser Option nicht möglich.
  • Bereits vorhandene Dateien im Zielordner werden ohne Nachfrage überschrieben, falls eine Datei mit identischem Namen ausgewählt wird
Abbildung 4: Die Option "Einfach[e] Kopie" ermöglicht die Angabe eines Ziel-Ordners, in welchen die ausgewählten Anhänge kopiert werden

Möglichkeit 3: WebDAV-Speicher & AWS S3

Mit diesen Optionen können Kopien der ausgewählten Anhänge auf HTTP-Server übertragen werden, welche das Protokoll WebDAV (z.B. NextCloud) bzw. AWS Simple Storage Service (z.B. Amazon Web Service) unterstützen. Im Attribut wird die URL der Datei auf dem Server eingetragen. Für mehr Informationen zu diesen Möglichkeiten verweise ich auf die Ankündigungen dieser Funktionen von Oslandia hier und hier.

Weitere Optionen:

Unabhängig von den oben vorgestellten Optionen beim "Speichertyp" können folgende Einstellungen vorgenommen werden:

  • Filter der auswählbaren Dateitypen
  • Zusätzliches Anzeigen eines Hyperlinks (zum Öffnen der Datei mit dem passenden Vorgabeprogramm)
  • die Größe der im Attributformular angezeigten Vorschau auf die Datei kann angepasst werden

Mehrere Anhänge pro Objekt abspeichern

Wenn ich den Bedienelementtyp Anhang in einer Schulung vorstelle, kommt eine Frage sehr häufig: Ist es auch möglich, mehrere Fotos pro Objekt abzuspeichern? Die Antwort: Ja, aber... Denn dafür ist es notwendig, die Anhänge in einer eigenen Tabelle abzuspeichern und eine Beziehung zwischen dem geometrischen Datensatz und der Anhang-Tabelle anzulegen. Im Folgenden erkläre ich die notwendigen Schritte.

1.) Eine eigene Tabelle für die Anhänge erstellen
Idealerweise erstellt man die Tabelle für die Anhänge in der gleichen Datenbank. Es kann eine geometrielose Tabelle verwendet werden. Wichtig sind folgende Attribute:

  • ein Fremdschlüssel, welcher eindeutig auf den geometrischen Datensatz verweist
  • ein Attribut, in welcher wie bislang auch der Pfad des Anhangs eingetragen wird
  • optional Attribute für Name, Beschreibung o.Ä. des Anhangs

Achtung: Nutzt als Fremdschlüssel nicht die automatisch generierte "fid" bei einem GeoPackage-Datensatz, diese funktioniert nicht als Schlüsselattribut für eine Beziehung. Es muss ein eindeutiges Attribut des geometrischen Datensatzes sein. Ich verwende in diesem einfachen Beispiel den Namen des Objektes. Tipp: Verseht das Attribut im geometrischen Datensatz mit einer Eindeutig-Restriktion, diese Einstellung findet ihr ebenfalls im Attributformular.

Abbildung 5: Erstellung eines geometrielosen Datensatzes für die Anhänge, das Attribut "name_objekt" wird als Fremdschlüssel verwendet.

2.) Anlegen der Beziehung

Zwischen dem zuvor erstellten geometrischen Datensatz (in welchem das Attribut mit den Anhängen nun nicht mehr benötigt wird) und der neuen geometrielosen Tabelle muss eine Beziehung angelegt werden. Das erfolgt in den Projekteigenschaften > Beziehungen.

Wichtig ist, den geometrischen Datensatz als Eltern-Tabelle und die geometrielose Tabelle als Kind-Tabelle auszuwählen sowie die Schlüsselattribute korrekt anzugeben.

Abbildung 6: Anlegen der Beziehung zwischen Objekte und Anhänge in den Projekteigenschaften.

3.) Attributformular-Einstellungen der Anhang-Tabelle

In der geometrielosen Tabelle der Anhänge wird nun das Attributformular so eingestellt, wie wir es bereits zuvor gemacht haben: Für das Foto-Attribut den Bedienelementtyp Anhang heraussuchen und wie gewünscht konfigurieren. Zusätzlich können die Schlüsselattribute (in meinem Fall fid und name_objekt) auf den Bedienelementtyp "Versteckt" gestellt werden, damit sie nicht im Attributformular angezeigt werden.

4.) Attributformular-Einstellungen des geometrischen Datensatzes

Bei dem geometrischen Datensatz muss in der Attributformular-Konfiguration (siehe Abbildung 7) nun der Modus "Drag and Drop" (1) verwendet werden. Dann kann die angelegte Beziehung mit gedrückter linker Maustaste zum Formular hinzugefügt werden (2) und anschließend auf der rechten Seite konfiguriert werden (3). Für das Anhang-Beispiel werden in der Regel nur die Optionen "Kindobjekt hinzufügen" und "Kindobjekt löschen" benötigt. Das Primärschlüssel-Attribut kann aus dem Formularlayout mit dem roten Minus entfernt werden.

Abbildung 7: Die Beziehung kann in das Attributformular integriert und konfiguriert werden.

Damit ist es geschafft! Wenn wir nun Objekte digitalisieren bzw. editieren, können wir aus dem Attributformular heraus Anhänge zum geometrielosen Datensatz hinzufügen. Ich setze in meinem Beispiel also einen Punkt, trage die Sachdaten ein und kann dann beliebig viele dazugehörige Anhänge hinzufügen.

Abbildung 8: Ein geometrisches Objekt erstellen und beliebig viele dazugehörige Anhänge hinzufügen.

Das funktioniert auch in QField!

Ihr seid mobil unterwegs und wollt vor Ort Daten editieren und dabei Fotos oder Videos direkt mit dem Mobilgerät aufnehmen? Dann funktioniert das mit den vorgestellten Einstellungen ganz genauso, egal ob ein oder mehrere Anhänge. Wichtig für die Synchronisation ist es, die Anhänge entweder relativ zum Projektpfad zu speichern oder man verwendet die Möglichkeiten der HTTP-Server, falls auch mobil eine Verbindung zum Internet gewährleistet ist.

Mehr Informationen dazu findet ihr in der Dokumentation von QField hier und hier.

Wie man an diesem Anhang-Beispiel sieht, sind Attributformulare und Beziehungen wunderbar miteinander kombinierbar. Das funktioniert auch für zwei geometrische Datensätze: Immer, wenn ihr ein Eltern-Objekt digitalisiert, könnt ihr davon ausgehend beliebig viele dazugehörige Kind-Objekte (ebenfalls direkt mit Geometrie) digitalisieren.

Fazit

Ob in QGIS oder mit QField - Attributformulare stecken voller einfacher und fortgeschrittener Möglichkeiten. Das Anzeigen von Fotos oder anderen Anhängen direkt im Attributformular bietet eine optische Aufwertung und bringt "die echte Welt" in die Datenhaltung. Kombiniert mit den Möglichkeiten einer Beziehung lassen sich umfangreiche Datei-Bestände gemeinsam mit geometrischen Datensätzen verwalten

Über den Autor

Steckbrief

Florian Meier wollte immer Mathematik und Geographie lehren, hat aber während seines Lehramtsstudiums die Geoinformatik kennen und lieben gelernt. Deshalb unterrichtet der UNIGIS MSc - Absolvent seit 2020 die Nutzung geographischer Informationssysteme und ist seit 2026 bei der WhereGroup als GIS-Trainer tätig.

Florian Meier WhereGroup