14.2. Ausdrücke¶
Auf Basis von Layerdaten und vorhanden oder benutzerdefinierten Funktionen bieten Ausdrücke ein mächtiges Werkzeug, um Attributwerte, Geometrien und Variablen zu verarbeiten. Dies kann genutzt werden, um dynamisch die Symbolisierung, die Lage von Beschriftungen, die Werte in Diagrammen, die Höhe von Layoutelementen anzupassen oder auch um Features zu selektieren oder virtuelle Felder anzulegen.
14.2.1. Der Ausdruckseditor¶
Der Hauptdialog zur Erstellung von Ausdrücken, der Ausdruckeditor ist an vielen Stellen in QGIS verfügbar. Er kann z.B. hier aufgerufen werden:
Auswahl von Objekten mit Hilfe des Tools Objekte über Ausdruck wählen;
Attribute bearbeiten z.B. mit Hilfe des Tools Feldrechner;
Änderung der Symbolisierung, der Beschriftung oder der Parameter von Layoutelementen mit Hilfe des Tools Datendefinierte Übersteuerung (see Datendefinierte Übersteuerung Setup);
Erstellung eines Layers mit Symbolisierung mit Hilfe des Geometriegenerators;
Ausführung einer Geoprozessierung.
Der Ausdruckseditor erlaubt den Zugang zu:
den Ausdrucksbereich der die Erstellung und Prüfung von Ausdrücken mit Hilfe einer Liste von vordefinierten Funktionen erleichtert;
den Funktionseditor der bei der Erstellung angepasster Funktionen und damit der Erweiterung der Liste der Funktionen unterstützt.
Einige Anwendungsfälle für Ausdrücke:
Aus dem Feldrechner berechnen Sie ein „pop_density“ Feld, indem Sie die existierenden Felder „total_pop“ und „area_km2“ nutzen:
"total_pop" / "area_km2"
Aktualisieren Sie das Feld „density_level“ mit zugehörigen Kategorien zu den „pop_density“ Werten:
CASE WHEN "pop_density" < 50 THEN 'Low population density' WHEN "pop_density" >= 50 and "pop_density" < 150 THEN 'Medium population density' WHEN "pop_density" >= 150 THEN 'High population density' END
Update a region layer field with the names (comma separated) of contained airports:
aggregate('airport_layer', 'concatenate', "name", within($geometry, geometry(@parent)), ', ')
Wenden Sie einen kategorisierten Stil auf alle Objekte an, je nachdem, ob der durchschnittliche Hauspreis kleiner oder größer als 10000€ pro Quadratmeter ist:
"price_m2" > 10000
Mit dem „Durch Ausdruck wählen…“ Werkzeug, wählen Sie alle Objekte die eine Fläche mit „Hoher Bevölkerungsdichte“ und einem durchschnittlichen Hauspreis größer als 10000€ pro Quadratmeter darstellen:
"density_level" = 'High population density' and "price_m2" > 10000
Der vorhergehende Ausdruck kann ebenso genutzt werden, um die in der Karte anzuzeigenden bzw. zu beschriftenden Objekte festzulegen.
Die Nutzung von Ausdrücken eröffnet vielfältige Möglichkeiten.
Tipp
Nutzen Sie Parameternamen, um die Lesbarkeit von Ausdrücken zu verbessern
Einige Funktionen erfordern viele zu erstellende Parameter. Die Ausdrucksverarbeitung erlaubt die Verwendung von Namen für Parameter. Das heißt an Stelle der kryptischen Ausdrucksschreibweise clamp( 1, 2, 9)
kann die Schreibweise clamp( min:=1, value:=2, max:=9)
verwendet werden. Das erlaubt es auch, die Reihenfolge der Argumente des Ausdrucks zu tauschen, z.B. clamp( value:=2, max:=9, min:=1)
. Die Verwendung von Parameternamen hilft, zu verdeutlichen, worauf sich die Argumente eines Ausdrucks beziehen. Das ist hilfreich, um Ausdrücke zu einem späteren Zeitpunkt noch zu verstehen!
14.2.2. Liste der Funktionen¶
Der Reiter Ausdruck stellt die Hauptschnittstelle zur Eingabe von Ausdrücken unter Nutzung von Funktionen, Layerattributen und Werten dar. Er enthält die folgenden Widgets:
Einen Editorbereich zur Eingabe oder Einfügen von Ausdrücken. Autovervollständigung steht in diesem Bereich zur Beschleunigung der Eingabe zur Verfügung:
Die zum Eingabetext passenden Variablen, Funktionsnamen und Feldnamen werden unterhalb der Eingabe angezeigt. Nutzen Sie die Up und Down Tasten, um die Einträge durchzublättern und die Taste Tab, um einen Eintrag in den Ausdruck zu übernehmen oder klicken Sie einfach doppelt auf den gewünschten Eintrag.
Die Parameter von Funktionen werden beim Ausfüllen angezeigt.
QGIS prüft die Richtigkeit des Ausdrucks und hinterlegt alle Fehler farbig:
Unterstreichung: unbekannte Funktionen, falsche oder ungültige Funktionsargumente;
Markierung: alle weiteren Fehler (z.B. fehlende Klammern, unerwartete Zeichen) an der jeweiligen Stelle.
Tipp
Dokumentieren Sie Ihre Ausdrücke mit Kommentaren
Bei Nutzung komplexer Ausdrücke, ist es eine gute Praxis mehrzeilige Kommentare bzw. im Ausdruck eingeschlossene Kommentare als Erinnerungshilfen zu verwenden.
/* Labels each region with its highest (in altitude) airport(s) and altitude, eg 'AMBLER : 264m' for the 'Northwest Artic' region */ with_variable( 'airport_alti', -- stores the highest altitude of the region aggregate( 'airports', 'max', "ELEV", -- the field containing the altitude -- and limit the airports to the region they are within filter := within( $geometry, geometry( @parent ) ) ), aggregate( -- finds airports at the same altitude in the region 'airports', 'concatenate', "NAME", filter := within( $geometry, geometry( @parent ) ) and "ELEV" = @airport_alti ) || ' : ' || @airport_alti || 'm' -- using || allows regions without airports to be skipped )
In der Ausgabevoransicht unterhalb des Ausdruckseditors wird das Resultat des Ausdrucks angewendet auf das erste Objekt des Layers dargestellt. Im Falle eines Fehlers wird eine Fehlermeldung angezeigt und die Details zur Fehlermeldung können über den bereit gestellten link angesehen werden.
In einem Auswahlfeld sind die Funktionen, Variablen, Felder, … in Gruppen organisiert aufgelistet. Ein Suchfeld dient zur Filterung der Gesamtliste, um schnell eine bestimmte Funktion oder Feld zu finden. Mit Hilfe eines Doppelklicks wird das Element in den Ausdruckseditor eingefügt.
Ein Bedienfeld, das Hilfe für jedes ausgewählte Element aus der Funktionsauwahl anzeigt.
Tipp
Drücke Ctrl+Click beim Überfahren eines Funktionsnamens, um automatisch die Hilfe zu dieser Funktion im Hilfe-Dialog anzuzeigen.
Sobald in der Funktionsauswahl ein Feld selektiert ist, wird ein Widget zu den Werten dieses Attributes angezeigt. Mit Doppelklick auf einen Wert, wird der Wert in den Ausdruckseditor übernommen.
Tipp
Das rechte Bedienfeld mit der Hilfe zu Funktionen und den Feldwerten kann ausgeblendet werden (durch nach rechts ziehen der Bedienfeldbegrenzung). Durch Drücken des Knopfes Werte anzeigen oder Hilfe anzeigen wird er wieder angezeigt.
14.2.2.1. Aggregatsfunktionen¶
Diese Gruppe enthält Funktionen, die Werte über Layern und Feldern aggregieren.
Funktion |
Beschreibung |
---|---|
aggregate |
Liefert einen mit Objekten eines anderen Layers berechneten Aggregatwert |
array_agg |
Liefert ein Array der aggregierten Werte eines Feldes oder Ausdrucks |
collect |
Liefert eine mehrteilige Geometrie der aggregierten Geometrien des Ausdrucks |
concatenate |
Returns all aggregated strings from a field or expression joined by a delimiter |
concatenate_unique |
Returns all unique aggregated strings from a field or expression joined by a delimiter |
count |
Liefert die Anzahl der passenden Objekte |
count_distinct |
Liefert die Anzahl von eindeutigen Werten |
count_missing |
Liefert die Anzahl von fehlenden Werten (NULL) |
iqr |
Liefert den berechneten Interquartilbereich eines Feldes oder Ausdrucks |
majority |
Liefert den aggregierten Mehrheitswert (am häufigsten auftretender Wert) eines Feldes oder Ausdrucks |
max_length |
Liefert die maximale Zeichenkettenlänge eines Feldes oder Ausdrucks |
maximum |
Liefert den aggregierten Maximalwert eines Feldes oder Ausdrucks |
mean |
Liefert den aggregierten Mittelwert eines Feldes oder Ausdrucks |
median |
Liefert den aggregierten Medianwert aus einem Feld oder Ausdruck |
min_length |
Liefert die minimale Zeichenkettenlänge eines Feldes oder Ausdrucks |
minimum |
Liefert den aggregierten minimalen Wert eines Feldes oder Ausdrucks |
minority |
Liefert den aggregierten Minderheitswert (am wenigsten auftretender Wert) eines Feldes oder Ausdrucks |
q1 |
Liefert das berechnete erste Quartil eines Feldes oder Ausdrucks |
q3 |
Liefert das berechnete dritte Quartil eines Feldes oder Ausdrucks |
range |
Liefert den aggregierten Wertebereich (maximum - minimum) eines Feldes oder Ausdrucks |
relation_aggregate |
Liefert einen aus allen passenden Kindobjekten aggregierten Wert einer Layerbeziehung |
stdev |
Liefert den aggregierten Standardabweichungswert eines Feldes oder Ausdrucks |
sum |
Liefert den aggegierten summierten Wert eines Feldes oder Ausdrucks |
Beispiele:
Gebe den Maximalwert für das Feld „passengers“ und der Gruppierung der Objekte nach dem Feld „station_class“ aus:
maximum("passengers", group_by:="station_class")
Berechne die Anzahl der Passagiere für Bahnhöhe innerhalb des aktuellen Atlas-Objektes:
aggregate('rail_stations','sum',"passengers", intersects(@atlas_geometry, $geometry))
Gebe dern Mittelwert des Feldes „field_from_related_table“ für alle passenden Kindobjekte bezüglich der Relation ‚my_relation‘ des Layers aus:
relation_aggregate('my_relation', 'mean', "field_from_related_table")
oder:
relation_aggregate(relation:='my_relation', aggregate := 'mean', expression := "field_from_related_table")
14.2.2.2. Matrixfunktionen¶
Diese Gruppe enthält Funktionen zur Erzeugung und Manipulation von Arrays (auch als Listen bekannt). Die Reihenfolge der Werte im Array ist wichtig. Eine Ausnahme bildet die ‚map‘ Datenstruktur, bei der die Reihenfolge der Schlüssel-Werte-Paare unwichtig ist. Die Werte werden in diesem Fall durch den zugehörigen Schlüssel identifiziert.
Funktion |
Beschreibung |
---|---|
array |
Liefert ein Array mit allen zum Parameter passenden Werten |
array_all |
Returns true if an array contains all the values of a given array |
array_append |
Liefert einen Array an den der gegebene Wert am Ende angehängt ist |
array_cat |
Liefert einen Array der alle gegeben Arrays aneinanderhängt |
array_contains |
Gibt wahr aus, wenn das Array den gegebenen Wert enthält |
array_distinct |
Gibt ein Array mit den eindeutigen Werten des gegebenen Arrays aus |
array_filter |
Liefert einen Array der nur die Werte enthält, für die ein Ausdruck wahr ist |
array_find |
Gibt den Index eines Wertes im Array (0 für den ersten Wert). Gibt -1 zurück, wenn der Wert nicht im Array enthalten ist |
array_first |
Gibt den ersten Wert eines Arrays zurück |
array_foreach |
Gibt ein Array mit dem Ergebnis der Auswertung des gegebenen Ausdrucks für jedes Element zurück |
array_get |
Liefert den n-ten Wert eines Arrays (0 für den ersten Wert) |
array_insert |
Liefert ein Array in das der gegebene Wert an der gegebenen Position eingefügt wurde |
array_intersect |
Gibt wahr zurück, wenn ein Element aus array_1 in array_2 enthalten ist |
array_last |
Gibt den letzten Wert eines Arrays zurück |
array_length |
Gibt die Anzahl der Elemente eines Arrays zurück |
array_prepend |
Liefert ein Array bei dem der gegebene Wert am Anfang eingefügt ist |
array_remove_all |
Gibt ein Array zurück, aus dem die gegebenen Wert entfernt sind |
array_remove_at |
Liefert ein Array aus dem das Element mit dem gegebenen Index entfernt wurde |
array_reverse |
Liefert das gegebene Array in umgekehrter Reihenfolge zurück |
array_slice |
Gibt einen Teil eines Arrays zurück. Der Teil wird durch die Argumente start_pos und end_pos bestimmt. |
array_sort |
Returns the provided array with its elements sorted |
array_to_string |
Verbindet die Elemente eines Arrays zu einer durch Trennzeichen getrennten Zeichenkette. Für leere Werte kann optional ein Wert vorgegeben werden. |
generate_series |
Erzeugt ein Array aus einer Folge von Zahlen |
regexp_matches |
Gibt einen Array aller Zeichenketten zurück, die durch gruppierte Erfassung im gegebenen regulären Ausdruck aus einer Zeichenkette erfasst werden |
string_to_array |
Zerteilt eine Zeichenkette an der Stelle des vorgegeben Trennzeichens in einen Array. Für leere Werte kann optional eine Zeichenkette vorgegeben werden. |
14.2.2.3. Farbfunktionen¶
Diese Gruppe enthält Funktionen zur Farbmanipulation.
Funktion |
Beschreibung |
---|---|
color_cmyk |
Liefert die Zeichenkettendarstellung einer Farbe nach ihrem Cyan-, Magenta-, Gelb- und Schwarzkomponenten |
color_cmyka |
Liefert die Zeichenkettendarstellung einer Farbe nach ihrem Cyan-, Magenta-, Gelb-, Schwarz- und Alpha-(Transparenz-)komponenten |
color_grayscale_average |
Applies a grayscale filter and returns a string representation from a provided color |
color_hsl |
Liefert die Zeichenkettendarstellung einer Farbe nach ihrem Farb-, Sättigungs- und Helligkeitsattributen |
color_hsla |
Liefert die Zeichenkettendarstellung einer Farbe nach ihrem Farb-, Sättigungs-, Helligkeits- und Alpha-(Transparenz-)Attributen |
color_hsv |
Liefert die Zeichenkettendarstellung einer Farbe nach ihrem Farb-, Sättigungs- und Helligkeitsattributen |
color_hsva |
Liefert die Zeichenkettendarstellung einer Farbe nach ihrem Farb-, Sättigungs-, Helligkeits- und Alpha-(Transparenz-)Attributen |
color_mix_rgb |
Returns a string representing a color mixing the red, green, blue, and alpha values of two provided colors based on a given ratio |
color_part |
Gibt eine bestimmte Komponente einer Farbzeichenkette zurück, z.B. rote oder Alpha-Komponente |
color_rgb |
Liefert die Zeichenkettendarstellung einer Farbe nach ihrem Rot-, Grün- und Blau-Komponenten |
color_rgba |
Liefert die Zeichenkettendarstellung einer Farbe nach ihrem Rot-, Grün-, Blau- und Alpha-(Transparenz-)Komponenten |
create_ramp |
Returns a gradient ramp from a map of color strings and steps |
darker |
Liefert eine dunklere (oder hellere) Farbzeichenkette |
lighter |
Liefert eine hellere (oder dunklere) Farbzeichenkette |
project_color |
Liefert eine Farbe aus dem Farbschema des Projekts |
ramp_color |
Liefert eine Farbe aus einem Verlaufs als Zeichenkette |
set_color_part |
Setzt eine bestimmte Komponente einer Farbzeichenkette, z.B. rote oder Alpha-Komponente |
14.2.2.4. Funktionen für Bedingungen¶
Diese Gruppe enthält Funktionen um bedingte Prüfungen in Ausdrücken zu handhaben.
Funktion |
Beschreibung |
---|---|
CASE WHEN … THEN … END |
Wertet einen Ausdruck aus und liefert ein Ergebnis, wenn es wahr ist. Sie können mehrere Bedingungen testen |
CASE WHEN … THEN … ELSE … END |
Wertet einen Ausdruck aus und gibt ein anderes Ergebnis zurück, je nachdem es wahr oder falsch ist. Sie können mehrere Bedingungen testen |
coalesce |
Liefert den ersten Nicht-NULL-Wert aus der Ausdrucksliste |
if |
Prüft eine Bedingung und liefert unterschiedliche Ergebnisse je nach deren Ausgang |
nullif(value1, value2) |
Returns a null value if value1 equals value2 otherwise it returns value1. This can be used to conditionally substitute values with NULL. |
try |
Tries an expression and returns its value if error-free, an alternative value (if provided) or Null if an error occurs |
Einige Beispiele:
Sende einen Wert zurück wenn die erste Bedingung wahr ist, sonst einen anderen Wert:
CASE WHEN "software" LIKE '%QGIS%' THEN 'QGIS' ELSE 'Other' END
14.2.2.5. Funktionen zum Umwandlung¶
Diese Gruppe enthält Funktionen, um einen Datentypen in einen anderen umzuwandeln (z.B. Zeichenketten zu Ganzzahlen oder umgekehrt).
Funktion |
Beschreibung |
---|---|
to_date |
In eine Datumsobjekt umzuwandelnde Zeichenkette |
to_datetime |
In eine Zeitpunktobjekt umzuwandelnde Zeichenkette |
to_dm |
Wandelt Koordinaten in Grad, Minute um |
to_dms |
Wandelt Koordinaten in Grad, Minute, Sekunde um |
to_int |
Wandelt eine Zeichenkette in Fließkommazahlen |
to_interval |
Wandelt eine Zeichenkette in einen Intervalltyp (kann für Tage, Stunden, Monate usw. eines Datum verwendet werden) |
to_real |
Wandelt eine Zeichenkette in Fließkommazahlen |
to_string |
Wandelte eine Zahl in eine Zeichenkette |
to_time |
Wandelt eine Zeichenkette in ein Zeitobjekt |
14.2.2.6. Benutzerdefinierte Funktionen¶
Diese Gruppe enthält vom Nutzer erstellte Funktionen. Unter Funktions Editor findet man weitere Details.
14.2.2.7. Datum und Zeit Funktionen¶
Diese Gruppe enthält Funktionen die auf Datums- und Zeitdaten angewendet werden können.
Funktion |
Beschreibung |
---|---|
age |
Liefert die Differenz zwischen zwei Terminen oder Terminzeiten als Intervall |
day |
Bestimmt den Tag aus einem Datum oder die Anzahl der Tage aus einem Intervall. |
day_of_week |
Liefert eine Zahl die dem Tag der Woche entspricht, für ein bestimmtes Datum oder eine Datumzeit |
epoch |
Gibt den Zeitabstand in Millisekunden zwischen der Unixepoche und einem gegebenen Datumswert an. |
hour |
Bestimmt den Stundenteil aus einem Datum oder die Stundenzahl aus einem Intervall |
minute |
Bestimmt den Minutenteil aus einem Datum oder die Minutenzahl aus einem Intervall |
month |
Bestimmt den Monat aus einem Datum oder die Anzahl der Monate aus einem Intervall |
now |
Bestimmt das aktuelle Datum und die Zeit |
second |
Bestimmt den Sekundenteil aus einem Datum oder die Sekundenzahl aus einem Intervall |
week |
Bestimmt die Wochennummer aus einem Datum oder die Anzahl der Wochen aus einem Intervall |
year |
Extracts the year part from a date or datetime, or the number of years from an interval |
In dieser Gruppe sind einige Funktionen der Gruppen Funktionen zum Umwandlung ( to_date, to_time, to_datetime, to_interval) und Zeichenkettenfunktionen (format_date) enthalten.
Einige Beispiele:
Ausgabe des aktuellen Monats und Jahres in der Form „Monat_Nummer/Jahr“:
format_date(now(),'MM/yyyy') -- Returns '03/2017'
Neben diesen Funktionen führt das Subtrahieren von Datums- oder Zeitangaben mit dem -
(minus) Operator zur Ausgabe eines Zeitintervalls.
Die Addition oder Subtraktion von Zeitintervallen zu Datums- oder Zeitangaben mit Hilfe des +
(plus) oder -
(minus) Operators gibt eine Datums- oder Zeitangabe zurück.
Ausgabe der Anzahl der Tage bis zur Herausgabe von QGIS 3.0:
to_date('2017-09-29') - to_date(now()) -- Returns <interval: 203 days>
Analog mit time:
to_datetime('2017-09-29 12:00:00') - to_datetime(now()) -- Returns <interval: 202.49 days>
Ausgabe der Datums- und Zeitangabe für 100 Tage in der Zukunft:
now() + to_interval('100 days') -- Returns <datetime: 2017-06-18 01:00:00>
Bemerkung
Speichern von Datums- und Zeitangaben und Zeitintervallen in Feldern
Die Fähigkeit, Werte mit Datum, Zeit und Datum mit Zeit direkt in Feldern zu speichern, hängt vom Datenformat ab (z.B. unterstützt das shape-Format Werte für Datum aber nicht Datum mit Zeit oder Zeit). Es folgen einige Vorschläge, um diese Limitation zu umgehen:
Datum, Datum mit Zeit und Zeit können in Text-Feldern nach Umwandlung mit der
to_format()
Funktion gespeichert werden.Zeitintervalle können in Felder mit ganzzahligem oder dezimalem Datentyp gespeichert werden. Davor muss eine entsprechende Umwandlung erfolgen (z.B.
day()
um ein Zeitintervall in Tagen zu erhalten).
14.2.2.8. Felder und Werte¶
Enthält eine Liste von Feldern des Layers.
Doppelklick auf einen Feldnamen fügt das Feld im Ausdruck ein. Man kann auch den Feldnamen (vorzugsweise in Anführungszeichen) oder seinen alias verwenden.
Um Feldwerte, die man in einem Ausdruck verwenden will anzuzeigen, klickt man im Vorschau-Widget auf 10 Stichproben oder Alle eindeutigen. Die angeforderten Werte werden dann angezeigt und man kann das Ergebnis mit Hilfe des Suche Kastens über der Liste filtern. Beispielwerte können außerdem duch Klick mit der rechten Maustaste auf ein Feld angezeigt werden.
Um einen Wert in den erstellten Ausdruck zu übernehmen, klickt man doppelt auf den Wert in der Liste. Wenn der Wert eine Zeichenkette ist, sollte er mit einfachen Anführungszeichen ausgezeichnet sein. Ansonsten sind keine Anführungszeichen erforderlich.
14.2.2.9. Files and Paths Functions¶
This group contains functions which manipulate file and path names.
Funktion |
Beschreibung |
---|---|
base_file_name |
Returns the base name of the file without the directory or file suffix. |
file_exists |
Returns true if a file path exists. |
file_name |
Returns the name of a file (including the file extension), excluding the directory. |
file_path |
Returns the directory component of a file path, without the file name |
file_size |
Returns the size (in bytes) of a file. |
file_suffix |
Returns the file extension from a file path. |
is_directory |
Returns true if a path corresponds to a directory. |
is_file |
Returns true if a path corresponds to a file. |
14.2.2.10. Unscharfer Vergleich Funktion¶
Diese Gruppe enthält unscharfe Vergleichsfunktionen zwischen Werten.
Funktion |
Beschreibung |
---|---|
hamming_distance |
Liefert der Anzahl von Zeichen an korrespondieren Positionen innerhalb der Eingabezeichenketten an dem die Zeichen unterschiedliche sind. |
levensheim |
Liefert die minimale Anzahl von Zeichenbearbeitungen (Einfügen, Löschen oder Substitutionen) die erforderlich, sind um eine Zeichenkette zu einer anderen zu ändern. Misst die Ähnlichkeit zwischen zwei Zeichenketten |
longest_common_substring |
Liefert die längste gemeinsame Teilzeichenkette zwischen zwei Zeichenketten |
soundex |
Liefert die Soundex Darstellung einer Zeichenkette |
14.2.2.11. Allgemeine Funktionen¶
This group contains general assorted functions.
Funktion |
Beschreibung |
---|---|
env |
Erhält eine Umgebungsvariable und gibt ihren Inhalt als Zeichenkette zurück. Wenn die Variable nicht gefunden wurde, wird |
eval |
Evaluates an expression which is passed in a string. Useful to expand dynamic parameters passed as context variables or fields. |
is_layer_visible |
Gibt wahr zurück, wenn der angegebene Layer sichtbar ist |
layer_property |
Liefert eine Eigenschaft des Layers oder einen Wert seiner Metadaten. Es kann ein Layername sein, KBS, Geometrietyp, Objektanzahl… |
var |
Returns the value stored within a specified variable. See Variables below |
with_variable |
Erstellt und belegt eine Variable für den im dritten Argument verwendeten Ausdruck. Nützlich bei Ausdrücken, die denselben Wert mehrfach wiederholen. |
14.2.2.12. Geometriefunktionen¶
This group contains functions that operate on geometry objects (e.g. buffer, transform, $area).
Funktion |
Beschreibung |
---|---|
$area |
Liefert die Fläche des aktuellen Objekts |
$geometry |
Liefert die Geometrie des aktuellen Objekts (kann zur Verarbeitung mit anderen Funktionen verwendet werden) |
$length |
Liefert die Länge des aktuellen Objekts |
$perimeter |
Liefert die Umfanglänge des aktuellen Objekts. |
$x |
Liefert die X-Koordinate des aktuellen Objektes |
$x_at(n) |
Liefert die X-Koordinate des n-ten Knotens der aktuellen Objektgeometrie |
$y |
Liefert die Y-Koordinate des aktuellen Objektes |
$y_at(n) |
Liefert die Y-Koordinate des n-ten Knotens der aktuellen Objektgeometrie |
angle_at_vertex |
Returns the bisector angle (average angle) to the geometry for a specified vertex on a linestring geometry. Angles are in degrees clockwise from north |
area |
Liefert die Fläche eines Polygonobjekts. Berechnung erfolgen im Bezugssystem der Geometrie |
azimuth |
Returns the north-based azimuth as the angle in radians measured clockwise from the vertical on point_a to point_b |
boundary |
Returns the closure of the combinatorial boundary of the geometry (ie the topological boundary of the geometry - see also Boundary). |
bounds |
Gibt die Geometrie des Begrenzungsrahmens um die Eingabegeometrie zurück. Berechnungen erfolgen im räumlichen Bezugssystem der Eingabegeometrie (siehe auch Bounding boxes) |
bounds_height |
Gibt die Höhe des Begrenzungsrahmens einer Geometrie zurück. Berechungen erfolgen im räumlichen Bezugssystem der Eingabegeometrie |
bounds_width |
Gibt die Breite des Begrenzungsrahmens einer Geometrie zurück. Berechnungen erfolgen im räumlichen Bezugssystem der Eingabegeometrie |
buffer |
Gibt eine Geometrie aller Punkte zurück, deren Abstand zur Eingabegeometrie kleiner oder gleich des vorgegebenen Abstandswertes ist. Die Berechnung erfolgen im räumlichen Bezugssystem der Eingabegeometrie (see also Buffer) |
buffer_by_m |
Erstellt einen Puffer entlang einer Liniengeomtrie bei dem der Pufferdurchmesser den m-Werten folgend wechselt (see also Variable width buffer (by M value)) |
centroid |
Liefert das geometrische Zentrum einer Geometrie (see also Centroids) |
closest_point |
Liefert einen Punkt in einer Geometrie, der der zweiten Geometrie am nächsten liegt. |
collect_geometries |
Collects a set of geometries into a multi-part geometry object (see also Collect geometries) |
combine |
Liefert die Kombination von zwei Geometrien |
contains(a,b) |
Liefert true dann und nur dann, wenn kein Punkt von b außerhalb von a liegt und mindestens ein Punkt von b in a liegt. |
convex_hull |
Liefert die konvexe Hülle einer Geometrie (dies stellt die minimale konvexe Geometrie dar, die alle in der Menge enthaltenen Geometrien enthält) (see also Convex hull) |
crosses |
Liefert 1 (wahr), wenn die gelieferte Geometrien einige, aber nicht alle inneren Punkte gemeinsam haben |
difference(a,b) |
Gibt eine Geomtrie für den Teil von Geometrie a zurück, der sich nicht mit Geometrie b überschneidet (see also Difference) |
disjoint |
Liefert 1 (true), wenn die Geometrie keinen Raum teilen |
distance |
Liefert den kleinsten Abstand (basierend auf dem räumlichen Bezugssystem) zwischen zwei Geometrien in einer projizierten Einheit |
distance_to_vertex |
Liefert den Abstand entlang der Geomtrie zu einem gegebenen Stützpunkt |
end_point |
Liefert den letzten Knoten einer Geometrie (see also Extract specific vertices) |
extend |
Verlängert den Anfang und das Ende einer Liniengeometrie um einen gegebenen Betrag (see also Extend lines) |
exterior_ring |
Liefert den äußeren Ring eines Polygons als Linestring. Wenn die Geometrie kein Polygon ist, ist das Ergebnis NULL |
extrude(geom,x,y) |
Liefert eine extrudierte Version der Eingabe- (Multi-) Kurven- oder (Multi-) Liniengeomtrie mit einer durch x und y vorgegebenen Erweiterung |
flip_coordinates |
Gibt eine Kopie der Eingabegeometrie mit getauschten X- und Y-Koordinaten zurück (see also Swap X and Y coordinates) |
force_rhr |
Forces a geometry to respect the Right-Hand-Rule (see also Force right-hand-rule) |
geom_from_gml |
Liefert eine Geometrie erstellt aus einer GML-Darstellung der Geometrie |
geom_from_wkt |
Liefert eine Geometrie aus einer Well-Known-Text (WKT)-Darstellung |
geom_to_wkt |
Liefert eine Well-Known-Text (WKT)-Darstellung einer Geometrie ohne SRID-Metadaten |
geometry |
Liefert die Geometrie eines Objekts |
geometry_n |
Liefert die nth Geometrie aus einer Geometriecollection oder NULL wenn die Eingabe keine Collection ist |
hausdorff_distance |
Returns basically a measure of how similar or dissimilar two geometries are, with a lower distance indicating more similar geometries |
inclination |
Liefert die Neigung gemessen vom Zenit (0) zum Fußpunkt (180) von point_a zu point_b |
interior_ring_n |
Liefert die Geometrie des n-ten inneren Rings aus einer Polygongeometrie oder null, wenn die Geometrie kein Polygon ist |
intersection |
Liefert eine Geomtrie, die die gemeinsamen Teile von zwei Geometrien repräsentiert (siehe auch Intersection) |
intersects |
Prüft, ob sich zwei Geometrien schneiden. Liefert 1 (wahr,) wenn sich die Geometrien räumlich schneiden (einen beliebigen gemeinsamen Raum haben) und 0, wenn nicht. |
intersects_bbox |
Prüft ob sich der Begrenzungsrahmen einer Geometrie mit dem Begrenzungsrahmen einer anderen Geometrie überlappt. Gibt 1 (wahr) zurück, wenn sich die Begrenzungsrahmen der Geometrien räumlich überschneiden (einen beliebigen gemeinsamen Teilraum haben) und 0 wenn nicht |
is_closed |
Gibt wahr zurück wenn ein Linestring geschlossen ist (Start- und Endpunkt stimmen überein), falsch wenn ein Linestring nicht geschlossen ist und NULL wenn die Geometrie kein Linestring ist |
length |
Liefert die Länge eines Liniengeometrie Objekts (oder Länge einer Zeichenkette) |
line_interpolate_angle |
Liefert den Winkel parallel zu einer Liniengeometrie für eine vorgebenen Strecke entlang der Linie. Die Winkelangabe erfolgt in Grad im Uhrzeigersinn von Nord ausgehend. |
line_interpolate_point |
Gibt einen Punkt entsprechend der gegebenen Distanz entlang der Liniengeomtrie zurück. (siehe auch Interpolate point on line) |
line_locate_point |
Liefert den Abstand des nächsten Punktes auf einer Linie zu einem gegebenen Punkt. |
line_merge |
Returns a (Multi-)LineString geometry, where any connected LineStrings from the input geometry have been merged into a single linestring. |
line_substring |
Gibt den Teil einer Linie zwischen den gegebenen Start- und Enddistanzwerten (gemessen vom Beginn der Linie) (siehe auch Line substring) |
m |
Gibt den M-Wert einer Punktgeometrie zurück |
make_circle |
Erzeugt eine Kreisgeomtrie basierend auf Mittelpunkt und Radius |
make_ellipse |
Erzeugt eine Ellipsengeometrie basierend auf Mittelpunkt, Vorgabe der Axen und des Azimuts |
make_line |
Creates a line geometry from a series or an array of point geometries |
make_point(x,y,z,m) |
Erzeugt eine Punktgeometrie aus X- und Y- (und optional Z- oder M-) Werten |
make_point_m(x,y,m) |
Erzeugt eine Punktgeometrie aus X- und Y-Koordinaten und M-Werten |
make_polygon |
Liefert eine Polygongeometrie aus einem äußeren Ring und einer optionalen Liste von inneren Ringen |
make_rectangle_3points |
Creates a rectangle from 3 points |
make_regular_polygon |
Erzeugt ein regelmäßiges Polygon |
make_square |
Creates a square from a diagonal |
make_triangle |
Erzeugt ein Dreieckspolygon |
minimal_circle |
Gibt den minimalen umschließenden Kreis um die Eingabegeometrie zurück (siehe auch Minimum enclosing circles) |
nodes_to_points |
Gibt eine Multipunktgeometrie zurück, die alle Knoten der Eingabegeometrie enthält (siehe auch Extract vertices) |
num_geometries |
Liefert die Anzahl von Geometrien in Geometrycollections, oder null, wenn die Eingabegeometrie keine Collection ist |
num_interior_rings |
Liefert die Anzahl innerer Ringe eines Polygons oder einer Geometrycollection oder null, falls die Geometrie kein Polygon und keine Collection ist |
num_points |
Liefert die Anzahl von Stützpunkten einer Geometrie |
num_rings |
Liefert die Ringanzahl (ohne äußere Ringe) in einem Polygon oder einer Geometrycollection oder null, wenn die Eingabegeometrie weder Polygon noch Collection ist |
offset_curve |
Gibt eine seitlich zur Eingabeliniengeomtrie versetzte Linie zurück. Abstände werden im räumlichen Bezugssystem der Eingabegeomtrie angegeben. (siehe auch Offset lines) |
order_parts |
Sortiert die Teile eine Multigeometrie nach gegebenem Kriterium |
oriented_bbox |
Gibt den minimalen gedrehten Begrenzungsrahmen der Eingabegeometrie zurück (siehe auch Oriented minimum bounding box) |
overlaps |
Prüft, ob sich zwei Geometrien überlappen. Liefert wahr, wenn sich die Geometrien Raum teilen, die gleiche Dimension haben, aber nicht komplett ineinander enthalten sind |
perimeter |
Liefert den Perimeter eines Polygonobjekts. Berechnung erfolgen im Bezugssystem der Geometrie |
point_n |
Liefert einen bestimmten Knoten einer Geometrie (siehe auch Extract specific vertices) |
point_on_surface |
Liefert einen Punkt, der innerhalb der Fläche einer Geometrie liegt (siehe auch Point on Surface) |
pole_of_inaccessibility |
Berechnet den Pol der Unzugänglichkeit für eine Fläche. Es handelt sich um den Punkt innerhalb der einer Fläche, der den größten Abstand zur Flächenumrandung hat (siehe auch Pole of inaccessibility) |
project |
Returns a point projected from a start point using a distance, a bearing (azimuth) and an elevation in radians (see also Project points (Cartesian)) |
relate |
Liefert die Dimensional Extended 9 Intersection Model (DE-9IM) Darstellung der Beziehungen zwischen zwei Geometrien |
reverse |
Kehrt die Richtung einer Linie durch Umkehrung der Stützpunktreihenfolge um (siehe auch Reverse line direction) |
segments_to_lines |
Erzeugt aus jedem Liniensegment einer Linie der Eingabegeometrie eine Multiliniengeometrie (siehe auch Explode lines) |
shortest_line |
Liefert die kürzeste Linie, die zwei Geometrien verbindet. Die resultierende Linie beginnt bei Geometrie 1 und endet bei Geometrie 2 |
simplify |
Vereinfacht eine Geometrie durch Entfernen von Stützpunkten unter Nutzung einers entfernungsbasierten Schwellenwertes (siehe auch Simplify) |
simplify_vw |
Vereinfacht eine Geometrie durch Entfernen von Stützpunkten unter Nutzung eines flächenbasierten Schwellenwertes (siehe auch Simplify) |
single_sided_buffer |
Gibt eine Geomtrie zurück, die durch Pufferung einer Linie auf nur einer Seite entsteht. Abstände werden im räumlichen Bezugssystem der Geometrie angegeben (siehe auch Single sided buffer) |
smooth |
Glättet eine Geometrie indem Stützpunkte hinzugefügt werden, die die Ecken der Geometrie abrunden (siehe auch Smooth) |
start_point |
Liefert den ersten Knoten einer Geometrie (siehe auch Extract specific vertices) |
sym_difference |
Liefert eine Geometrie, die die Teile von zwei Geometrien enthält, die sich nicht überschneiden (siehe auch Symmetrical difference) |
tapered_buffer |
Erzeugt einen Puffer entlang einer Liniengeometrie wobei sich der Pufferdurchmesser gleichmäßig über die Länge der Linie ändert (see also Tapered buffers) |
touches |
Prüft, ob sich zwei Geometrien berühren. Liefert 1 (wahr), wenn sich die Geometrien mindestens einen Punkt gemeinsam haben, aber deren Inneres sich nicht überschneidet |
transform |
Liefert die vom Quell-KBS in das Ziel-KBS transformierte Geometrie (see also Reproject layer) |
translate |
Gibt eine räumlich versetzte Version der Geometrie zurück. Berechnungen erfolgen im räumlichen Bezugssystem der Geometrie (siehe auch Translate) |
union |
Liefert eine Geometrie die alle Punkte der Geometrien umfasst |
wedge_buffer |
Erzeugt einen von einer Punktgeometrie ausgehenden keilförmigen Puffer mit gegebenen Winkel und Radien (siehe auch also Create wedge buffers) |
within (a,b) |
Prüft, ob eine Geometrie in einer anderen enthalten ist. Liefert 1 (true), wenn die Geometrie komplett innerhalb der Geometrie b liegt |
x |
Liefert die X-Koordinate einer Punktgeometrie oder die X-Koordinate des Schwerpunktes bei anderen Geometrien |
x_max |
Liefert die maximale X-Koordinate einer Geometrie. Die Berechnung erfolgt im räumlichen Bezugssystem der Geometrie |
x_min |
Liefert die minimale X-Koordinate einer Geometrie. Die Berechnung erfolgt im räumlichen Bezugssystem der Geometrie |
y |
Liefert die Y-Koordinate einer Punktgeometrie oder die Y-Koordinate des Schwerpunktes bei anderen Geometrien |
y_max |
Liefert die maximale Y-Koordinate einer Geometrie. Die Berechnung erfolgt im räumlichen Bezugssystem der Geometrie |
y_min |
Liefert die minimale Y-Koodinate einer Geometrie. die Berechnung erfolgt im räumlichen Bezugssystem der Geometrie |
z |
Liefert die Z-Koordinate einer Punktgeometrie |
Einige Beispiele:
Rückgabe der X-Koordinate des Schwerpunktes des aktuellen Objektes:
x( $geometry )
Sendet einen Wert zur zugehörigen Objektfläche zurück:
CASE WHEN $area > 10 000 THEN 'Larger' ELSE 'Smaller' END
You can manipulate the current geometry using the variable
$geometry
to create a buffer or get a point on the geometry’s surface:buffer( $geometry, 10 ) point_on_surface( $geometry )
Given a point feature, generate a closed line (using
make_line
) around the point’s geometry:make_line( -- using an array of points placed around the original array_foreach( -- list of angles for placing the projected points (every 90°) array:=generate_series( 0, 360, 90 ), -- translate the point 20 units in the given direction (angle) expression:=project( $geometry, distance:=20, azimuth:=radians( @element ) ) ) )
14.2.2.13. Layout Funktionen¶
Diese Gruppe enthält Funktionen zur Beeinflussung der Eigenschaften von Drucklayoutelementen
Funktion |
Beschreibung |
---|---|
item_variables |
Returns a map of variables from a layout item inside this print layout |
An example:
Rückgabe des Maßstabes von ‚Map 0‘ im aktuellen Drucklayout:
map_get( item_variables('Map 0'), 'map_scale')
14.2.2.14. Kartenlayer¶
Diese Gruppe enthält eine Liste der im aktuellen Projekt verfügbaren Layer. Dies eröffnet einen komfortablen Weg, um Ausdrücke mit Verweis auf verschiedene Layer zu erstellen, z.B. beim Erstellen von Aggregaten, Attribut- oder räumlichen Abfragen.
It also provides some convenient functions to manipulate layers.
Funktion |
Beschreibung |
---|---|
decode_uri |
Takes a layer and decodes the uri of the underlying data provider. Available information depends on the data provider type. |
14.2.2.15. Kartenfunktionen¶
This group contains functions to create or manipulate keys and values of map data structures (also known as dictionary objects, key-value pairs, or associative arrays). Unlike the list data structure where values order matters, the order of the key-value pairs in the map object is not relevant and values are identified by their keys.
Funktion |
Beschreibung |
---|---|
from_json |
Loads a json-formatted string |
hstore_to_map |
Creates a map from a hstore-formatted string |
json_to_map |
Creates a map from a json-formatted string |
map |
Returns a map containing all the keys and values passed as pair of parameters |
map_akeys |
Returns all the keys of a map as an array |
map_avals |
Returns all the values of a map as an array |
map_concat |
Returns a map containing all the entries of the given maps. If two maps contain the same key, the value of the second map is taken. |
map_delete |
Returns a map with the given key and its corresponding value deleted |
map_exist |
Returns true if the given key exists in the map |
map_get |
Returns the value of a map, given it’s key |
map_insert |
Returns a map with an added key/value |
map_to_hstore |
Merges map elements into a hstore-formatted string |
map_to_json |
Merges map elements into a json-formatted string |
to_json |
Creates a json-formatted string from a map, an array or other value |
14.2.2.16. Mathematische Funktionen¶
Diese Gruppe enthält mathematische Funktionen (z.B. sqrt, sin und cos).
Funktion |
Beschreibung |
---|---|
abs |
Liefert den Betrag einer Zahl |
acos |
Liefert den inversen Kosinus eines Wert im Bogenmaß |
asin |
Liefert den inversen Sinus eines Wert im Bogenmaß |
atan |
Liefert den inversen Tangent eines Wertes im Bogenmaß |
atan2(y,x) |
Liefert den inversen Tangent von dy/dx durch Verwendung des Vorzeichens der beiden Argumente um den Quadranten des Ergebnisses festzulegen |
azimuth(a,b) |
Liefert auf Norden bezogenen Azimuth als Winkel im Bogenmaß im Uhrzeigersinn gemessen von der Vertikalen von punkt a zu punkt b |
ceil |
Rundet eine Zahl auf |
clamp |
Beschränke eine Eingabenwert auf einen gegebenen Bereichen |
cos |
Returns the cosine of an angle in radians |
degrees |
Wandelt Bogenmaß in Grad um |
exp |
Liefert den Exponential eines Wert |
floor |
Rundet eine Zahl ab |
inclination |
Liefert die Neigung gemessen vom Zenit (0) zum Fußpunkt (180) von point_a zu point_b. |
ln |
Liefert den natürlichen Logarithmus des übergebenen Ausdruck |
log |
Liefert den Wert des Logarithmus des gegebenen Werts und der Basis |
log10 |
Liefert den 10er-Logarithmus des gegebenen Ausdrucks |
max |
Liefert den größten Wert ungleich NULL aus einer Wertemenge |
min |
Liefert den kleinsten Wert ungleich NULL aus einer Wertemenge |
pi |
Liefert den Wert von pi für Berechnungen |
radians |
Wandelt Grad in Bogenmaß um |
rand |
Liefert eine zufällige Zahl aus dem durch Minimum und Maximum festgegelegten Bereichs (inklusiv) |
randf |
Liefert eine zufällige Fließkommazahl aus einem durch Minimum und Maximum gegebenen Bereichs (inklusiv) |
round |
Rundet auf eine bestimmte Stellenzahl |
scale_exp |
Wandelt einen bestimmten Wert aus einer Eingangsdomäne zu einem Leistungsbereich einer exponentielle Kurve |
scale_linear |
Wandelt einen gegebenen Wert des Eingabe- mit linearer Interpolation in einen Ausgabebereich |
sin |
Returns the sine of an angle in radians |
sqrt |
Liefert die Quadratwurzel eines Werts |
tan |
Returns the tangent of an angle in radians |
14.2.2.17. Operatoren¶
Diese Gruppe enthält Operatoren (z. B. ., +, -, *). Beachten Sie, dass für die meisten mathematischen Fubktionen unten gilt, ist eine Eingabe NULL, dann ist das Ergebnis auch NULL.
Funktion |
Beschreibung |
---|---|
a + b |
Addition von zwei Werten (a plus b) |
a - b |
Subtraktion von zwei Werten (a minus b) |
a * b |
Multiplikation von zwei Werten (a multipliziert mit b) |
a / b |
Division von zwei Werten (a dividiert durch b) |
a % b |
Rest der Division von a durch b (beispielsweise 7 % 2 = 1, oder 2 passt in 7 dreimal mit dem Rest 1) |
a ^ b |
Potenz von zwei Werten (zum Beispiel, 2^2=4 oder 2^3=8) |
a < b |
Vergleicht zwei Werte und ergibt 1, wenn der linke kleiner dem rechten Wert ist (a ist kleiner als b) |
a <= b |
Compares two values and evaluates to 1 if the left value is less than or equal to the right value |
a <> b |
Vergleicht zwei Werte und ergibt 1 wenn sie nicht gleich sind |
a = b |
Vergleicht zwei Werte und ergibt 1 wenn sie gleich sind |
a != b |
a und b sind nicht gleich |
a > b |
Vergleicht zwei Werte und ergibt 1, wenn der linke größer dem rechten Wert ist (a ist größer als b) |
a >= b |
Vergleicht zwei Werte und ergibt 1, wenn der linke größer oder gleich dem rechten Wert ist |
a ~ b |
a entspricht dem regulären Ausdruck b |
|| |
Verknüpft zwei Werte zusammen zu einer Zeichenkette. Wenn einer der beiden Werte NULL ist, ist das Ergebnis auch NULL. |
‚\n‘ |
Setzt eine neue Linie in einer Zeichenkette ein |
LIKE |
Liefert 1, wenn der erste Parameter zum gegebenen Muster passt |
ILIKE |
Liefert 1, wenn der erste Parameter ohne Berücksichtung der Groß-/Kleinschreibung zum gegebenen Muster passt (ILIKE kann statt LIKE benutzt werden ,damit die Groß-/Kleinschreibung berücksichtigt wird) |
a IS b |
Testet, ob zwei Werte identisch sind. Gibt 1 zurück, wenn a gleich b ist |
a OR b |
Gibt 1 zurück, wenn Bedingung a oder Bedingung b wahr ist |
a AND b |
Gibt 1 zurück, wenn Bedingung a und Bedingung b wahr sind |
NOT |
Negiert eine Bedingung |
„Column_name“ |
Value of the field Column_name, take care to not be confused with simple quote, see below |
‚Zeichenkette‘ |
einen Zeichenkettenwert, achten Sie darauf, es nicht mit doppelten Anführungszeichen zu verwechseln, siehe oben |
NULL |
ein Nullwert |
a IS NULL |
a hat keinen Wert |
a IS NOT NULL |
a hat einen Wert |
a IN (value[,value]) |
a ist unter den gelistet Werten |
a NOT IN (value[,value]) |
a ist nicht unter den gelisteten Werten |
Einige Beispiele:
Verbindet eine Zeichenkette und einen Wert von einem Spaltennamen:
'My feature''s id is: ' || "gid"
Test if the „description“ attribute field starts with the ‚Hello‘ string in the value (note the position of the
%
character):"description" LIKE 'Hello%'
14.2.2.18. Processing Functions¶
This group contains functions that operate on processing algorithms.
Funktion |
Beschreibung |
---|---|
parameter |
Returns the value of a processing algorithm input parameter |
14.2.2.19. Rasterfunktionen¶
Diese Gruppe enthält Funktionen zur Verarbeitung von Rasterlayern.
Funktion |
Beschreibung |
---|---|
raster_statistic |
Gibt eine Rasterlayer-Statistik von Rasterlayern zurück |
raster_value |
Gibt den Wert des Rasterbandes am angegebenen Punkt zurück |
14.2.2.20. Funktionen zu Datensätzen und Attributen¶
Diese Gruppe enthält Funktionen die sich auf datensatzbezeichner beziehen.
Funktion |
Beschreibung |
---|---|
$currentfeature |
Liefert das aktuellen Objekt. Dies kann mit der Funktion ‚attribute‘ verwendet werde um Attributwerte des aktuellen Objekts zu bestimmen. |
$id |
Liefert die Objektkennung der aktuellen Zeile |
attribute |
Gibt den Attributwert eines Objektes zurück |
attributes |
Returns a map of all attributes from a feature, with field names as map keys |
get_feature |
Gibt das erste Objekt eines Layers mit dem gegebenen Attributwert zurück |
get_feature_by_id |
Gibt das Objekt eines Layers mit der gegebenen Objekt-ID zurück |
is_selected |
Gibt zurück, ob ein Objekt ausgewählt ist |
num_selected |
Liefert die Anzahl der ausgewählten Objekte auf einem gegebenen Layer |
represent_value |
Returns the configured representation value for a field value (convenient with some widget types) |
sql_fetch_and_increment |
Manage autoincrementing values in SQLite databases |
uuid |
Generiert einen Universally Unique Identifier (UUID) für jede Zeile. Jede UUID hat eine Länge von 38 Zeichen. |
Einige Beispiele:
Liefert das erste Objekt in Layer „LayerA“ dessen Feld „id“ die selben Werte wie das Feld „name“ des aktuellen Objekts, hat (eine Art Jointure):
get_feature( 'layerA', 'id', attribute( $currentfeature, 'name') )
Berechnen Sie die Fläche des verbundenen Objekts aus dem vorherigen Beispiel:
area( geometry( get_feature( 'layerA', 'id', attribute( $currentfeature, 'name') ) ) )
14.2.2.21. Zeichenkettenfunktionen¶
Diese Gruppe enthält Funktionen für Zeichenketten (z.B. Ersetzen und in Großbuchstaben umwandeln).
Funktion |
Beschreibung |
---|---|
char |
Gibt das Zeichen mit dem zugehörigen Unicode-Kode aus |
concat |
Verketten mehrerer Zeichenkette zu einem |
format |
Formatiert eine Zeichenkette mit den gegebenen Argumenten |
format_date |
Formatiert einen Dateityp oder eine Zeichenkette in einen benutzerdefinierten Zeichenketten Formatstyp. |
format_number |
Liefert eine Zahl formatiert mit den lokalen Tausendertrennern (schneidet die Zahl auch auf die angegebene Stellenanzahl) |
left(string, n) |
Liefert einen Teilstring mit den ersten n Zeichen der Zeichenkette |
length |
Liefert die Länge einer Zeichenkette (oder Länge eines Liniengeometrie Objekts) |
lower |
wandelt eine Zeichenkette in Kleinbuchstaben um |
lpad |
Liefert eine links bis auf die gegebene Länge mit dem Füllzeichen aufgefüllte Zeichenkette |
regexp_match |
Liefert die Position der ersten Fundstelle eines regulären Ausdrucks in einer Zeichenkette oder 0 wenn die Teilzeichenkette nicht gefunden wurde |
regexp_replace |
Liefert eine Zeichenkette in der ein regulärer Ausdruck ersetzt wurde |
regexp_substr |
Liefert den Teil der Zeichenkette, die dem gegebenen regulären Ausdrucks entspricht |
replace |
Returns a string with the supplied string, array, or map of strings replaced by a string, an array of strings or paired values |
right(string, n) |
Liefert einen Teilstring mit den ersten n Zeichen der Zeichenkette |
rpad |
Liefert eine rechts bis auf die gegebene Länge mit dem Füllzeichen aufgefüllte Zeichenkette |
strpos |
Liefert die Position der ersten Fundstelle einer Teilzeichenkette in einer anderen Zeichenkette oder 0 wenn die Teilzeichenkette nicht gefunden wurde |
substr |
Liefert eine Teilzeichenkette |
title |
Wandelt alle Wörter einer Zeilenkette ins Titelformat (alle Wörter in Kleinbuchstaben bis auf die Anfangsbuchstaben in Großbuchstaben) |
trim |
Entfernt Leerzeichen am Anfang und Ende einer Zeichenkette (Leerzeichen, Tabulatoren usw) |
upper |
Wandelt eine Zeichenkette in Großbuchstaben. |
wordwrap |
Returns a string wrapped to a maximum/minimum number of characters |
Verkettung von Feldern
You can concatenate strings or field values using either ||
or +
operators or the concat
function, with some special characteristics:
The
+
operator also means sum up expression, so if you have an integer (field or numeric value) operand, this can be error prone and you better use the others:'My feature''s id is: ' + "gid" => triggers an error as gid is an integer
When any of the arguments is a NULL value, either
||
or+
will return a NULL value. To return the other arguments regardless the NULL value, you may want to use theconcat
function:"country_name" || NULL => NULL concat('My feature''s id is: ', NULL) => My feature's id is concat("firstname", "nickname", "lastname") => Chuck Norris (if empty nickname) "firstname" + "nickname" + "lastname" => NULL (if one field is empty)
For other cases, do at your convenience:
'My country is ' + "country_name" + ' (' + "country_code" + ')' 'My country is ' || "country_name" || ' (' || "country_code" || ')' concat('My country is ', "country_name", ' (', "country_code", ')') # All the above return: My country is France (FR)
14.2.2.22. Variables¶
This group contains dynamic variables related to the application, the project file and other settings. The availability of variables depends on the context:
von dem Layereigenschaften Dialog
vom Drucklayout
To use these variables in an expression, they should be preceded by the
@
character (e.g, @row_number
).
Funktion |
Beschreibung |
---|---|
algorithm_id |
The unique ID of an algorithm |
atlas_feature |
The current atlas feature (as feature object) |
atlas_featureid |
The current atlas feature ID |
atlas_featurenumber |
The current atlas feature number in the layout |
atlas_filename |
The current atlas file name |
atlas_geometry |
The current atlas feature geometry |
atlas_layerid |
The current atlas coverage layer ID |
atlas_layername |
The current atlas coverage layer name |
atlas_pagename |
The current atlas page name |
atlas_totalfeatures |
The total number of features in atlas |
canvas_cursor_point |
The last cursor position on the canvas in the project’s geographical coordinates |
cluster_color |
The color of symbols within a cluster, or NULL if symbols have mixed colors |
cluster_size |
The number of symbols contained within a cluster |
current_feature |
The feature currently being edited in the attribute form or table row |
current_geometry |
The geometry of the feature currently being edited in the form or the table row |
fullextent_maxx |
Maximum x value from full canvas extent (including all layers) |
fullextent_maxy |
Maximum y value from full canvas extent (including all layers) |
fullextent_minx |
Minimum x value from full canvas extent (including all layers) |
fullextent_miny |
Minimum y value from full canvas extent (including all layers) |
geometry_part_count |
The number of parts in rendered feature’s geometry |
geometry_part_num |
The current geometry part number for feature being rendered |
geometry_point_count |
The number of points in the rendered geometry’s part |
geometry_point_num |
The current point number in the rendered geometry’s part |
grid_axis |
The current grid annotation axis (eg, ‚x‘ for longitude, ‚y‘ for latitude) |
grid_number |
The current grid annotation value |
item_id |
The layout item user ID (not necessarily unique) |
item_uuid |
The layout item unique ID |
layer |
The current layer |
layer_id |
The ID of current layer |
layer_name |
The name of current layer |
layout_dpi |
The composition resolution (DPI) |
layout_name |
The layout name |
layout_numpages |
The number of pages in the layout |
layout_page |
The page number of the current item in the layout |
layout_pageheight |
The active page height in the layout (in mm) |
layout_pagewidth |
The active page width in the layout (in mm) |
legend_column_count |
The number of columns in the legend |
legend_filter_by_map |
Indicates if the content of the legend is filtered by the map |
legend_filter_out_atlas |
Indicates if the atlas is filtered out of the legend |
legend_split_layers |
Indicates if layers can be split in the legend |
legend_title |
The title of the legend |
legend_wrap_string |
The character(s) used to wrap the legend text |
map_crs |
The Coordinate reference system of the current map |
map_crs_acronym |
The acronym of the Coordinate reference system of the current map |
map_crs_definition |
The full definition of the Coordinate reference system of the current map |
map_crs_description |
The name of the Coordinate reference system of the current map |
map_crs_ellipsoid |
The acronym of the ellipsoid of the Coordinate reference system of the current map |
map_crs_proj4 |
The Proj4 definition of the Coordinate reference system of the current map |
map_crs_wkt |
The WKT definition of the Coordinate reference system of the current map |
map_extent |
The geometry representing the current extent of the map |
map_extent_center |
The point feature at the center of the map |
map_extent_height |
The current height of the map |
map_extent_width |
The current width of the map |
map_id |
The ID of current map destination. This will be ‚canvas‘ for canvas renders, and the item ID for layout map renders |
map_layer_ids |
The list of map layer IDs visible in the map |
map_layers |
The list of map layers visible in the map |
map_rotation |
The current rotation of the map |
map_scale |
The current scale of the map |
map_units |
The units of map measurements |
notification_message |
Content of the notification message sent by the provider (available only for actions triggered by provider notifications). |
parent |
Refers to the current feature in the parent layer, providing access to its attributes and geometry when filtering an aggregate function |
project_abstract |
The project abstract, taken from project metadata |
project_area_units |
The area unit for the current project, used when calculating areas of geometries |
project_author |
The project author, taken from project metadata |
project_basename |
The basename of current project’s filename (without path and extension) |
project_creation_date |
The project creation date, taken from project metadata |
project_crs |
The Coordinate reference system of the project |
project_crs_arconym |
The acronym of the Coordinate reference system of the project |
project_crs_definition |
The full definition of the Coordinate reference system of the project |
project_crs_description |
The description of the Coordinate reference system of the project |
project_crs_ellipsoid |
The ellipsoid of the Coordinate reference system of the project |
project_crs_proj4 |
The Proj4 representation of the Coordinate reference system of the project |
project_crs_wkt |
The WKT (well known text) representation of the coordinate reference system of the project |
project_distance_units |
The distance unit for the current project, used when calculating lengths of geometries and distances |
project_ellipsoid |
The name of the ellipsoid of the current project, used when calculating geodetic areas or lengths of geometries |
project_filename |
The filename of the current project |
project_folder |
The folder of the current project |
project_home |
The home path of the current project |
project_identifier |
The project identifier, taken from the project’s metadata |
project_keywords |
The project keywords, taken from the project’s metadata |
project_last_saved |
Date/time when project was last saved. |
project_path |
The full path (including file name) of the current project |
project_title |
The title of current project |
project_units |
The units of the project’s CRS |
qgis_locale |
The current language of QGIS |
qgis_os_name |
The current Operating system name, eg ‚windows‘, ‚linux‘ or ‚osx‘ |
qgis_platform |
The QGIS platform, eg ‚desktop‘ or ‚server‘ |
qgis_release_name |
The current QGIS release name |
qgis_short_version |
The current QGIS version short string |
qgis_version |
The current QGIS version string |
qgis_version_no |
The current QGIS version number |
row_number |
Speichert die Zahl der aktuellen Reihe |
snapping_results |
Gibt Zugriff auf die Einrasthinweise beim Digitalisieren eines Objektes (nur beim Hinzufügen von Objekten verfügbar) |
scale_value |
The current scale bar distance value |
symbol_angle |
The angle of the symbol used to render the feature (valid for marker symbols only) |
symbol_color |
The color of the symbol used to render the feature |
symbol_count |
The number of features represented by the symbol (in the layout legend) |
symbol_id |
The Internal ID of the symbol (in the layout legend) |
symbol_label |
The label for the symbol (either a user defined label or the default autogenerated label - in the layout legend) |
user_account_name |
The current user’s operating system account name |
user_full_name |
The current user’s operating system user name |
Wert |
The current value |
with_variable |
Erlaubt das Setzen einer Variable für die Verwendung in einem Ausdruck und vermeidet so die wiederholte Neuberechnung desselben Wertes |
Einige Beispiele:
Return the X coordinate of a map item center in layout:
x( map_get( item_variables( 'map1'), 'map_extent_center' ) )
Return, for each feature in the current layer, the number of overlapping airport features:
aggregate( layer:='airport', aggregate:='count', expression:="code", filter:=intersects( $geometry, geometry( @parent ) ) )
Get the object_id of the first snapped point of a line:
with_variable( 'first_snapped_point', array_first( @snapping_results ), attribute( get_feature_by_id( map_get( @first_snapped_point, 'layer' ), map_get( @first_snapped_point, 'feature_id' ) ), 'object_id' ) )
14.2.2.23. Kürzlich verwendete Funktionen¶
This group contains recently used functions. Depending on the context of its usage (feature selection, field calculator, generic), recently applied expressions are added to the corresponding list (up to ten expressions), sorted from more to less recent. This makes it easy to quickly retrieve and reapply previously used expressions.
14.2.3. Funktions Editor¶
Mit dem Reiter Funktionseditor ist man in der Lage, eigene Funktionen mit Python zu schreiben. Dies bietet einen einfachen und komfortablen Weg, um besondere Anforderungen zu erfüllen, die nicht durch die enthaltenen Funktionen abgedeckt werden.
Um eine neue Funtkion zu erstellen:
Geben Sie einen Namen in das sich öffnende Formular ein und drücken dann auf OK.
Ein neues Element mit dem vergebenen Namen wird nun im linken Bedienfeld des Funktionseditor bereitgestellt; dabei handelt es sich um eine Python
.py
Datei, basierend auf einer QGIS Template-Datei, gespeichert im Ordner/python/expressions
im Verzeichnis des aktiven :ref:`user profile `.Das rechte Bedienfeld stellt den Inhalt der Datei dar: ein Python Skript Template. Aktualisieren den Kode und die Hilfeienträge entsprechend ihrer Erfordernisse.
Drücken Sie auf die Schaltfläche Lade- und Speicherfunktionen. Die von ihnen geschriebene Funktion wird in der Liste der Funktionen im Reiter Ausdruck in der Voreinstellung in der Gruppe
Custom
hinzugefügt.Haben Sie Spaß mit ihrer neuen Funktion.
Wenn die Funktion verbessert werden soll, geht man zum Reiter Funktionseditor, nimmt die Änderungen vor und drückt erneut auf die Schaltfläche Lade- und Speicherfunktionen. Damit werden die Änderungen in der Datei und somit auch im Reiter Ausdruck verfügbar.
Benutzerdefinierte Pythonfunktionen werden im Profilverzeichnis des Nutzer gespeichert. Das heißt das QGIS beim Start automatische alle Funktionen des aktuellen Nutzerprofils lädt. Beachten Sie, dass neue Funktionen nur im Ordner /python/expressions
gespeichert werden und nicht in der Projektdatei. Wenn Sie ein Projekt mit benutzerdefinierten Funktionen verteilen möchten, müssen Sie auch die Datei .py
im Ordner /python/expressions
mitliefern.
Hier ist ein kurzes Beispiel, wie Sie eine eigene Funktion erzeugen:
from qgis.core import *
from qgis.gui import *
@qgsfunction(args='auto', group='Custom')
def my_sum(value1, value2, feature, parent):
"""
Calculates the sum of the two parameters value1 and value2.
<h2>Example usage:</h2>
<ul>
<li>my_sum(5, 8) -> 13</li>
<li>my_sum("field1", "field2") -> 42</li>
</ul>
"""
return value1 + value2
Diese kurze Beispiel erzeugt eine Funktion my_sum
mit zwei Werten. Bei Nutzung der Funktionsargumentes args='auto'
wird die Anzahl der erforderlichen Argumente aus der Anzahl der in Python definierten Argumente berechnet (minus 2 - feature
, und parent
).
Die Funktion kann in Ausdrücken verwendet werden:
Weitere Informationen über das Erstellen von Python-Kodes können in PyQGIS-Entwicklerkochbuch gefunden werden.