QGIS Ausdrücke (Expressions)

Ausdrücke (Expressions oder Regeln) sind überaus bedeutend, denn sie kommen in vielen Bereichen von QGIS vor: beim Styling, bei Abfragen, Feldberechnungen, zum Filtern und Auswählen und bei der Erstellung von Karten oder Kartenserien. Schenken wir diesem Thema also besondere Aufmerksamkeit.

Ausdrücke und Ausdrucksdialog

Der Ausdruckseditor mit einfachem Ausdruck (QGIS 3.24)

Ausdrücke sind im übertragen Sinne Formeln, welche in einer QGIS-eigenen, SQL-ähnlichen Syntax geschrieben sind und in mehrere Ebenen verschachtelt sein können. Mit ihnen werden Bedingungen formuliert sowie damit verbundene Anweisungen, die bei Erfüllung oder Nichterfüllung der Bedingung eintreten. Wir können Ausdrücke fortlaufend schreiben oder mit Hilfe des Ausdruckseditors per Mausklick erstellen. Es steht uns eine große Anzahl an Funktionen zur Verfügung, welche mit einer Suchmaske gefiltert werden können. Für fortgeschrittene Anwender besteht die Möglichkeit über den Funktionseditor, eigene Python-Scripte anstelle der QGIS-Ausdrücke zu verwenden.

  1. Auswahl der in der Attributtabelle vorhandenen Felder
  2. …und deren Werte
  3. Funktionsfeld – hier wird der Ausdruck eingetippt; Syntax wird hervorgehoben und Fehler (rotes Dreieck) markiert
  4. Fortgeschrittene Anwender:innen können auch Python-Funktionen (Funktionseditor) verwenden

Ausdrücke in der aktuellen QGIS-Dokumentation

...und wo finde ich den Ausdrucksdialog?

Such das Epsilon! (QGIS 3.24)

Überall in QGIS lassen sich mit Ausdrücken Dinge steuern: Beschriftungen, Symbolisierung, Berechnungen, Geometrien, Kartendarstellung etc… Betrachten wir die QGIS Oberfläche, finden wir auf Anhieb mehrere Stellen mit dem Epsilon-Symbol . Und dahinter verbirgt sich der Ausdruckseditor oder Ausdrucksdialog.

Aber nicht nur da, sondern auch an vielen weiteren Stellen. Zum Beispiel bei der Datendefinierten Übersteuerung mit diesem Symbol: - finden Sie es?

Übersteuerung mit Ausdrücken, Variablen oder Feldwerten

Kontextmenü der Datendefinierten Übersteuerung

(Fast) überall da, wo Einstellungen am Stil, der Beschriftung oder in der Druckzusammenstellung vorgenommen werden können, befindet sich dieses kleine unscheinbare Symbol: Es steht für daten- oder regelbedingte Übersteuerung und ermöglicht uns die statischen per Hand eingegebenen Werte durch dynamische zu ersetzen. Diese stammen aus

  • Regeln (Ausdrücke) (siehe oben)
  • Variablen (können in den Projekteigenschaften frei vergeben werden)
  • Feldwerte (stammen aus der Attributtabelle des Layers) oder
  • Hilfsspeicher (geometrielose Tabelle, welche mit der Projektdatei gespeichert wird, und als Datenspeicher dient)

Diese Funktion ist zugegeben etwas fortgeschritten, expandiert aber die Möglichkeiten der Visualisierung und Beschriftung ganz erheblich. Außerdem sind dynamische Werte Abhängig von den (Layer-)Daten und nicht von einer Nutzereingabe, wodurch sich beispielsweise gut mit Templates arbeiten lässt: eine Projektvorlage mit Datendefinierten Einstellungen, wird sich den Daten anpassen. Ein manuelles Nacharbeiten (bei dem oft Dinge übersehen oder falsch eingegeben werden) ist nicht notwendig!

mehr dazu (in Englisch) im QGIS Handbuch

Häufige Ausdrücke an praktischen Beispielen

Attribute (Spalte in der Attributtabelle) werden immer in doppelte Anführungszeichen gesetzt: „ATTRIBUT“; Werte (Zelle der Attributtabelle) in einfachen Anführungszeichen: 'WERT'.

