Expressions

Basées sur les données des couches et les fonctions par défaut ou celles définies par l’utilisateur, les Expressions constituent un moyen efficace de manipuler la valeur d’un attribut, d’une géométrie ou d’une variable afin de modifier dynamiquement le style d’une géométrie, le contenu ou la position d’une étiquette, la valeur d’un diagramme, la hauteur d’un objet de mise en page, de sélectionner des entités ou créer des champs virtuels…

Le constructeur de chaîne d’expression

Le Constructeur de chaîne d’expression, principale fenêtre de création des expressions, est accessible en maints endroits dans QGIS, et particulièrement:

Le constructeur d’expression vous donne accès à:

  • l’onglet Expression qui, grâce à un large panel de fonctions prédéfinies, vous permet d’écrire et vérifier l’expression à utiliser;
  • l’onglet Éditeur de fonctions qui permet d’étendre cette liste par la création de vos propres fonctions.

Exemples d’utilisation des expressions:

  • A partir de la Calculatrice de champ, calculer le champ « pop_density » en utilisant les champs « total_pop » et « area_km2 »:

    "total_pop" / "area_km2"
    
  • Mettre à jour le champ « density_level » avec les catégories basées sur les valeurs de « pop_density »:

    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
    
  • Appliquer un style catégorisé à l’ensemble des entités selon que le prix moyen des maisons est inférieur ou non à 10000€ le mètre carré:

    "price_m2" > 10000
    
  • En utilisant l’outil « Sélectionner à l’aide d’une expression… », sélectionner toutes les entités qui représentent des surfaces avec une « grande densité de population » et dont le prix moyen des maisons est supérieur à 10000€ le mètre carré:

    "density_level" = 'High population density' and "price_m2" > 10000
    

    De la même manière, l’expression précédente peut également être employée pour définir quelles entités doivent être étiquetées ou affichées sur la carte.

L’utilisation des expressions vous offre de nombreuses possibilités.

Astuce

Utiliser des paramètres nommés pour améliorer la lecture des expressions

Certaines fonctions ont besoin de définir de nombreux paramètres. Le moteur d’expression permet l’utilisation de paramètres nommés. Cela signifie qu’au lieu d’écrire une expression cryptique du style clamp( 1, 2, 9), vous pouvez écrire clamp( min:=1, value:=2, max:=9). Cela permet également d’interchanger l’ordre dans lequel vous indiquez les paramètres, par exemple clamp( value:=2, max:=9, min:=1). Utiliser des paramètres nommés aide à clarifier quels arguments se réfèrent à quelle fonction, ce qui est utile si vous relisez cette expression à une date ultérieure !

Liste des fonctions

