14.2. 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…
14.2.1. Le constructeur d’expression de chaîne (texte)¶
Le Constructeur d’expression de chaîne, principale fenêtre de création des expressions, est accessible en maints endroits dans QGIS, et particulièrement:
en sélectionnant des entités à l’aide de l’outil
Sélectionner les entités en utilisant une expression…;
en éditant les attributs à l’aide par exemple de l’outil
Calculatrice de champ;
en manipulant la symbologie, les étiquettes, les propriétés des éléments du composeur avec l’outil
Valeurs définies par des données (voir Valeurs définies par des données);
en paramétrant un symbole de couche de type geometry generator ;
lors de certains géotraitements.
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 de vérifier l’expression à utiliser;
l’onglet Function Editor tab 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
Mettre à jour un champ de la couche région avec les noms des aéroports qui sont à l’intérieur (séparés par des virgules):
aggregate('airport_layer', 'concatenate', "name", within($geometry, geometry(@parent)), ', ')
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 !
14.2.2. 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 texte 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.
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 é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.

Fig. 14.65 L’onglet Expression¶
14.2.2.1. 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 agrégées d’un champ ou d’une expression rejoints par un délimiteur |
concatenate_unique |
Renvoie toutes les chaînes agrégées uniques d’un champ ou d’une expression joints 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 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")
14.2.2.2. Fonctions Listes¶
Ce groupe fournit les fonctions de création et de 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 map, 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_all |
Renvoie vrai si un tableau contient toutes les valeurs d’un tableau donné |
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_sort |
Renvoie le tableau fourni avec ses éléments triés |
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. |
14.2.2.3. 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 |
14.2.2.4. 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 |
nullif(value1, value2) |
Renvoie une valeur nulle si valeur1 est égal à valeur2 sinon il renvoie valeur1. Cela peut être utilisé pour substituer conditionnellement des valeurs par NULL. |
try |
Tente une expression et renvoie sa valeur si elle est sans erreur, une valeur alternative (si fournie) ou Null si une erreur se produit |
Quelques exemples:
Renvoie 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
14.2.2.5. 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 |
14.2.2.6. Fonctions personnalisées¶
Ce groupe contient les fonctions créées par l’utilisateur. Consultez Éditeur de fonctions pour plus de détails.
14.2.2.7. 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 la partie année d’une date ou d’une heure ou le nombre d’années d’un intervalle |
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înes (texte) (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).
14.2.2.8. 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 alias.
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 exemples et Toutes les valeurs uniques. Les valeurs voulues sont alors affichées et vous pouvez utiliser la boîte Rechercher 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.
14.2.2.9. Fonctions Fichiers et Chemins¶
Ce groupe contient des fonctions qui manipulent les noms de fichiers et de chemins.
Fonction |
Description |
---|---|
base_file_name |
Renvoie le nom de base du fichier sans le répertoire ou le suffixe du fichier. |
file_exists |
Renvoie vrai si un chemin de fichier existe. |
file_name |
Renvoie le nom d’un fichier (y compris l’extension de fichier), à l’exclusion du répertoire. |
file_path |
Renvoie le répertoire d’un chemin de fichier, sans le nom de fichier |
file_size |
Renvoie la taille (en octets) d’un fichier. |
file_suffix |
Renvoie l’extension de fichier à partir d’un chemin de fichier. |
is_directory |
Renvoie vrai si un chemin correspond à un répertoire. |
is_file |
Renvoie vrai si un chemin correspond à un fichier. |
14.2.2.10. 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. |
14.2.2.11. Fonctions Générales¶
Ce groupe contient des fonctions générales assorties.
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 dans une chaîne. Utile pour développer des paramètres dynamiques passés en tant que variables ou champs de contexte. |
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 spécifiée. Voir Variables ci-dessous |
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. |
14.2.2.12. Fonctions de Géométrie¶
Ce groupe contient des fonctions qui opèrent sur des objets géométriques (par exemple, buffer, transform, $area).
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 buffer à largeur variable (par valeur M)). |
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 |
collect_geometries |
Collecte un ensemble de géométries en un objet géométrique en plusieurs parties (voir aussi Collecter les géométries) |
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 Extraire des vertexs spécifiques). |
extend |
Prolonge le départ et l’arrivée d’une géométrie polyligne d’une valeur spécifiée (voir aussi Prolonger les lignes) |
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 Permuter les coordonnées X et Y). |
force_rhr |
Force une géométrie à respecter la Right-Hand-Rule (voir aussi Forcer la règle de droite) |
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 essentiellement une mesure de la similitude ou de la différence de deux géométries, avec une distance plus faible indiquant des géométries plus 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 Interpoler le point en ligne). |
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_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. |
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 Portion de ligne). |
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ée une géométrie de ligne à partir d’une série ou d’un tableau de géométries de point |
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_rectangle_3points |
Crée un rectangle à partir de 3 points |
make_regular_polygon |
Crée un polygone régulier. |
make_square |
Crée un carré à partir d’une diagonale |
make_triangle |
Crée un triangle. |
minimal_circle |
Retourne le plus petit cercle contenant une géométrie donnée (voir aussi Cercles englobants minimum). |
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 Extraire les vertexs). |
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 Lignes décalées). |
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 Boîte de délimitation minimale orientée). |
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 Extraire des vertexs spécifiques). |
point_on_surface |
Renvoie un point qui est certainement situé à la surface d’une géométrie (voir aussi Point sur la 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 Pôle d’inaccessibilité). |
project |
Renvoie un point projeté à partir d’un point de départ en utilisant une distance, un relèvement (azimut) et une élévation en radians (voir aussi Points de projet (cartésiens)) |
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 Inverser la direction de la ligne). |
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 Exploser les lignes). |
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 Simplifier). |
simplify_vw |
Simplifie la géométrie en retirant des nœuds selon une surface-seuil (voir aussi Simplifier). |
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 buffer simple face). |
smooth |
Lisse une géométrie en ajoutant des nœuds supplémentaires qui arrondissent les coins de la géométrie (voir aussi Lisse). |
start_point |
Renvoie le premier nœud d’une géométrie (voir aussi Extraire des vertexs spécifiques). |
sym_difference |
Renvoie une géométrie qui représente les portions non superposées de deux géométries (voir aussi Différence symétrique). |
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 Tampons coniques). |
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 Reprojeter la couche). |
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 Traduire). |
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 Créer des buffer compensés). |
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_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. |
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. |
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_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_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. |
z |
Renvoie la coordonnée Z d’une géométrie de type point |
Quelques exemples :
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
Vous pouvez manipuler la géométrie courante en utilisant la variable
$geometry
pour créer un tampon ou obtenir un point sur la surface de la géométriebuffer( $geometry, 10 ) point_on_surface( $geometry )
Étant donné une entité ponctuelle, générez une ligne fermée (en utilisant
make_line
) autour de la géométrie du pointmake_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. 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. |
Un exemple:
Obtenir l’échelle de la « Map 0 » dans la mise en page courante:
map_get( item_variables('Map 0'), 'map_scale')
14.2.2.14. 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.
Il fournit également des fonctions pratiques pour manipuler les couches .
Fonction |
Description |
---|---|
decode_uri |
Prend une couche et décode l’URI du fournisseur de données sous-jacent. Les informations disponibles dépendent du type de fournisseur de données. |
14.2.2.15. Fonctions de Tableaux associatifs¶
Ce groupe contient des fonctions servant à créer ou manipuler des clés et des valeurs de structure 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 |
---|---|
from_json |
Charge une chaîne au format json |
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 |
to_json |
Crée une chaîne au format json à partir d’une carte, d’un tableau ou d’une autre valeur |
14.2.2.16. 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’un angle 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 en radians |
sqrt |
Renvoie la racine carrée d’une valeur |
tan |
Renvoie la tangente d’un angle en radians |
14.2.2.17. 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 évalue à 1 si la valeur de gauche est inférieure 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 |
« Column_name » |
Valeur du champ Column_name, attention à ne pas être confondu avec une simple citation, 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 |
Quelques exemples :
Concatène une chaîne et une valeur depuis un nom de colonne:
'My feature''s id is: ' || "gid"
Testez si le champ d’attribut « description » commence par la chaîne “Hello” dans la valeur (notez la position du caractère
%
)"description" LIKE 'Hello%'
14.2.2.18. Fonctions de processing¶
Ce groupe contient des fonctions qui opèrent sur des algorithmes de traitement.
Fonction |
Description |
---|---|
paramètre |
Renvoie la valeur d’un paramètre d’entrée d’algorithme de traitement |
14.2.2.19. 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 |
14.2.2.20. 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é |
les attributs |
Renvoie une map de tous les attributs d’une entité, avec les noms de champ comme clés |
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) |
sql_fetch_and_increment |
Gérer les valeurs d’auto-incrémentation dans les bases de données SQLite |
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') ) ) )
14.2.2.21. Fonctions de Chaînes (texte)¶
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 enveloppée d’un nombre maximum / minimum de caractères |
Au sujet de l’agrégation de champs
Vous pouvez concaténer des chaînes ou des valeurs de champ à l’aide des opérateurs ||
ou +
ou de la fonction concat
, avec certaines caractéristiques spéciales:
L’opérateur
+
signifie également une expression de résumé, donc si vous avez un opérande entier (champ ou valeur numérique), cela peut être sujet à erreur et vous feriez mieux d’utiliser les autres'My feature''s id is: ' + "gid" => triggers an error as gid is an integer
Lorsque l’un des arguments est une valeur NULL,
||
ou+
renverra une valeur NULL. Pour retourner les autres arguments quelle que soit la valeur NULL, vous pouvez utiliser la fonctionconcat
:"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)
Pour les autres cas, faites à votre convenance:
'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¶
Ce groupe contient des variables dynamiques liées à la demande, au fichier de projet et à d’autres paramètres. La disponibilité des variables dépend du contexte :
à partir de la boîte de dialogue
Sélection les entités en utilisant une expression.
à partir de la boîte de dialogue des propriétés de la couche.
depuis la mise en page d’impression
Pour utiliser ces variables dans une expression, elles doivent être précédées du caractère « @ » (par exemple, « @row_number »).
Fonction |
Description |
---|---|
algorithm_id |
L’identifiant unique d’un algorithme |
atlas_feature |
L’entite actuelle de l’atlas (en tant que foncton d’objet) |
atlas_featureid |
Identification des entites de l’atlas actuel |
atlas_featurenumber |
Le numéro de l’entite actuelle de l’atlas dans la mise en page |
atlas_filename |
Le nom du fichier de l’atlas actuel |
atlas_geometry |
La géométrie des entites de l’atlas actuel |
atlas_layerid |
L’ID de la couche de couverture actuelle de l’atlas |
atlas_layername |
Le nom de la couche de couverture de l’atlas actuel |
atlas_pagename |
Le nom de la page actuelle de l’atlas |
atlas_totalfeatures |
Le nombre total d’entites dans l’atlas |
canvas_cursor_point |
La dernière position du curseur sur le canevas dans les coordonnées géographiques du projet |
cluster_color |
La couleur des symboles dans un groupe, ou NULL si les symboles ont des couleurs mélangées |
cluster_size |
Le nombre de symboles contenus dans un groupe |
current_feature |
L’entite en cours d’édition dans le formulaire ou la ligne de la table d’attribut |
current_geometry |
La géométrie de l’entite en cours d’édition dans le formulaire ou la ligne de la table |
fullextent_maxx |
Valeur x maximale de l’étendue complète du canevas (y compris toutes les couches) |
fullextent_maxy |
Valeur y maximale de l’étendue complète du canevas (y compris toutes les couches) |
fullextent_minx |
Valeur x minimale de l’étendue complète du canevas (y compris toutes les couches) |
fullextent_miny |
Valeur y minimale de l’étendue complète du canevas (y compris toutes les couches) |
geometry_part_count |
Le nombre de parties dans la géométrie de l’élément rendu |
geometry_part_num |
Le numéro de partie de la géométrie actuelle pour l’élément en cours de rendu |
geometry_point_count |
Le nombre de points dans la partie de la géométrie rendue |
geometry_point_num |
Le numéro du point courant dans la partie de la géométrie rendue |
grid_axis |
L’axe d’annotation de la grille actuelle (par exemple, « x » pour la longitude, « y » pour la latitude) |
grid_number |
La valeur actuelle de l’annotation de la grille |
item_id |
L’ID utilisateur de l’élément de mise en page (pas nécessairement unique) |
item_uuid |
L’identifiant unique de l’élément de mise en page |
layer |
La couche actuelle |
layer_id |
L’ID de la couche actuelle |
layer_name |
Le nom de la couche actuelle |
layout_dpi |
La résolution de composition (DPI) |
layout_name |
Le nom de la mise en page |
layout_numpages |
Le nombre de pages dans la mise en page |
layout_page |
Le numéro de page de l’élément en cours dans la mise en page |
layout_pageheight |
La hauteur de la page active dans la mise en page (en mm) |
layout_pagewidth |
La largeur de la page active dans la mise en page (en mm) |
legend_column_count |
Le nombre de colonnes dans la légende |
legend_filter_by_map |
Indique si le contenu de la légende est filtré par la carte |
legend_filter_out_atlas |
Indique si l’atlas est filtré hors de la légende |
legend_split_layers |
Indique si les couches peuvent être divisées dans la légende |
legend_title |
Le titre de la légende |
legend_wrap_string |
Le(s) caractère(s) utilisé(s) pour envelopper le texte de la légende |
map_crs |
Le système de référence des coordonnées de la carte actuelle |
map_crs_acronym |
L’acronyme du système de référence des coordonnées de la carte actuelle |
map_crs_definition |
La définition complète du système de référence des coordonnées de la carte actuelle |
map_crs_description |
Le nom du système de référence des coordonnées de la carte actuelle |
map_crs_ellipsoid |
L’acronyme de l’ellipsoïde du système de référence des coordonnées de la carte actuelle |
map_crs_proj4 |
La définition Proj4 du système de référence des coordonnées de la carte actuelle |
map_crs_wkt |
La définition WKT du système de référence des coordonnées de la carte actuelle |
map_extent |
La géométrie représentant l’étendue actuelle de la carte |
map_extent_center |
L’élément ponctuel au centre de la carte |
map_extent_height |
La hauteur actuelle de la carte |
map_extent_width |
La largeur actuelle de la carte |
map_id |
L’ID de la destination actuelle sur la carte. Il s’agira de « canvas » pour les rendus de canvas, et de l’ID de l’élément pour les rendus de carte de mise en page |
map_layer_ids |
La liste des ID des couches de la carte visibles dans la carte |
map_layers |
La liste des couches cartographiques visibles dans la carte |
map_rotation |
La rotation actuelle de la carte |
map_scale |
L’échelle actuelle de la carte |
map_units |
Les unités de mesure des cartes |
notification_message |
Contenu du message de notification envoyé par le fournisseur (disponible uniquement pour les actions déclenchées par les notifications du fournisseur). |
parent |
Fait référence à l’entité actuelle dans la couche parent, donnant accès à ses attributs et à sa géométrie lors du filtrage d’une fonction d”agrégat |
project_abstract |
Le résumé du projet, tiré des métadonnées du projet |
project_area_units |
L’unité de surface pour le projet actuel, utilisée lors du calcul des surfaces des géométries |
project_author |
L’auteur du projet, tiré des métadonnées du projet |
project_basename |
Le nom de base du nom de fichier du projet actuel (sans chemin et extension) |
project_creation_date |
La date de création du projet, tirée des métadonnées du projet |
project_crs |
Le système de référence des coordonnées du projet |
project_crs_arconym |
L’acronyme du système de référence coordonnées du projet |
project_crs_definition |
La définition complète du système de référence des coordonnées du projet |
project_crs_description |
La description du système de référence des coordonnées du projet |
project_crs_ellipsoid |
L’ellipsoïde du système de référence des coordonnées du projet |
project_crs_proj4 |
La représentation Proj4 du système de référence des coordonnées du projet |
project_crs_wkt |
La représentation WKT du système de référence des coordonnées du projet |
project_distance_units |
L’unité de distance du projet en cours, utilisée pour le calcul des longueurs des géométries et des distances |
project_ellipsoid |
Le nom de l’ellipsoïde du projet en cours, utilisé pour le calcul des surface géodésiques ou des longueurs de géométrie |
project_filename |
Le nom de fichier du projet actuel |
project_folder |
Le dossier du projet en cours |
project_home |
Le home path du projet actuel |
project_identifier |
L’identifiant du projet, tiré des métadonnées du projet |
project_keywords |
Les mots-clés du projet, tirés des métadonnées du projet |
project_last_saved |
Date/time à laquelle le projet a été enregistré pour la dernière fois. |
project_path |
Le chemin complet (y compris le nom du fichier) du projet en cours |
project_title |
Le titre du projet actuel |
project_units |
Les unités du CRS du projet |
qgis_locale |
La langue actuelle de QGIS |
qgis_os_name |
Le nom du système d’exploitation actuel, par exemple « windows », « linux » ou « osx ». |
qgis_platform |
La plate-forme QGIS, par exemple « bureau » ou « server ». |
qgis_release_name |
Le nom de la version actuelle de QGIS |
qgis_short_version |
La chaîne courte de la version actuelle de QGIS |
qgis_version |
La chaîne de la version actuelle de QGIS |
qgis_version_no |
Le numéro de la version actuelle de QGIS |
row_number |
Enregistre le numéro de la ligne actuelle |
snapping_results |
Donne accès aux résultats de capture lors de la numérisation d’une entité (uniquement disponible dans la fonctionnalité d’ajout) |
scale_value |
La valeur actuelle de la distance entre les barres d’échelle |
symbol_angle |
L’angle du symbole utilisé pour rendre l’élément (valable uniquement pour les symboles de marqueur) |
symbol_color |
La couleur du symbole utilisé pour rendre l’entite |
symbol_count |
Le nombre d’entites représentés par le symbole (dans la légende de la mise en page) |
symbol_id |
L’identification interne du symbole (dans la légende de la mise en page) |
symbol_label |
L’étiquette du symbole (soit une étiquette définie par l’utilisateur, soit l’étiquette autogénérée par défaut - dans la légende de la mise en page) |
user_account_name |
Le nom utilisateur de compte du système d’exploitation actuel |
user_full_name |
Le nom d’utilisateur du système d’exploitation actuel |
value |
La valeur actuelle |
with_variable |
Permet de définir une variable à utiliser dans une expression et d’éviter de recalculer la même valeur à plusieurs reprises |
Quelques exemples :
Retourner la coordonnée X du centre d’un élément de la carte dans la mise en page: :
x( map_get( item_variables( 'map1'), 'map_extent_center' ) )
Retournez, pour chaque élément de la couche actuelle, le nombre d’éléments d’aéroport qui se superposent
aggregate( layer:='airport', aggregate:='count', expression:="code", filter:=intersects( $geometry, geometry( @parent ) ) )
Récupère l” object_id du premier point accroché d’une ligne
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. Fonctions récentes¶
Ce groupe contient des fonctions récemment utilisées. Selon le contexte de son utilisation (sélection entites, calculatrice de champs, générique), les expressions récemment appliquées sont ajoutées à la liste correspondante (jusqu’à dix expressions), triées de plus récentes à moins récentes. Il est ainsi facile de récupérer et de réappliquer rapidement les expressions précédemment utilisées.
14.2.3. Éditeur de fonctions¶
Avec l’onglet editeur de fonction, vous pouvez écrire vos propres fonctions en langage Python. Cela fournit un moyen pratique et confortable de répondre à des besoins particuliers qui ne seraient pas couverts par les fonctions prédéfinies.