Groß- und Kleinschreibung, Zeilenumbrüche oder aufeinanderfolgende Leerzeichen spielen bei der QGIS-SQL-Syntax keine Rolle und können verwendet werden

Einfache Ausdrücke mit häufigen Operatoren

Ausdruck Syntax Ergebnis Erläuterung
"Vogelart" = 'Mäusebussard' OR "Vogelart" = 'Rotmilan'
a OR b
Alle Mäusebussarde und alle Rotmilane werden angesprochen Abfrage an einem Attribut mit zwei möglichen Werten
"Vogelart" IN ('Mäusebussard','Rotmilan')
a IN (...)
Alle Mäusebussarde und alle Rotmilane werden angesprochen Kürzere / elegantere Alternative zu OR
"Vogelart" = 'Mäusebussard' AND "Verhalten" = 'kreisend'
a = b AND c = d
Alle kreisenden Mäusebussarde Zwei Bedingungen (zwei Attribute) müssen erfüllt sein
"Vogelart" = 'Mäusebussard' AND "Verhalten" != 'kreisend'
a = b AND c != d
Alle nicht‑kreisenden Mäusebussarde Kombination Gleichheit + Ungleichheit

Einfache Ausdrücke mit Zahlenwerten

Ausdruck Syntax Ergebnis Erläuterung
"Vogelart" = 'Rotmilan' AND "Hoehe" > 500
a > b
Alle Rotmilane über 500 m Vergleich größer als
"Vogelart" = 'Rotmilan' AND "Hoehe" > 100 AND "Hoehe" <= 500
a > b AND a <= c
Alle Rotmilane zwischen 101 m und 500 m (inkl. 500) Bereichsfilter (untere Grenze exklusiv, obere inklusiv)
round("Hoehe",2)
round(VALUE[,places=0])
Höhe auf 2 Nachkommastellen Rundet numerische Werte
rand(1,20)
rand(MIN,MAX[,seed])
Zufallszahl zwischen 1 und 20 Pseudozufallswert; optional reproduzierbar mit seed

sonst. Ausdrücke

Ausdruck Syntax Ergebnis Erläuterung
"Vogelart" IS NOT NULL
a IS NOT NULL
Alle Zeilen mit Eintrag bei „Vogelart“ NULL steht für fehlenden Wert
"Vogelart" IS NULL
a IS NULL
Alle Zeilen ohne Eintrag bei „Vogelart“ Prüfung auf fehlenden Wert
COALESCE("Vogelart_A","Vogelart_B")
COALESCE(expr1,expr2,)
Erster nicht-NULL-Wert wird zurückgegeben Fallback-Kette

Geometrie-Ausdrücke

Ausdruck Syntax Ergebnis Erläuterung
$length
$length
Länge einer Linie Gilt für Linien; berücksichtigt Projekt-Ellipsoid & Einheiten
$area
$area
Fläche eines Polygons Gilt für Polygone; Einheiten gem. Projekteinstellungen
$perimeter
$perimeter
Umfang eines Polygons Gilt für Polygone
$x
$x
X-Koordinate eines Punktes Gilt für Punkte
$y
$y
Y-Koordinate eines Punktes Gilt für Punkte

Weitere Geometrie-Ausdrücke (kurz)

Ausdruck Ergebnis / Zweck Hinweis
area($geometry)
Fläche (Alternative zu $area) Funktionsform
round($area/10000,1)
Fläche in ha m² → ha
centroid($geometry)
Schwerpunkt als Punkt Labelanker
num_points($geometry)
Anzahl Stützpunkte Komplexität
transform($geometry,'EPSG:25833','EPSG:4326')
Geometrie umprojizieren CRS-Wechsel

Overlay / räumliche Ausdrücke

Ausdruck / Muster Ergebnis / Zweck
overlay_intersects('gemeinden',"GEN")
Gemeindename bei Schnitt
overlay_nearest('messstellen',"NAME")
Nächstgelegene Messstelle
array_length(overlay_intersects('parzellen',"FSNR"))
Anzahl Parzellen im Schnitt

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information

Fragen, Hinweise und Fehler kommen hier hin:

Geben Sie Ihren Kommentar ein. Wiki-Syntax ist zugelassen:
K D P​ K K