L’onglet Expression fournit l’interface principale pour écrire des expressions à l’aide de fonctions, attributs de couche et valeurs. Il contient les gadgets suivants :

  • Une surface d’éditeur d’expression pour écrire ou coller des expressions. L’autocomplétion est disponible pour écrire vos expressions plus rapidement :

    • Les noms de variables, de fonctions ou d’attributs correspondants au text d’entrée sont indiqués en-dessous : utiliser les touches de flèches Up et Down de votre clavier pour naviguer entre les éléments proposés et appuyer sur la touche Tab pour insérer l’élément dans l’expression ou bien cliquer sur l’élément souhaité.
    • Les paramètres des fonctions sont affichés lors de leur complétion.

    QGIS vérifie également la validité de votre expression et met en valeur les erreurs avec :

    • Un soulignement : pour les fonctions inconnues, fausses ou des arguments invalides ;
    • Un surlignage : pour toutes les autres erreurs (par exemple une parenthèse manquante, un caractère inattendu) à une position unique.

    Astuce

    Documentez vos expressions avec des commentaires

    Lorsque vous utilisez une expression complexe, il est conseillé d’ajouter du texte soit comme commentaire multiligne, soit dans la ligne pour vous aider à vous en souvenir.

    /*
    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
    )
    
  • Sous la zone l’éditeur d’expression, un Aperçu du résultat vous permet de visualiser le résultat de l’expression évaluée sur la première entité de la couche. En cas d’erreur, cela l’indique et vous pouvez accéder aux détails qui vous sont fournis par un hyperlien.

  • Un sélecteur de fonctions affiche la liste des fonctions, des variables, des champs… organisés par groupes. Une boîte de recherche est disponible pour filtrer la liste et trouver rapidement une fonction particulière ou un champ. Double-cliquer sur le nom d’un objet l’ajoute au texte de l’expression en cours de rédaction dans la zone d’éditeur.

  • Un onglet d’aide affiche l’aide pour chaque objet sélectionné dans le sélecteur de fonction.

    Astuce

    Faites un Ctrl+Clic lorsque vous survolez le nom d’une fonction dans une expression pour afficher automatiquement son aide dans la boîte de dialogue.

  • Un onglet des valeurs de champs s’affiche lorsqu’un champ est sélectionné, un échantillon de ses valeurs est proposé pour aider à insérer des valeurs d’attributs d’une couche. Double-cliquer sur une valeur l’ajoute dans le texte de l’expression.

Astuce

Il arrive que le panneau de droite, qui montre l’aide des fonctions ou les champs des valeurs soit caché (invisible) dans la boîte de dialogue. Cliquer sur les boutons Montrer les valeurs ou Montrer l’aide pour le faire réapparaître.

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

L’onglet Expression

Fonctions d’agrégats

Ce groupe contient des fonctions pour agréger des valeurs sur des couches et des champs.

Fonction Description
aggregate Renvoie une valeur agrégée calculée en utilisant les entités d’une autre couche
array_agg Renvoie un tableau de valeurs agrégées à partir d’un champ ou d’une expression.
collect Renvoie la géométrie multipartie des géométries agrégées à partir d’une expression
concatenate Renvoie toutes les chaînes de caractères agrégées d’un champ ou d’une expression, jointes par un délimiteur
count Renvoie le décompte des entités correspondantes
count_distinct Renvoie le décompte des valeurs distinctes
count_missing Renvoie le décompte des valeurs manquantes (null)
iqr Renvoie la plage inter-quartiles d’un champ ou d’une expression
majority Renvoie les valeurs majoritaires (les valeurs les plus fréquentes) d’un champ ou d’une expression
max_length Renvoie la longueur maximale des chaînes de caractères d’un champ ou d’une expression
maximum Renvoie la valeur maximale d’un champ ou d’une expression.
mean Renvoie la valeur moyenne d’un champ ou d’une expression.
median Renvoie la valeur médiane d’un champ ou d’une expression.
min_length Renvoie la longueur minimale des chaînes de caractères d’un champ ou d’une expression.
minimum Renvoie la valeur minimale d’un champ ou d’une expression.
minority Renvoie la valeur minoritaire (la moins fréquente) d’un champ ou d’une expression.
q1 Renvoie le premier quartile d’un champ ou d’une expression.
q3 Renvoie le troisième quartile d’un champ ou d’une expression.
range Renvoie la plage de valeur (maximum - minimum) d’un champ ou d’une expression.
relation_aggregate Renvoie une valeur agrégée, calculée à partir de toutes les entités enfants correspondantes dans la couche en relation.
stdev Renvoie l’aggrégat de l’écart-type des valeurs d’un champ ou d’une expression.
sum Renvoie l’aggrégat des sommes de valeurs d’un champ ou d’une expression.

Exemples:

  • Retourner le maximum du champ « passengers » depuis les entités groupées sur l’attribut « station_class »

    maximum("passengers", group_by:="station_class")
    
  • Calculer le nombre de total de passagers pour toutes les stations contenues à l’intérieur de l’entité sélectionnée par l’atlas

    aggregate('rail_stations','sum',"passengers",
      intersects(@atlas_geometry, $geometry))
    
  • Retourner la moyenne du champ « field_from_related_table » pour tous les entités enfants correspondants à l’aide de la relation “my_relation” depuis la couche

    relation_aggregate('my_relation', 'mean', "field_from_related_table")
    

    ou

    relation_aggregate(relation:='my_relation', aggregate := 'mean',
      expression := "field_from_related_table")
    

Fonctions Listes

pour la création et la manipulation de listes (également appelés structures de données de liste). L’ordre des valeurs dans la liste importe, contrairement à la structure de données «carte» <maps_functions>`, où l’ordre des paires de clés-valeurs n’est pas pertinent et les valeurs sont identifiées par leurs clés.

Fonction Description
array Renvoie une liste contenant toutes les valeurs passées comme paramètre.
array_append Renvoie une liste avec la valeur donnée ajoutée à la fin.
array_cat Renvoie une liste contenant tous les listes données concaténées.
array_contains Renvoie vrai si une liste contient la valeur donnée.
array_distinct Renvoie une liste contenant les valeurs distinctes de la liste donnée.
array_filter Retourne une liste avec seulement les éléments pour lesquels l’expression est vraie.
array_find Renvoie l’index (0 pour le premier) d’une valeur dans une liste. Renvoie -1 si la valeur n’est pas trouvée.
array_first Retourne la première valeur d’une liste.
array_foreach Retourne une liste avec l’expression évaluée pour chaque élément.
array_get Renvoie la Nième (0 correspondant à la première) valeur d’une liste.
array_insert Renvoie une liste avec la valeur ajoutée donnée à la position donnée.
array_intersect Renvoie true si tous les éléments de array_1 sont présents dans array_2
array_last Renvoie la dernière valeur d’une liste.
array_length Renvoie le nombre d’éléments d’une liste.
array_prepend Renvoie une liste avec la valeur donnée ajoutée à son début.
array_remove_all Renvoie une liste dont les entrées correspondantes à la valeur donnée ont été supprimées.
array_remove_at Renvoie une liste dont les index donnés ont été supprimés.
array_reverse Renvoie la liste donnée avec des valeurs dans l’ordre inverse.
array_slice Renvoie les valeurs de la liste depuis l’argument index start_pos jusqu’à et en l’incluant l’argument index end_pos.
array_to_string Concatène les éléments d’une liste en une chaîne de caractères séparée par un délimiteur et utilisant en option une chaîne de caractères pour les valeurs vides.
generate_series Crée une liste contenant une suite de chiffres.
regexp_matches Renvoie une liste de toutes les chaînes capturées par des groupes de capture, dans l’ordre dans lequel les groupes eux-mêmes apparaissent dans l’expression régulière fournie par une chaîne.
string_to_array Découpe une chaîne de caractères en une liste en utilisant le délimiteur et l’éventuelle chaîne de remplacement pour les valeurs vides.

Fonctions de Couleur

Ce groupe contient des fonctions pour manipuler les couleurs.

Fonction Description
color_cmyk Renvoie une chaîne de caractères représentant une couleur basée sur ses composantes cyan, magenta, jaune et noire
color_cmyka Renvoie une chaîne de caractères représentant une couleur basée sur ses composantes cyan, magenta, jaune et noire et alpha (transparence)
color_grayscale_average Applique un filtre par niveau de gris et renvoie une valeur littérale (en chaîne de caractères) depuis une couleur en entrée.
color_hsl Renvoie une chaîne de caractères représentant une couleur basée sur ses attributs de teinte, de saturation et de luminosité
color_hsla Renvoie une chaîne de caractères représentant une couleur basée sur ses attributs de teinte, de saturation, de luminosité et alpha (transparence).
color_hsv Renvoie une chaîne de caractères représentant une couleur basée sur ses attributs de teinte, de saturation et de valeur
color_hsva Renvoie une chaîne de caractères représentant une couleur basée sur ses attributs de teinte, de saturation, de valeur et alpha (transparence)
color_mix_rgb Renvoie une chaîne de caractères représentant une couleur basée sur ses composantes rouge, verte, bleue et sur la valeur alpha (transparence).
color_part Renvoie une composante spécifique d’une chaîne de caractères de couleur, ex: la composante rouge ou la composante alpha
color_rgb Renvoie une chaîne de caractères représentant une couleur basée sur ses composantes rouge, verte, bleue
color_rgba Renvoie une chaîne de caractères représentant une couleur basée sur ses composantes rouge, verte, bleue et sur la valeur alpha (transparence)
create_ramp Renvoie une rampe de dégradé à partir d’une carte de chaînes de couleurs et d’étapes.
darker Renvoie une chaîne de caractères de couleur plus sombre (ou plus claire)
lighter Renvoie une chaîne de caractères de couleur plus claire (ou plus sombre)
project_color Renvoie une couleur du jeu de couleurs du projet
ramp_color Renvoie une chaîne de caractères représentant la couleur d’une rampe de couleur
set_color_part Définit une composante spécifique d’une chaîne de caractères de couleur, ex: la composante rouge ou la composante alpha

Fonctions conditionnelles

Ce groupe contient des fonctions permettant de gérer des conditions dans les expressions.

Fonction Description
CASE WHEN … THEN … END Évalue une expression et renvoie un résultat si vrai. Vous pouvez tester plusieurs conditions
CASE WHEN … THEN … ELSE … END Évalue une expression et renvoie un résultat différent selon qu’elle est vraie ou fausse. Vous pouvez tester plusieurs conditions
coalesce Renvoie la première valeur non NULL de la liste en expression.
if Teste une condition et renvoie un résultat selon la condition de vérification

Quelques exemples:

  • Envoie une valeur en retour si la première condition est vraie, sinon une autre valeur:

    CASE WHEN "software" LIKE '%QGIS%' THEN 'QGIS' ELSE 'Other' END
    

Fonctions de conversion

Ce groupe contient des fonctions pour convertir un type de données en un autre (par ex. chaîne à entier, entier à chaîne).

Fonction Description
to_date Convertit une chaîne de caractère en objet date
to_datetime Convertit une chaîne de caractères en objet de date et de temps
to_dm Convertit une coordonnée en degrés, minutes.
to_dms Convertit une coordonnée en degrés, minutes, secondes.
to_int Convertit une chaîne de caractères en nombre entier
to_interval Convertit une chaîne de caractère en objet d’intervalle de temps (peut être utilisée pour récupérer les jours, heures, mois, etc. d’une date)
to_real Convertit une chaîne de caractères en nombre réel
to_string Convertit un nombre en chaîne de caractères
to_time Convertit une chaîne de caractères en objet de temps

Fonctions personnalisées

Ce groupe contient les fonctions créées par l’utilisateur. Consultez Éditeur de fonction pour plus de détails.

Fonctions de Date et Heure

Ce groupe contient des fonctions permettant de gérer des données de date et d’heure.

Fonction Description
age Renvoie sous forme d’intervalle la différence entre deux dates ou deux heures.
day Extrait le jour d’une date, ou d’un objet datetime, ou un nombre de jours depuis un intervalle
day_of_week Renvoie le nombre correspondant au jour de la semaine pour une date ou une date et heure spécifique.
epoch Retourne l’intervale en millisecondes entre l’epoch unix et une date donnée.
hour Extrait l’heure à partir d’une valeur de temps ou de date et de temps ou extrait e nombre d’heures dans un intervalle
minute Extrait les minutes composant un temps ou une date ainsi que le nombre de minutes dans un intervalle
month Extrait le mois depuis une date ou une date et heure, ou le nombre de mois dans un intervalle.
now Renvoie la date et le temps actuels
second Extrait les secondes d’un temps ou d’une date et d’un temps ou extrait le nombre de secondes dans un intervalle de temps.
week Extrait le numéro de semaine d’une date ou d’une date et heure, ou le nombre de semaines dans un intervalle de temps.
year Extrait l’année d’une date ou d’une date et heure, ou le nombre d’années d’un intervalle de temps.

Ce groupe partage également plusieurs fonctions avec le groupe Fonctions de conversion (to_date, to_time, to_datetime, to_interval) et avec le groupe Fonctions de Chaîne (format_date).

Quelques exemples :

  • Obtenir pour ce jour le mois et l’année en format « numéro_du_mois/année » :

    format_date(now(),'MM/yyyy')
    -- Returns '03/2017'
    

Hormis ces fonctions, soustraire des dates, dates-horaires ou temps avec l’opérateur - (moins) va retourner un intervalle de temps.

Ajouter ou soustraire un intervalle de temps à une date, une date-horaire ou un temps en utilisant les opérateurs + (plus) ou - (moins) va retourner une date-horaire.

  • Obtenir le nombre de jours depuis la sortie de QGIS 3.0 :

    to_date('2017-09-29') - to_date(now())
    -- Returns <interval: 203 days>
    
  • La même chose avec le temps :

    to_datetime('2017-09-29 12:00:00') - to_datetime(now())
    -- Returns <interval: 202.49 days>
    
  • Obtenir la date-horaire de 100 jours à partir de maintenant :

    now() + to_interval('100 days')
    -- Returns <datetime: 2017-06-18 01:00:00>
    

Note

Sauvegarder des dates, dates-horaires et intervalles de temps dans des champs

La possibilité de stocker les valeurs date, temps et date-horaire directement dans des champs peut dépendre du fournisseur de la source de données (par exemple, un Shapefile accepte le format date, mais pas le format date-horaire ou temps). Voici quelques suggestions pour passer outre cette limitation :

  • Les dates, date-horaires et temps peuvent être stockées dans des attributs en format texte avec l’utilisation de la fonction to_format().
  • Les intervalles de temps peuvent être sauvegardés en format de nombre Entier ou Décimal avec l’utilisation d’une des fonctions d’extraction de date (par exemple day() pour avoir la durée exprimée en jours).

Champs et Valeurs

Contient la liste des champs de la couche.

Double-cliquer sur le nom d’un champ pour l’ajouter à votre expression. Vous pouvez aussi taper le nom de votre champ entre guillemets ou son :ref:`alias `<configure_field>.

Pour retrouver les valeurs des champs à utiliser dans une expression, sélectionner le champ et dans l’onglet de champ qui s’affiche choisir entre 10 Samples et All Unique. Les valeurs voulues sont alors affichées et vous pouvez utiliser la boîte Search au sommet de l’onglet pour filtrer le résultat. Des valeurs échantillonnées peuvent également être obtenues avec un clic-droit sur un champ.

Pour ajouter une valeur à une expression que vous êtes en train d’écrire, double-cliquez dessus dans la liste proposée. Si la valeur n’est pas une chaîne de caractères, elle sera mise entre apostrophes, sinon, aucune apostrophe n’est nécessaire.

Fonctions de correspondance floue

Ce groupe contient des fonctions destinées à réaliser des comparaisons floues entre les valeurs.

Fonction Description
hamming_distance Renvoie le nombre de caractères situés à des positions correspondantes aux chaînes de caractères en entrée, où les caractères sont différents.
levensheim Renvoie le nombre minimum d’opérations d’édition de caractère (insertions, suppressions, substitutions) requis pour transformer une chaîne de caractères en une autre. Mesure la similitude entre deux chaînes de caractères.
longest_common_substring Renvoie la longueur de la sous-chaîne de caractères commune la plus longue entre deux chaînes de caractères.
soundex Renvoie la représentation Soundex d’une chaîne de caractères.

Fonctions Générales

Ce groupe contient des fonctions génériques.

Fonction Description
env Retourne le contenu d’une variable d’environnement en tant que chaîne de caractères. Si la variable n’est pas trouvée, NULL sera renvoyé.
eval Évalue une expression passée en chaîne de caractères. Cette fonction est utilisée pour produire les paramètres dynamiques tels que les variables de contexte ou les champs
is_layer_visible Renvoie «vrai» si la couche spécifiée est visible.
layer_property Renvoie une propriété de couche ou la valeur de ses métadonnées. Il peut s’agir du nom de la couche, son SCR, son type géométrique, son nombre d’entités…
var Renvoie la valeur stockée dans une variable. Voir les fonctions « Variables » plus bas.
with_variable Crée et définit une variable pour tout code d’expression qui sera fourni comme troisième argument. Ceci n’est utile que pour des expressions compliquées, où la même valeur calculée doit être utilisée dans différents endroits.

Fonctions de Géométrie

Ce groupe contient des fonctions qui opèrent sur des objets géométriques (par ex. longueur, aire).

Fonction Description
$area Renvoie la surface de l’entité courante
$geometry Renvoie la géométrie de l’entité courante (peut être utilisée en combinaison avec d’autres fonctions)
$length Renvoie la longueur de l’entité courante
$perimeter Renvoie le périmètre de l’entité actuelle
$x Renvoie la coordonnée X de l’entité actuelle.
$x_at(n) Renvoie la coordonnée X du nième noeud de la géométrie de l’entité actuelle.
$y Renvoie la coordonnée Y de l’entité actuelle.
$y_at(n) Renvoie la coordonnée Y du nième noeud de la géométrie de l’entité actuelle.
angle_at_vertex Renvoie la bissectrice de l’angle (angle moyen) de la géométrie pour un sommet spécifique d’une géométrie de polyligne. Les angles sont en degrés dans le sens des aiguilles d’une montre à partir du nord.
area Renvoie la surface d’un objet géométrique polygonal. Les calculs sont effectués dans le Système Spatial de Référence de cette géométrie.
azimuth Renvoie l’azimut par rapport au nord sous forme d’angle en radians mesuré dans le sens des aiguilles d’une montre à partir de la verticale entre point_a et point_b.
boundary Renvoie pour chaque entité la ou les limites de celle ci (c’est-à-dire la limite topologique de la géométrie, voir aussi Limite).
bounds Renvoie une géométrie représentant l’emprise d’une géométrie en entrée. Les calculs sont effectués dans le Système de Coordonnées de Référence de cette géométrie (voir aussi Emprise).
bounds_height Renvoie la hauteur de l’emprise d’une géométrie. Les calculs sont effectués dans le Système de Coordonnées de Référence de cette géométrie.
bounds_width Renvoie la largeur de l’emprise d’une géométrie. Les calculs sont effectués dans le Système de Coordonnées de Référence de cette géométrie.
buffer Renvoie une géométrie qui représente l’ensemble des points dont la distance à la géométrie en entrée est inférieure ou égale à une certaine distance. Les calculs sont effectués dans le Système de Coordonnées de Référence de cette géométrie (voir aussi Tampon).
buffer_by_m Crée autour d’une ligne une zone tampon dont le diamètre varie en fonction des mesures « M » à chaque nœud (voir aussi Variable width buffer (by M value)).
centroid Renvoie le centre géométrique d’une géométrie (voir aussi Centroïdes).
closest_point Renvoie le point d’une géométrie qui est le plus proche d’une deuxième géométrie
combine Renvoie la combinaison de deux géométries
contains(a,b) Renvoie 1 (vrai) si et seulement si aucun point de la géométrie b ne se situe à l’extérieur de la géométrie a et qu’au moins un point de l’intérieur de b est situé à l’intérieur de a.
convex_hull Renvoie l’enveloppe convexe d’une géométrie (elle représente la géométrie convexe minimale qui entoure toutes les géométries du jeu de données, voir aussi Enveloppe convexe).
crosses Renvoie 1 (vrai) si les géométries fournies contiennent quelques points intérieurs en commun, sans que tous les points ne le soient.
difference(a,b) Renvoie une géométrie qui représente la partie de la géométrie A qui ne s’intersecte pas avec la géométrie B (voir aussi Difference).
disjoint Renvoie 1 (vrai) si les géométries ne partagent aucun espace ensemble.
distance Renvoie la distance minimale (basée sur le Système de Coordonnée de Référence) entre deux géométries dans les unités de la projection.
distance_to_vertex Renvoie la distance le long de la géométrie à un sommet spécifié
end_point Renvoie le dernier nœud d’une géométrie (voir aussi Extract specific vertices).
extend Prolonge le départ et l’arrivée d’une géométrie polyligne d’une valeur spécifiée (voir aussi Extend lines)
exterior_ring Renvoie une ligne représentant l’anneau extérieur d’une géométrie de polygone. Si la géométrie n’est pas un polygone alors le résultat sera NULL.
extrude(geom,x,y) Renvoie une version extrudée d’une géométrie (Multi-)Courbe ou d’une (Multi-)Polyligne avec une extension indiquée par X et Y.
flip_coordinates Retourne une copie de la géométrie avec les valeurs de coordonnées X et Y inversées. Il peut être utilisé pour réparer des géométries dont les valeurs de latitude et de longitude ont été inversées (voir aussi Swap X and Y coordinates).
geom_from_gml Renvoie une géométrie créée à partir d’une représentation géométrique GML
geom_from_wkt Renvoie une géométrie créée à partir d’une représentation well-known text (WKT)
geom_to_wkt Renvoie la représentation well-known text (WKT) d’une géométrie sans les métadonnées de SRID
geometry Renvoie la géométrie d’une entité
geometry_n Renvoie la nième géométrie d’une collection de géométrie ou NULL si la géométrie en entrée n’est pas une collection.
hausdorff_distance Renvoie la distance de Hausdorff entre les deux géométries. C’est une mesure de la dissimilarité entre deux géométries, une petite distance indiquant que les géométries sont assez similaires.
inclination Renvoie l’inclinaison mesurée du zénith (0) au nadir (180) du point_a au point_b.
interior_ring_n Renvoie la géométrie du nième anneau intérieur d’une géométrie polygonale ou NULL si la géométrie n’est pas un polygone.
intersection Renvoie une géométrie qui représente la portion commune de deux géométries (voir aussi Intersection).
intersects Teste si une géométrie en intersecte une autre. Renvoie 1 (vrai) si les géométries s’intersectent (partage n’importe quelle portion de leur surface) et 0 dans le cas contraire.
intersects_bbox Teste si une emprise de géométrie en chevauche une autre. Renvoie 1 (vrai) si les géométries intersectent (partage au moins un espace commun) leurs emprises respectives et 0 dans le cas contraire.
is_closed Renvoie TRUE si une ligne est fermée (si le point de début et le point de fin sont identiques) ou FALSE si une ligne n’est pas fermée. Si la géométrie n’est pas une ligne, le résultat sera NULL.
length Renvoie la longueur d’une entité ayant une géométrie linéaire (ou la longueur d’une chaîne de caractères).
line_interpolate_angle Renvoie l’angle parallèle à la géométrie à une distance spécifiée le long d’une polyligne. Les angles sont en degrés dans le sens des aiguilles d’une montre par rapport au nord.
line_interpolate_point Renvoie l’interpolation d’un point situé à une certaine distance le long d’une géométrie de type polyligne (voir aussi Interpolate point on line).
line_locate_point Renvoie la distance le long d’une géométrie de type polyligne correspondant à la longueur de cette ligne à la plus proche position d’un point spécifié.
line_substring Renvoie la partie d’une ligne (ou courbe) comprise entre les distances de début et de fin spécifiées (mesurées à partir du début de la ligne, voir aussi Line substring).
line_merge Renvoie une géométrie de type (multi)polyligne dans laquelle toutes les polylignes connectées de la geométrie en entrée ont été fusionnées en une seule polyligne.
m Renvoie la valeur M d’une géométrie de type point.
make_circle Crée une géométrie circulaire basée sur un point central et un rayon.
make_ellipse Crée une géométrie elliptique basée sur un point central, des axes et un azimut.
make_line Créé une géométrie linéaire à partir d’une série de géométries ponctuelles
make_point(x,y,z,m) Renvoie une géométrie ponctuelle à partir des valeurs X et Y (et optionnellement des valeurs Z et M).
make_point_m(x,y,m) Renvoie une géométrie ponctuelle à partir de coordonnées X et Y et d’une valeur M.
make_polygon Créé une géométrie polygonale à partir d’un anneau externe et de séries optionnelles de géométries d’anneaux internes
make_regular_polygon Crée un polygone régulier.
make_triangle Crée un triangle.
minimal_circle Retourne le plus petit cercle contenant une géométrie donnée (voir aussi Minimum enclosing circles).
nodes_to_points Renvoie une géométrie multi-point composée de chaque nœud de la géométrie en entrée (voir aussi Extract vertices).
num_geometries Renvoie le nombre de géométries dans une collection de géométrie ou NULL si la géométrie en entrée n’est pas une collection
num_interior_rings Renvoie le nombre d’anneaux intérieurs dans un polygone ou dans une collection de géométrie ou NULL si la géométrie en entrée n’est pas un polygone ou une collection
num_points Renvoie le nombre de sommets d’une géométrie
num_rings Renvoie le nombre d’anneaux (incluant les anneaux extérieurs) d’un polygone ou d’une collection de géométrie ou bien NULL si la géométrie en entrée n’est pas un polygone ou une collection
offset_curve Renvoie une géométrie formée en décalant sur un côté une géométrie de type polyligne. Les distances sont exprimées dans le Système de Coordonnées de Référence de cette géométrie (voir aussi Offset lines).
order_parts Ré-arrange les parties d’une géométrie multiple selon le critère donné
oriented_bbox Renvoie une géométrie qui représente la zone de délimitation orientée minimale d’une géométrie en entrée (voir aussi Oriented minimum bounding box).
overlaps Teste si une géométrie recouvre totalement une autre. Renvoie 1 (vrai) si les géométries partagent la même surface, sont de même dimension mais ne sont pas complètement contenues l’une dans l’autre.
perimeter Renvoie le périmètre d’un objet géométrique polygonal. Les calculs sont effectués dans le Système Spatial de Référence de cette géométrie.
point_n Renvoie un nœud spécifique d’une géométrie (voir aussi Extract specific vertices).
point_on_surface Renvoie un point qui est certainement situé à la surface d’une géométrie (voir aussi Point on Surface).
pole_of_inaccessibility Calcule une approximation du pôle d’inaccessibilité pour une surface, qui est le point de la surface le plus éloigné de ses bords (voir aussi Pole of inaccessibility).
project Renvoie un point projeté depuis un point de départ en utilisant une distance et une direction (azimut) en radians (voir aussi Project points (Cartesian)).
relate Teste ou renvoie la représentation du Modèle Dimensionnel Étendu à 9 Intersections (DE-9IM en anglais) de la relation entre deux géométries.
reverse Inverse la direction d’une géométrie linéaire en inversant l’ordre de ses sommets (voir aussi Reverse line direction).
segments_to_lines Renvoie une géométrie multi-ligne composée d’une ligne pour chaque segment de la géométrie en entrée (voir aussi Explode lines).
shortest_line Renvoie la plus courte ligne joignant deux géométries. La ligne résultante commencera sur la géométrie 1 et se terminera sur la géométrie 2
simplify Simplifie la géométrie en retirant des nœuds selon une distance-seuil (voir aussi Simplify).
simplify_vw Simplifie la géométrie en retirant des nœuds selon une surface-seuil (voir aussi Simplify).
single_sided_buffer Renvoie une géométrie formée par un tampon appliqué sur un seul côté d’une géométrie de type polyligne. Les distances sont exprimées dans le Système de Coordonnées de Référence de cette géométrie (voir aussi Single sided buffer).
smooth Lisse une géométrie en ajoutant des nœuds supplémentaires qui arrondissent les coins de la géométrie (voir aussi Smooth).
start_point Renvoie le premier nœud d’une géométrie (voir aussi Extract specific vertices).
sym_difference Renvoie une géométrie qui représente les portions non superposées de deux géométries (voir aussi Symmetrical difference).
tapered_buffer Crée autour d’une ligne une zone tampon dont le diamètre varie uniformément du début jusqu’à la fin de la ligne (voir aussi Tapered buffers).
touches Teste si deux géométries se touchent. Renvoie 1 (vrai) si les géométries ont au moins un point en commun mais que leurs surfaces intérieures ne s’intersectent pas
transform Renvoie la géométrie transformée d’un SCR source vers un SCR cible (voir aussi Reproject layer).
translate Renvoie une version translatée d’une géométrie. Les calculs sont effectués dans le Système de Coordonnées de Référence de cette géométrie (voir aussi Translate).
union Renvoie une géométrie qui représente l’ensemble de points unis des géométries
wedge_buffer Renvoie un tampon avec angles depuis une géométrie de point selon un angle et un rayon (voir aussi Create wedge buffers).
within (a,b) Teste si une géométrie est située complètement à l’intérieur d’une autre. Renvoie 1 (vrai) si la géométrie a est contenue complètement dans la géométrie b
x Renvoie la coordonnée X d’une géométrie ponctuelle ou la coordonnée X du centroïde d’une géométrie non ponctuelle
x_min Renvoie la coordonnée X minimale d’une géométrie. Les calculs sont effectués dans le Système de Coordonnées de Référence de la géométrie.
x_max Renvoie la coordonnée Y maximale d’une géométrie. Les calculs sont effectués dans le Système de Coordonnées de Référence de la géométrie.
y Renvoie la coordonnée Y d’une géométrie ponctuelle ou la coordonnée Y du centroïde d’une géométrie non ponctuelle
y_min Renvoie la coordonnée Y minimale d’une géométrie. Les calculs sont effectués dans le Système de Coordonnées de Référence de la géométrie.
y_max Renvoie la coordonnée Y maximale d’une géométrie. Les calculs sont effectués dans le Système de Coordonnées de Référence de la géométrie.
z Renvoie la coordonnée Z d’une géométrie de type point

Quelques exemples :

  • Vous pouvez manipuler la géométrie de l’entité avec la variable $geometry afin de créer une zone tampon ou représenter le centroïde:

    buffer( $geometry, 10 )
    point_on_surface( $geometry )
    
  • Renvoie la coordonnée X du centroïde de l’entité courante:

    x( $geometry )
    
  • Renvoie une valeur selon la surface de l’entité:

    CASE WHEN $area > 10 000 THEN 'Larger' ELSE 'Smaller' END
    

Fonctions de Mise en Page

Ce groupe contient des fonctions pour manipuler les propriétés des objets des mises en pages.

Fonction Description
item_variables Renvoie une table de correspondance des variables d’un élément de la mise en page à l’intérieur de cette mise en page.

Quelques exemples:

  • Obtenir l’échelle de la « Map 0 » dans la mise en page courante:

    map_get( item_variables('Map 0'), 'map_scale')
    

Couches

Ce groupe contient une liste des couches disponibles dans le projet courant. Il propose ainsi une façon simple de se référer à des couches dans une expression, par exemple pour exécuter des requêtes d’agrégation, attributaires ou spatiales.

Fonctions de Tableaux associatifs

Ce groupe contient des fonctions servant à créer ou manipuler des clés et des valeurs de structures de données de plan (aussi appelées objets de dictionnaires, paires clé-valeur ou liste associative). Contrairement à la structure de liste de données où l’ordre des valeurs a une importance, l’ordre des paires clé-valeur dans l’objet plan n’a pas d’importance et les valeurs sont identifiées par leurs clés.

Fonction Description
hstore_to_map Créer une carte à partir d’une chaîne de caractères formatée en hstore
json_to_map Crée une carte à partir d’une chaîne formatée en json
map Renvoie une carte avec toutes les clés et valeurs passées en paire de paramètres
map_akeys Renvoie toutes les clés d’une carte sous forme de liste
map_avals Renvoie toutes les valeurs d’une carte sous forme de liste
map_concat Renvoie une carte contenant toutes les entrées des cartes données. Si deux cartes contiennent la même clé, la valeur de la deuxième carte est prise.
map_delete Renvoie une carte avec la clé donnée et sa valeur correspondante supprimée
map_exist Revoie vrai si la clé donnée existe dans la carte
map_get Renvoie la valeur d’une carte, selon sa clé
map_insert Renvoie une carte avec une clé/valeur ajoutée
map_to_hstore Combine les éléments de carte dans une chaîne de caractères au format hstore
map_to_json Combine les éléments de carte dans une chaîne de caractères au format json

Fonctions mathématiques

Ce groupe contient des fonctions mathématiques (par ex. racine carré, sin et cos).

Fonction Description
abs Renvoie la valeur absolue d’un nombre
acos Renvoie le cosinus inverse d’une valeur en radians
asin Renvoie le sinus inverse d’une valeur en radians
atan Renvoie la tangente inverse d’une valeur en radians
atan2(y,x) Renvoie la tangente inverse de X/Y en utilisant les signes de deux arguments pour déterminer le quadrant du résultat
azimuth(a,b) Renvoie l’azimut par rapport au nord sous forme d’angle en radians mesuré dans le sens des aiguilles d’une montre à partir de la verticale entre le point a et le point b.
ceil Arrondi un nombre vers le haut
clamp Restreint une valeur d’entrée à une plage spécifique
cos Renvoie le cosinus d’une valeur en radians
degrees Convertit des angles en radians vers des degrés
exp Renvoie l’exponentiel d’une valeur
floor Arrondit un nombre vers le bas
inclination Renvoie l’inclinaison mesurée depuis le zénith (0) jusqu’au nadir (180) sur le modèle point_a à point_b
ln Renvoie la valeur du logarithme népérien de l’expression en argument
log Renvoie la valeur du logarithme selon la valeur et la base en arguments
log10 Renvoie la valeur du logarithme en base 10 de l’expression en argument
max Renvoie la valeur non nulle la plus importante d’une série de valeurs
min Renvoie la valeur non nulle la plus petite d’une série de valeurs
pi Renvoie la valeur de Pi pour utilisation dans d’autres calculs
radians Convertit des angles en degrés vers des radians
rand Renvoie un entier aléatoire selon la plage spécifiée entre les valeurs minimale et maximale (inclusives)
randf Renvoie un nombre décimal aléatoire selon la plage spécifiée entres les valeurs minimale et maximale (inclusives)
round Arrondi au nombre de décimales indiqué
scale_exp Transforme une valeur donnée d’un domaine d’entrée à une plage de sortie en utilisant une courbe exponentielle
scale_linear Transforme une valeur donnée d’un domaine d’entrée à une plage de sortie en utilisant une interpolation linéaire
sin Renvoie le sinus d’un angle
sqrt Renvoie la racine carrée d’une valeur
tan Renvoie la tangente d’un angle

Opérateurs

Ce groupe contient des opérateurs (ex: +, -, *). Merci de noter que pour la majorité des fonctions mathématiques ci-dessous, si l’une des entrées est NULL alors le résultat vaudra NULL.

Fonction Description
a + b Addition de deux valeurs (a plus b)
a - b Soustraction de deux valeurs (a moins b)
a * b Multiplication de deux valeurs ( a multiplié par b)
a / b Division de deux valeurs ( a divisé par b)
a % b Reste de la division de a par b (par ex. 7 % 2 = 1 car 2 est présent trois fois dans 7 et il reste 1)
a ^ b Puissance de deux valeurs (par ex. 2^2=4 ou 2^3=8)
a < b Compare deux valeurs et renvoie 1 si la valeur de gauche est moins grande que la valeur de droite (a inférieur à b)
a <= b Compare deux valeurs et renvoie 1 si la valeur de gauche est moins grande ou égale à la valeur de droite
a <> b Compare deux valeurs et renvoie 1 si elle ne sont pas égales
a = b Compare deux valeurs et renvoie 1 si elles sont égales
a != b Compare deux valeurs et renvoie 1 si elle ne sont pas égales
a > b Compare deux valeurs et renvoie 1 si la valeur de gauche est plus grande que la valeur de droite (a supérieur à b)
a >= b Compare deux valeurs et renvoie 1 si la valeur de gauche est plus grande ou égale à la valeur de droite
a ~ b Teste si a correspond à l’expression régulière b
|| Fusionne deux valeurs ensemble dans une chaîne de caractères. Si l’une des valeurs vaut NULL, le résultat sera NULL.
“\n” Insère un retour à la ligne dans une chaîne de caractères
LIKE Renvoie 1 si le premier paramètre correspond au motif défini
ILIKE Renvoie 1 si le premier paramètre correspond au motif fourni de manière non sensible à la casse (ILIKE peut être utilisé à la place d’LIKE pour rendre la correspondance sensible à la casse)
a IS b Teste si deux valeurs sont identiques. Renvoie 1 si a est identique à b
a OR b Renvoie 1 lorsque la condition a ou b est vraie
a AND b Renvoie 1 lorsque les conditions a et b sont vraies
NOT Inverse une condition
nom de colonne « nom de colonne » Valeur de la colonne « nom de la colonne ». Attention à ne pas confondre avec les guillemets simples, voir ci-dessous
“texte” Une chaîne de caractère. Attention à ne pas confondre avec les guillemets doubles, voir ci-dessus
NULL valeur nulle
a IS NULL a n’a pas de valeur
a IS NOT NULL a a une valeur
a IN (valeur[,valeur]) a fait partie des valeurs listées
a NOT IN (valeur[,valeur]) a ne fait pas partie des valeurs listées

Note

Au sujet de l’agrégation de champs

Vous pouvez concaténer du texte à l’aide des opérateurs || ou +. Le dernier correspondant aussi à la fonction d’addition, si vous avez un nombre (que ce soit comme valeur de champ ou valeur saisie), votre formule peut être sujette à erreur. Préférez dans ce cas l’usage de ||. Si vous concaténez deux textes, alors vous pouvez utiliser n’importe lequel.

Quelques exemples :

  • Concatène une chaîne et une valeur depuis un nom de colonne:

    'My feature''s id is: ' || "gid"
    'My feature''s id is: ' + "gid" => triggers an error as gid is an integer
    "country_name" + '(' + "country_code" + ')'
    "country_name" || '(' || "country_code" || ')'
    
  • Teste si la « description » du champ d’attribut commence avec la chaîne “Hello” dans la valeur (notez la position du caractère %):

    "description" LIKE 'Hello%'
    

Fonctions Raster

Ce groupe contient des fonctions à implémenter sur une couche raster

Fonction Description
raster_statistic Renvoie les statistiques d’une couche raster
raster_value Renvoie la valeur de bande raster au point fourni

Fonction d’enregistrement et d’attributs

Ce groupe contient des fonctions qui permettent d’accéder aux identifiants des enregistrements.

Fonction Description
$currentfeature Renvoie l’entité courante évaluée. Cette fonction peut être utilisée en combinaison avec la fonction “attribute” pour renvoyer les valeurs d’attribut de l’entité courante.
$id Renvoie l’identifiant de l’entité de la ligne actuelle
attribute Renvoie la valeur d’un attribut spécifié pour une entité
get_feature Renvoie la première entité de la couche qui correspond à la valeur d’attribut donnée
get_feature_by_id Renvoie l’entité d’une couche qui correspond à l’ID d’une entité donnée
is_selected Renvoie si une entité est sélectionnée
num_selected Renvoie le nombre d’entités sélectionnées sur une couche donnée
represent_value Renvoie la représentation configurée de valeur pour une valeur de champ (pratique avec certains types de widgets)
uuid Génère un Identifiant Universel Unique (UUID) pour chaque ligne. Chaque UUID occupe 38 caractères

Quelques exemples :

  • Renvoie la première entité d’une couche « Layer A » dont le champ « id » a la même valeur que le champ « name » de l’entité courante (une sorte de jointure):

    get_feature( 'layerA', 'id', attribute( $currentfeature, 'name') )
    
  • Calcule la surface de l’entité jointe à partir de l’exemple précédent:

    area( geometry( get_feature( 'layerA', 'id', attribute( $currentfeature, 'name') ) ) )
    

Fonctions de Chaîne

Ce groupe contient des fonctions qui opèrent sur des chaînes (par ex. qui remplace, convertit en majuscule).

Fonction Description
char Renvoie le caractère associé à un code Unicode.
concat Concatène plusieurs chaînes de caractères dans une seule.
format Formatte une chaîne de caractères en utilisant les arguments fournis.
format_date Formatte une date ou une chaîne de caractères dans un format de chaîne personnalisé.
format_number Renvoie un nombre formaté selon le séparateur de milliers de la langue courante (tronque également le nombre selon le nombre de chiffres indiqués).
left(string, n) Renvoie un extrait de chaîne de caractères contenant les n caractères les plus à gauche de la chaîne initiale
length Renvoie la longueur d’une chaîne de caractères (ou la longueur d’une entité géométrique linéaire).
lower Convertit une chaîne de caractères en minuscules.
lpad Renvoie une chaîne de caractères alignée à gauche de la largeur spécifiée avec le caractère de remplissage
regexp_match Renvoie la première position correspondant à l’expression régulière dans une chaîne de caractères, ou () si la sous-chaîne n’est pas trouvée
regexp_replace Renvoie une chaîne de caractères en utilisant une expression rationnelle de substitution
regexp_substr Renvoie la portion d’une chaîne de caractères qui correspond à une expression rationnelle fournie
replace Renvoie une chaîne de caractères avec la chaîne de caractères fournie, ou une carte de chaînes remplacées par une chaîne de caractères, une liste de chaîne ou de paires de valeurs
right(string, n) Renvoie un extrait de chaîne de caractères contenant les n caractères les plus à droite de la chaîne initiale
rpad Renvoie une chaîne de caractères alignée à droite, de la largeur spécifiée, avec le caractère de remplissage
strpos Renvoie la première position d’une sous-chaîne correspondant à une autre chaîne de caractères, ou () si la sous-chaîne n’est pas trouvée
substr Renvoie une partie de chaîne de caractères
title Convertit l’ensemble des mots d’une chaîne de caractères en casse de titre (tous les mots sont en minuscule sauf la première lettre du mot qui est en majuscule)
trim Supprime tous les caractères d’espace (espaces, tabs, etc.) situés au début ou à la fin d’une chaîne de caractères.
upper Convertit une chaîne de caractères en majuscules.
wordwrap Renvoie une chaîne de caractères découpée par les caractères espace, selon un nombre minimum ou maximum de caractères

Fonctions de variables

Ce groupe contient les variables dynamiques liées à l’application, le fichier de projet et les autres paramètres. Cela implique que certaines fonctions peuvent ne pas être disponibles selon le contexte:

  • à partir de la boîte de dialogue expressionSelect Sélection les entités en utilisant une expression.
  • à partir de la boîte de dialogue calculateField Calculatrice de champs.
  • à partir de la boîte de dialogue des propriétés de la couche.
  • depuis la mise en page d’impression

Pour utiliser ces fonctions dans une expression, elles doivent être précédées par le caractère @ (ex: @row_number). Sont concernées:

Fonction Description
algorithm_id Renvoie l’ID unique d’un algorithme
atlas_feature Renvoie l’entité courante de l’atlas (sous forme d’objet entité).
atlas_featureid Renvoie l’ID de l’entité courante de l’atlas.
atlas_featurenumber Renvoie le numéro de l’entité courante de l’atlas dans la mise en page
atlas_filename Renvoie le nom de fichier de l’atlas courant.
atlas_geometry Renvoie la géométrie de l’entité courante de l’atlas.
atlas_layerid Renvoie l’ID de la couche de couverture courante de l’atlas
atlas_layername Renvoie le nom de la couche de l’entité courante de l’atlas
atlas_pagename Renvoie le nom de la page courante de l’atlas.
atlas_totalfeatures Renvoie le nombre total d’entités de l’atlas.
canvas_cursor_point Renvoie la dernière position du curseur dans le canevas dans les coordonnées géographiques du projet
cluster_color Renvoie la couleur de symboles à l’intérieur d’un cluster, ou NULL si les symboles ont des couleurs mélangées
cluster_size Renvoie le nombre de symboles contenus dans un cluster
current_feature Renvoie l’entité en cours d’édition dans la table attributaire ou dans la ligne d’une table
current_geometry Renvoie la géométrie de l’entité en cours d’édition dans le formulaire ou dans la ligne de la table
geometry_part_count Renvoie le nombre de parties dans la géométrie d’une entité
geometry_part_num Renvoie le nombre de parties de la géométrie courante pour l’entité en cours de rendu
geometry_point_count Returns the number of points in the rendered geometry’s part
geometry_point_num Returns the current point number in the rendered geometry’s part
grid_axis Renvoie l’annotation des axes de la grille courante (ex: “x” pour la longitude et “y” pour la latitude).
grid_number Renvoie la valeur d’annotation de la grille courante.
item_id Returns the layout item user ID (not necessarily unique)
item_uuid Returns the layout item unique ID
layer Returns the current layer
layer_id Renvoie l’ID de la couche actuelle.
layer_name Retourne le nom de la couche actuelle
layout_dpi Renvoie la résolution de la composition (DPI).
layout_name Returns the layout name
layout_numpages Returns the number of pages in the layout
layout_page Returns the page number of the current item in the layout
layout_pageheight Returns the active page height in the layout (in mm)
layout_pagewidth Returns the active page width in the layout (in mm)
map_crs Returns the Coordinate reference system of the current map
map_crs_definition Returns the full definition of the Coordinate reference system of the current map
map_extent Returns the geometry representing the current extent of the map
map_extent_center Renvoie l’entité ponctuelle située au centre de la carte.
map_extent_height Retourne la hauteur actuelle de la carte
map_extent_width Retourne la largeur actuelle de la carte
map_id Returns the ID of current map destination. This will be “canvas” for canvas renders, and the item ID for layout map renders
map_layer_ids Returns the list of map layer IDs visible in the map
map_layers Returns the list of map layers visible in the map
map_rotation Retourne la rotation actuelle de la carte
map_scale Renvoie l’échelle actuelle de la carte.
map_units Returns 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 Returns the project abstract, taken from project metadata
project_author Returns the project author, taken from project metadata
project_basename Returns the basename of current project’s filename (without path and extension)
project_creation_date Returns the project creation date, taken from project metadata
project_crs Returns the Coordinate reference system of the project
project_crs_definition Returns the full definition of the Coordinate reference system of the project
project_filename Returns the filename of the current project
project_folder Returns the folder of the current project
project_home Returns the home path of the current project
project_identifier Returns the project identifier, taken from the project’s metadata
project_keywords Returns the project keywords, taken from the project’s metadata
project_path Returns the full path (including file name) of the current project
project_title Renvoie le titre du projet actuel
qgis_locale Returns the current language of QGIS
qgis_os_name Renvoie le nom du système d’exploitation : “windows”, “linux” ou “osx”
qgis_platform Renvoie la plate-forme QGIS, par exemple “desktop” ou “server”
qgis_release_name Renvoie le nom de la version de QGiS utilisée
qgis_short_version Returns current QGIS version short string
qgis_version Renvoie la version de QGIS utilisée
qgis_version_no Renvoie le numéro de version de QGIS
snapping_results Gives access to snapping results while digitizing a feature (only available in add feature)
symbol_angle Renvoie l’angle du symbole utilisé pour le rendu de l’entité (valide uniquement pour les marqueurs de symboles).
symbol_color Renvoie la couleur du symbole utilisé pour le rendu de l’entité.
user_account_name Renvoie le nom d’utilisateur du système d’exploitation.
user_full_name Retourne le nom d’utilisateur de l’utilisateur du système d’exploitation actuel
row_number Enregistre le numéro de la ligne actuelle
value Renvoie la valeur en cours
with_variable Allows setting a variable for usage within an expression and avoid recalculating the same value repeatedly

Quelques exemples :

  • Return the X coordinate of a map item center to insert into a label in layout:

    x( map_get( item_variables( 'map1'), 'map_extent_center' ) )
    
  • Return for each feature in the current layer the number of overlapping airports 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'
      )
    )
    

Fonctions récentes

This group contains recently used functions. Depending on the context of its usage (feature selection, field calculator, generic), any applied expression is added to the corresponding list (up to ten expressions), sorted from the more recent to the less one. This helps to quickly retrieve and reapply any previously used expression.

Éditeur de fonction

With the Function Editor tab, you are able to write your own functions in Python language. This provides a handy and comfortable way to address particular needs that would not be covered by the predefined functions.

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

L’onglet Éditeur de fonction

Pour créer une nouvelle fonction :

  1. Appuyez sur le bouton signPlus Nouveau Fichier.

  2. Enter a name to use in the form that pops up and press OK.

    A new item of the name you provide is added in the left panel of the Function Editor tab; this is a Python .py file based on QGIS template file and stored in the /python/expressions folder under the active user profile directory.

  3. The right panel displays the content of the file: a python script template. Update the code and its help according to your needs.

  4. Press the start Save and Load Functions button. The function you wrote is added to the functions tree in the Expression tab, by default under the Custom group.

  5. Profitez donc de votre nouvelle fonction.

  6. If the function requires improvements, enable the Function Editor tab, do the changes and press again the start Save and Load Functions button to make them available in the file, hence in any expression tab.

Custom Python functions are stored under the user profile directory, meaning that at each QGIS startup, it will auto load all the functions defined with the current user profile. Be aware that new functions are only saved in the /python/expressions folder and not in the project file. If you share a project that uses one of your custom functions you will need to also share the .py file in the /python/expressions folder.

Voici un court exemple de comment créer vos propres fonctions :

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

Ce court exemple crée la fonction my_sum qui vous donnera une fonction avec deux valeurs. Quand vous utilisez l’argument de fonction args='auto' le nombre d’arguments de la fonction requis sera calculé selon le nombre d’arguments définis en Python (moins 2 - feature, et parent).

Cette fonction peut dès lors être utilisée dans des expressions :

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

Fonction personnalisée ajoutée à l’onglet Expression

Plus d’informations sur la création de code Python peuvent être trouvées dans Développement PyQGIS - Livre de recettes.