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:

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.

../../../_images/function_list.png

Abb. 14.65 Der Ausdruck Reiter

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 NULL zurückgegeben.

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 the concat 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 expressionSelect Objekte über Ausdruck wählen Dialog

  • von dem calculateField Feldrechner Dialog

  • 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.

../../../_images/function_editor.png

Abb. 14.66 Der Funktionseditor Reiter

Um eine neue Funtkion zu erstellen:

  1. Drücken Sie auf die signPlus New File Schaltfläche.

  2. 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 `.

  3. Das rechte Bedienfeld stellt den Inhalt der Datei dar: ein Python Skript Template. Aktualisieren den Kode und die Hilfeienträge entsprechend ihrer Erfordernisse.

  4. Drücken Sie auf die Schaltfläche start 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.

  5. Haben Sie Spaß mit ihrer neuen Funktion.

  6. Wenn die Funktion verbessert werden soll, geht man zum Reiter Funktionseditor, nimmt die Änderungen vor und drückt erneut auf die Schaltfläche start 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:

../../../_images/customFunction.png

Abb. 14.67 Benutzerdefinierte Funktion im Reiter Ausdruck

Weitere Informationen über das Erstellen von Python-Kodes können in PyQGIS-Entwicklerkochbuch gefunden werden.