` `
Based on layer data and prebuilt or user defined functions, Expressions offer a powerful way to manipulate attribute value, geometry and variables in order to dynamically change the geometry style, the content or position of the label, the value for diagram, the height of a composer item, select some features, create virtual field ...
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:
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 paramétrant un symbole de couche de type générateur de géométrie ;
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 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
Likewise, the previous expression could also be used to define which features should be labeled or shown in the map.
Using expressions offers you a lot of possibilities.
Astuce
Use named parameters to improve the expression reading
Some functions require many parameters to be set. The expression engine supports the use of named parameters. This means that instead of writing the cryptic expression clamp( 1, 2, 9), you can use clamp( min:=1, value:=2, max:=9). This also allows arguments to be switched, e.g. clamp( value:=2, max:=9, min:=1). Using named parameters helps clarify what the arguments for an expression function refer to, which is helpful when you are trying to interpret an expression at a later date!
The Expression tab provides the main interface to write expressions using functions, layer’s fields and values. It contains widgets to:
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’ | Insert un retour à la ligne dans une chaîne de caractère |
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%'
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 |
regexp_match | Returns true if any part of a string matches the supplied regular expression |
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
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 | Returns the inverse tangent of a value in radians |
atan2(y,x) | Returns the inverse tangent of y/x by using the signs of the two arguments to determine the quadrant of the result |
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 |
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 | Returns the largest value in a set of values |
min | Returns the smallest value in a set of values |
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 |
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 |
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 | Returns the aggregate maximum value from a field or expression |
mean | Returns the aggregate mean value from a field or expression |
median | Returns the aggregate median value from a field or expression |
min_length | Returns the minimum length of strings from a field or expression |
minimum | Returns the aggregate minimum value from a field or expression |
minority | Returns the aggregate minority of values (least commonly occurring value) from a field or expression |
q1 | Returns the calculated first quartile from a field or expression |
q3 | Returns the calculated third quartile from a field or expression |
range | Returns the aggregate range of values (maximum - minimum) from a field or expression |
relation_aggregate | Returns an aggregate value calculated using all matching child features from a layer relation |
stdev | Returns the aggregate standard deviation value from a field or expression |
sum | Returns the aggregate summed value from a field or expression |
Examples:
Return the maximum of the “passengers” field from features in the layer grouped by “station_class” field:
maximum("passengers", group_by:="station_class")
Calculate the total number of passengers for the stations inside the current atlas feature:
aggregate('rail_stations','sum',"passengers",
intersects(@atlas_geometry, $geometry))
Return the mean of the “field_from_related_table” field for all matching child features using the ‘my_relation’ relation from the layer:
aggregate_relation('my_relation', 'mean', "field_from_related_table")
ou
aggregate_relation(relation:='my_relation', calculation := 'mean',
expression := "field_from_related_table")
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_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_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) |
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 |
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_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 |
Ce groupe contient les fonctions créées par l’utilisateur. Consultez Éditeur de fonction pour plus de détails.
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. |
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 |
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. |
This group also shares several functions with the Fonctions de conversion ( to_date, to_time, to_datetime, to_interval) and Fonctions de Chaîne (format_date) groups.
Quelques exemples :
Get today’s month and year in the “month_number/year” format:
format_date(now(),'MM/yyyy')
-- Returns '03/2017'
Besides these functions, subtracting dates, datetimes or times using the - (minus) operator will return an interval.
Adding or subtracting an interval to dates, datetimes or times, using the + (plus) and - (minus) operators, will return a datetime.
Get the number of days until QGIS 3.0 release:
to_date('2017-09-29') - to_date(now())
-- Returns <interval: 203 days>
The same with time:
to_datetime('2017-09-29 12:00:00') - to_datetime(now())
-- Returns <interval: 202.49 days>
Get the datetime of 100 days from now:
now() + to_interval('100 days')
-- Returns <datetime: 2017-06-18 01:00:00>
Note
Storing date and datetime and intervals on fields
The ability to store date, time and datetime values directly on fields may depend on the data source’s provider (e.g., shapefiles accept date format, but not datetime or time format). The following are some suggestions to overcame this limitation.
date, Datetime and time can be stored in text type fields after using the to_format() function.
Intervals can be stored in integer or decimal type fields after using one of the date extraction functions (e.g., day() to get the interval expressed in days)
Contient la liste des champs de la couche.
Generally, you can use the various fields, values and functions to construct the calculation expression, or you can just type it into the box.
To display the values of a field, you just click on the appropriate field and choose between Load top 10 unique values and Load all unique values. On the right side, the Field Values list opens with the unique values. At the top of the list, a search box helps filtering the values. To add a value to the expression you are writing, double click its name in the list.
Sample values can also be accessed via right-click. Select the field name from the list, then right-click to access a context menu with options to load sample values from the selected field.
Fields name should be double-quoted in the expression. Values or string should be simple-quoted.
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. |
Ce groupe contient des fonctions génériques.
Fonction |
Description |
---|---|
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 |
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. |
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 | Returns the x coordinate of the current feature |
$x_at(n) | Returns the x coordinate of the nth node of the current feature’s geometry |
$y | Returns the y coordinate of the current feature |
$y_at(n) | Returns the y coordinate of the nth node of the current feature’s geometry |
angle_at_vertex | Returns the bisector angle (average angle) to the geometry for a specified vertex on a linestring geometry. Angles are in degrees clockwise from north |
area | 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 | Returns the north-based azimuth as the angle in radians measured clockwise from the vertical on point_a to point_b |
boundary | Returns the closure of the combinatorial boundary of the geometry (ie the topological boundary of the geometry). |
bounds | Returns a geometry which represents the bounding box of an input geometry. Calculations are in the Spatial Reference System of this geometry |
bounds_height | Returns the height of the bounding box of a geometry. Calculations are in the Spatial Reference System of this geometry |
bounds_width | Returns the width of the bounding box of a geometry. Calculations are in the Spatial Reference System of this geometry |
buffer | Returns a geometry that represents all points whose distance from this geometry is less than or equal to distance. Calculations are in the Spatial Reference System of this geometry |
centroid | Returns the geometric center of a geometry |
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 | Returns the convex hull of a geometry (this represents the minimum convex geometry that encloses all geometries within the set) |
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) | Returns a geometry that represents that part of geometry a that does not intersect with geometry b |
disjoint | Renvoie 1 (vrai) si les géométries ne partagent aucun espace ensemble. |
distance | Returns the minimum distance (based on Spatial Reference System) between two geometries in projected units |
distance_to_vertex | Renvoie la distance le long de la géométrie à un sommet spécifié |
end_point | Returns the last node from a geometry |
exterior_ring | Returns a line string representing the exterior ring of a polygon geometry, or null if the geometry is not a polygon |
extrude(geom,x,y) | Returns an extruded version of the input (Multi-) Curve or (Multi-)Linestring geometry with an extension specified by x and y |
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. |
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 | Returns a geometry that represents the shared portion of two geometries |
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 | Tests whether a geometry’s bounding box overlaps another geometry’s bounding box. Returns 1 (true) if the geometries spatially intersect (share any portion of space) their bounding box, or 0 if they don’t |
is_closed | Returns true if a line string is closed (start and end points are coincident), false if a line string is not closed, or null if the geometry is not a line string |
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 | Returns the point interpolated by a specified distance along a linestring geometry. |
line_locate_point | Returns the distance along a linestring corresponding to the closest position the linestring comes to a specified point geometry. |
line_merge | Returns a (Multi-)LineString geometry, where any connected LineStrings from the input geometry have been merged into a single linestring. |
m | Returns the m value of a point geometry |
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) | Returns a point geometry from x and y (and optional z or m) values |
make_point_m(x,y,m) | Returns a point geometry from x and y coordinates and m values |
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 |
nodes_to_points | Returns a multipoint geometry consisting of every node in the input geometry |
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 |
order_parts | Ré-arrange les parties d’une géométrie multiple selon le critère donné |
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 | Returns a specific node from a geometry |
point_on_surface | Returns a point guaranteed to lie on the surface of a geometry |
project | Returns a point projected from a start point using a distance and bearing (azimuth) in radians |
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 | Reverses the direction of a line string by reversing the order of its vertices |
segments_to_lines | Returns a multi line geometry consisting of a line for every segment in the input geometry |
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 |
start_point | Returns the first node from a geometry |
sym_difference | Returns a geometry that represents the portions of two geometries that do not intersect |
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 | Returns the geometry transformed from the source CRS to the destination CRS |
translate | Returns a translated version of a geometry. Calculations are in the Spatial Reference System of this geometry |
union | Renvoie une géométrie qui représente l’ensemble de points unis des géométries |
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 | Returns the x coordinate of a point geometry, or the x coordinate of the centroid for a non-point geometry |
x_min | Returns the minimum x coordinate of a geometry. Calculations are in the Spatial Reference System of this geometry |
x_max | Returns the maximum x coordinate of a geometry. Calculations are in the Spatial Reference System of this geometry |
y | Returns the y coordinate of a point geometry, or the y coordinate of the centroid for a non-point geometry |
y_min | Returns the minimum y coordinate of a geometry. Calculations are in the Spatial Reference System of this geometry |
y_max | Returns the maximum y coordinate of a geometry. Calculations are in the Spatial Reference System of this geometry |
z | Returns the z coordinate of a point geometry |
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 )
Return the x coordinate of the current feature’s centroid:
x( $geometry )
Renvoie une valeur selon la surface de l’entité:
CASE WHEN $area > 10 000 THEN 'Larger' ELSE 'Smaller' END
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 |
$map | Returns the id of the current map item if the map is being drawn in a composition, or “canvas” if the map is being drawn within the main QGIS window |
$rownum | Returns the number of the current row |
$scale | Returns the current scale of the map canvas |
attribute | Returns the value of a specified attribute from a feature |
get_feature | Returns the first feature of a layer matching a given attribute value |
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') ) ) )
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 | Returns a string with supplied width padded using the fill character |
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 | Returns a string with the supplied string replaced |
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 | Returns a string with supplied width padded using the fill character |
strpos | Returns the index of a regular expression in a string |
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 |
This group contains recently used functions. Any expression used in the Expression dialog is added to the list, sorted from the more recent to the less one. This helps to quickly retrieve any previous expression.
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 Sélection les entités en utilisant une expression.
à partir de la boîte de dialogue des propriétés de la couche.
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 |
---|---|
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 | Returns the number of pages in composition |
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_pagename | Renvoie le nom de la page courante de l’atlas. |
atlas_totalfeatures | Renvoie le nombre total d’entités de l’atlas. |
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 composer item user ID (not necessarily unique) |
item_uuid | Returns the composer item unique ID |
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_numpages | Returns the number of pages in the composition |
layout_pageheight | Returns the composition height in mm |
layout_pagewidth | Returns the composition width in mm |
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 composer map renders |
map_rotation | Retourne la rotation actuelle de la carte |
map_scale | Renvoie l’échelle actuelle de la carte. |
project_filename | Returns the filename of current project |
project_folder | Returns the folder for current project |
project_path | Returns the full path (including file name) of current project |
project_title | Renvoie le titre du projet actuel |
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_version | Renvoie la version de QGIS utilisée |
qgis_version_no | Renvoie le numéro de version de QGIS |
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 the Function Editor, you are able to define your own Python custom functions in a comfortable way.
The function editor will create new Python files in .qgis2\python\expressions folder and will auto load all functions defined when starting QGIS. Be aware that new functions are only saved in the expressions folder and not in the project file. If you have a project that uses one of your custom functions you will need to also share the .py file in the expressions folder.
Voici un court exemple de comment créer vos propres fonctions :
@qgsfunction(args="auto", group='Custom')
def myfunc(value1, value2, feature, parent):
pass
The short example creates a function myfunc that will give you a function with two values. When using the args='auto' function argument the number of function arguments required will be calculated by the number of arguments the function has been defined with in Python (minus 2 - feature, and parent).
This function then can be used with the following expression:
myfunc('test1', 'test2')
Your function will be implemented in the Custom functions group of the Expression tab after using the Run Script button.
Plus d’informations sur la création de code Python peuvent être trouvées dans Développement PyQGIS - Livre de recettes.
The function editor is not only limited to working with the field calculator, it can be found whenever you work with expressions.