Fig. 14.66 L’onglet Éditeur de fonctions¶
Pour créer une nouvelle fonction :
Entrez un nom à utiliser dans le formulaire qui apparaît et appuyez sur OK.
Un nouvel élément du nom que vous fournissez est ajouté dans le panneau de gauche de l” onglet Editeur de fonctions; il s’agit d’un fichier Python
.py
basé sur le fichier modèle QGIS et stocké dans le dossier/python/expressions
sous le répertoire du profil utilisateur en cours.Le panneau de droite affiche le contenu du fichier: un modèle de script python. Mettez à jour le code et son aide en fonction de vos besoins.
Appuyez sur le bouton
Enregistrer et charger les fonctions. La fonction que vous avez écrite est ajoutée à l’arborescence des fonctions dans l’onglet Expression, par défaut sous le groupe
Personnalisé
.Profitez donc de votre nouvelle fonction.
Si la fonction nécessite des améliorations, activez l’onglet Editeur de fonctions, effectuez les modifications et appuyez à nouveau sur le bouton
Enregistrer et charger les fonctions pour les rendre disponibles dans le fichier, donc dans n’importe quel onglet d’expression.
Les fonctions Python personnalisées sont stockées sous le répertoire du profil utilisateur, ce qui signifie qu’à chaque démarrage de QGIS, il chargera automatiquement toutes les fonctions définies avec le profil utilisateur actuel. Sachez que les nouvelles fonctions ne sont enregistrées que dans le dossier /python/expressions
et non dans le fichier de projet. Si vous partagez un projet qui utilise l’une de vos fonctions personnalisées, vous devrez également partager le fichier .py
dans le dossier /python/expressions
.
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 :

Fig. 14.67 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.