` `
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 ...
Main dialog to build expressions, the Expression string builder is available from many parts in QGIS and, can particularly be accessed when:
Dialogul Constructorului de Expresii oferă acces la:
Some use cases of expressions:
De la câmp Calculator, se calculează câmpul “pop_density” folosind câmpurile existente “total_pop” și “area_km2”:
"total_pop" / "area_km2"
Actualizarea câmpului “density_level” cu categorii, în funcție de valorile “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
Aplicarea unui stil categorisit pentru toate entitățile, în funcție de prețul mediu al casei, dacă este mai mică sau mai mare de 10000€ pe metru pătrat:
"price_m2" > 10000
Folosind instrumentul de “Selectare După Expresie...”, selectați toate entitățile care reprezintă zonele cu “Densitate ridicată a populației” și în care prețul mediu pentru o casă este mai mare de 10000€ pe metru pătrat:
"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.
Tip
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:
Acest grup cuprinde operatorii (ex.: +, -, *). De notat că pentru majoritatea funcțiilor matematice de mai jos, în cazul în care una dintre intrări are valoarea NULL, atunci rezultatul este NULL.
Funcția |
Descriere |
---|---|
a + b | Adunarea a două valori (a plus b) |
a - b | Scăderea a două valori (a minus b) |
a * b | Înmulțirea a două valori (a înmulțit cu b) |
a / b | Împărțirea a două valori (a împărțit la b) |
a % b | Restul împărțirii lui a la b (ex.: 7 % 2 = 1, sau 2 se potrivește de trei ori în 7, având restul 1) |
a ^ b | Puterea a două valori (de exemplu, 2^2=4 or 2^3=8) |
a < b | Compară două valori și le evaluează la 1, dacă valoarea din stânga este mai mică decât cea din dreapta. (a este mai mic decât b) |
a <= b | Compares two values and evaluates to 1 if the left value isless than or equal to the right value |
a <> b | Compară două valori, și le evaluează la 1 dacă acestea nu sunt egale |
a = b | Compară două valori și le evaluează la 1, dacă acestea sunt egale |
a != b | a și b nu sunt egale |
a > b | Compară două valori și le evaluează la 1, dacă valoarea din stânga este mai mare decât cea din dreapta (a este mai mare decât b) |
a >= b | Compară două valori și le evaluează la 1, dacă valoarea din stânga este mai mare sau egală cu cea din dreapta |
a ~ b | a se potrivește cu expresia regulată b |
|| | Îmbină două valori într-un șir. Dacă una dintre valori este NULL, atunci rezultatul va fi NULL. |
‘\n’ | Introduce o nouă linie într-un șir |
LIKE | Returnează 1 dacă primul parametru se potrivește cu modelul furnizat |
ILIKE | Returnează 1 dacă primul parametru se potrivește, în mod insensibil la context, cu modelul furnizat. (ILIKE poate fi folosit în loc de LIKE, pentru a realiza o identificare insensibilă la context) |
a IS b | Stabilește dacă două valori sunt identice. Returnează 1 dacă a este similar cu b |
a OR b | Returns 1 when condition a or condition b is true |
a AND b | Returns 1 when conditions a and b are true |
NOT | Neagă o condiție |
nume de coloană “numele coloanei” |
Valoarea din câmpul reprezentat de numele coloanei; a se vedea mai jos, pentru a nu face confuzie cu ghilimelele simple |
‘șir’ |
o valoare de tip șir; a se vedea mai sus, pentru a nu face confuzie cu ghilimelele duble |
NULL | valoarea NULL |
a IS NULL | a nu are nici o valoare |
a IS NOT NULL | a are o valoare |
a IN (value[,value]) | a se află în lista de valori |
a NOT IN (value[,value]) | a nu se află în lista de valori |
Note
About fields concatenation
You can concatenate strings using either || or +. The latter also means sum up expression. So if you have an integer (field or numeric value) this can be error prone. In this case, you should use ||. If you concatenate two string values, you can use both.
Câteva exemple:
Îmbină un șir cu o valoare din numele unei coloane:
'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" || ')'
Testați dacă atributul câmpului “description” începe cu șirul ‘Hello’ (notați poziția caracterului %):
"description" LIKE 'Hello%'
Acest grup conține funcții care gestionează verificările condiționale din expresii.
Funcția |
Descriere |
---|---|
CASE WHEN ... THEN ... END | Evaluează o expresie și returnează un rezultat dacă este adevărat. Aveți posibilitatea să testați mai multe condiții |
CASE WHEN ... THEN ... ELSE ... END | Evaluează o expresie și returnează diverse rezultate, în funcție de valorile returnate, true sau false. Aveți posibilitatea de a testa mai multe condiții |
coalesce | Returnează prima valoare non-NULL din lista de expresii |
if | Teste o condiție și returnează un rezultat diferit, în funcție de verificarea condițională |
regexp_match | Returns true if any part of a string matches the supplied regular expression |
Câteva exemple:
Trimite înapoi o valoare în cazul în care prima condiție este adevărată, altfel, transmite o altă valoare:
CASE WHEN "software" LIKE '%QGIS%' THEN 'QGIS' ELSE 'Other' END
Acest grup conține funcții matematice (ex.: rădăcina pătrată, sin și cos).
Funcția |
Descriere |
---|---|
abs | Returnează valoarea absolută a unui număr |
acos | Returnează cosinusul invers al unei valori, în radiani |
asin | Returnează sinusul invers al unei valori, în radiani |
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) | Returnează azimutul, în funcție de nord, ca unghiul măsurat în radiani, în sens orar, pe verticală, de la punctul a la punctul b |
ceil | Rotunjește în sus un număr |
clamp | Restricționează într-un interval specificat o valoare de intrare |
cos | Returnează cosinusul unei valori, în radiani |
degrees | Convertește din radiani în grade |
exp | Returnează exponentul unei valori |
floor | Rotunjește în jos un număr |
ln | Returnează logaritmul natural al expresiei transmise |
log | Returnează valoarea logaritmului pentru valoarea și baza transmise |
log10 | Returnează valoarea logaritmului în baza 10 pentru expresia transmisă |
max | Returns the largest value in a set of values |
min | Returns the smallest value in a set of values |
pi | Returnează valoarea pi, pentru calcule |
radians | Convertește din grade în radiani |
rand | Returnează un număr aleator întreg, în intervalul specificat de argumentele minim și maxim (inclusiv). |
randf | Returnează un număr aleator zecimal, în intervalul specificat de argumentele minim și maxim (inclusiv) |
round | Rotunjește la numărul de poziții zecimale |
scale_exp | Transformă o valoare dată dintr-un domeniu de intrare la un interval de ieșire, folosind o curbă exponențială |
scale_linear | Transformă o valoare dată dintr-un domeniu de intrare la un interval de ieșire, folosind o interpolare liniară |
sin | Returnează sinusul unui unghi |
sqrt | Returnează rădăcina pătrată a unei valori |
tan | Returnează tangenta unui unghi |
This group contains functions which aggregate values over layers and fields.
Funcția |
Descriere |
---|---|
aggregate | Returns an aggregate value calculated using features from another layer |
concatenate | Returns the all aggregated strings from a field or expression joined by a delimiter |
count | Returns the count of matching features |
count_distinct | Returns the count of distinct values |
count_missing | Returns the count of missing (null) values |
iqr | Returns the calculated inter quartile range from a field or expression |
majority | Returns the aggregate majority of values (most commonly occurring value) from a field or expression |
max_length | Returns the maximum length of strings from a field or 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 |
Exemple:
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")
sau:
aggregate_relation(relation:='my_relation', calculation := 'mean',
expression := "field_from_related_table")
Acest grup conține funcții pentru manipularea culorilor.
Funcția |
Descriere |
---|---|
color_cmyk | Returnează o reprezentare de tip șir a unei culori, în funcție de componentele ei cyan, magenta, galben și negru |
color_cmyka | Returnează o reprezentare de tip șir a unei culori, în funcție de componentele ei cyan, magenta, galben, negru și alpha (transparență) |
color_hsl | Returnează o reprezentare de tip șir a culorii, pe baza atributelor nuanței, saturației și luminozității |
color_hsla | Returnează o reprezentare de tip șir a culorii, pe baza atributelor nuanței, saturației, luminozității și alpha (transparență) |
color_hsv | Returnează o reprezentare de tip șir a culorii, pe baza atributelor nuanței, saturației și valorii |
color_hsva | Returnează o reprezentare de tip șir a culorii, pe baza atributelor nuanței, saturației, valorii și alpha (transparență) |
color_part | Returnează o componentă specifică dintr-un șir de culoare, de exemplu, o componentă roșie sau o componentă alfa |
color_rgb | Returnează o reprezentare de tip șir a culorii, pe baza componentelor roșie, verde și albastră |
color_rgba | Returnează o reprezentare de tip șir a culorii, pe baza componentelor roșie, verde, albastră și alpha (transparență) |
darker | Returnează o culoare, de tip șir, mai închisă (sau mai deschisă) |
lighter | Returnează o culoare, de tip șir, mai deschisă (sau mai închisă) |
project_color | Returnează o culoare din schema de culori a proiectului |
ramp_color | Returnează o reprezentare de tip șir a culorii, dintr-un interval de culori |
set_color_part | Setează o componentă de culoare specifică pentru un șir de culoare, cum ar fi o componentă roșie sau o componentă alfa |
Acest grup conține funcții pentru transformarea dintr-un tip de dată în altul (ex.: din șir în întreg, din întreg în șir).
Funcția |
Descriere |
---|---|
to_date | Convertește un șir într-un obiect de tip dată |
to_datetime | Convertește un șir într-un obiect datetime |
to_int | Convertește un șir într-un număr întreg |
to_interval | Convertește un șir într-un interval (poate fi folosit pentru a returna zilele, orele, lunile, etc dintr-o dată) |
to_real | Convertește un șir într-un număr real |
to_string | Convertește un număr într-un șir |
to_time | Convertește un șir într-un obiect time |
This group contains functions created by the user. See Editorul de Funcții for more details.
Acest grup conține funcții care gestionează datele calendaristice și ora.
Funcția |
Descriere |
---|---|
age | Returnează diferența dintre două date sau de tip datetimes, sub formă de interval |
day | Extrage ziua dintr-o dată sau dintr-o valoare datetime, sau numărul de zile dintr-un interval. |
day_of_week | Returnează un număr corespunzător zilei din săptămână, pentru data sau valoarea datetime specificată |
hour | Extrage partea corespunzătoare orei dintr-o valoare datetime sau time, sau numărul de ore dintr-un interval |
minute | Extrage partea corespunzătoare minutelor dintr-o valoare datetime sau time, sau numărul de minute dintr-un interval. |
month | Extrage partea corespunzătoare lunii dintr-o valoare datetime sau time, sau numărul lunii dintr-un interval. |
now | Returnează data și ora curente |
secundă |
Extrage partea corespunzătoare secundelor dintr-o valoare time sau datetime, sau numărul de secunde dintr-un interval |
week | Extrage numărul săptămânii dintr-o valoare date sau datetime, sau numărul de săptămâni dintr-un interval |
year | Extrage partea corespunzătoare anului dintr-o valoare datetime sau time, sau numărul de ani dintr-un interval |
This group also shares several functions with the Conversions Functions ( to_date, to_time, to_datetime, to_interval) and Funcții pentru Șiruri (format_date) groups.
Câteva exemple:
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)
Conține o listă de câmpuri dintr-un strat.
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.
Acest grup conține funcții pentru comparații fuzzy între valori.
Funcția |
Descriere |
---|---|
hamming_distance | Returnează numărul de caractere la pozițiile corespunzătoare acelora din șirurilor de intrare, ale căror caractere sunt diferite |
levensheim | Returnează numărul minim de modificări de caractere (inserări, ștersături sau înlocuiri) necesare pentru a schimba un șir într-altul. Măsoară similitudinea dintre două șiruri |
longest_common_substring | Returnează cel mai lung subșir comun dintre două șiruri |
soundex | Returnează reprezentarea Soundex a unui șir de caractere |
Acest grup conține diverse funcții generale.
Funcția |
Descriere |
---|---|
eval | Evaluează o expresie care este transmisă într-un șir. Folosește pentru a extinde parametrii dinamici transmiși ca variabile de context sau câmpuri |
layer_property | Returnează o proprietate a unui strat sau o valoare a metadatelor sale. Aceasta poate fi numele stratului, crs-ul, tipul geometriei, numărul de entități... |
var | Returnează valoarea stocată într-o variabilă specificată. A se vedea funcțiile variabile de mai jos |
Acest grup conține funcții care operează asupra geometriei obiectelor (de ex.: lungimea, suprafața).
Funcția |
Descriere |
---|---|
$area | Returnează aria entității curente |
$geometry | Returnează geometria entității curente (se poate folosi pentru prelucrarea cu alte funcții) |
$length | Returnează lungimea entității curente de tip linie |
$perimeter | Returnează perimetrul entității curente de tip poligon |
$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 | Returnează aria unei entități de geometrie poligonală. Calculele sunt în Sistemul de Referință Spațială al acestei geometrii |
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 | Returnează cel mai apropiat punct al unei geometrii față de o alta |
combine | Returnează combinația a două geometrii |
contains(a,b) | Returnează 1 (true) dacă și numai dacă nici un punct al geometriei b nu se află în exteriorul geometriei a, și cel puțin un punct din interiorul lui b se află în interiorul lui a |
convex_hull | Returns the convex hull of a geometry (this represents the minimum convex geometry that encloses all geometries within the set) |
crosses | Returnează 1 (true) dacă geometriile respective au unele puncte interioare, dar nu toate, în comun |
difference(a,b) | Returns a geometry that represents that part of geometry a that does not intersect with geometry b |
disjoint | Returnează 1 (true) dacă geometriile nu partajează nici un fel de spațiu |
distance | Returns the minimum distance (based on Spatial Reference System) between two geometries in projected units |
distance_to_vertex | Returns the distance along the geometry to a specified vertex |
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 | Returnează geometria dintr-o reprezentare GML a unei geometrii |
geom_from_wkt | Returnează o geometrie creată dintr-o reprezentare Well-Known Text (WKT) |
geom_to_wkt | Returnează reprezentarea Well-Known Text (WKT) a unei geometrii, fără metadatele SRID |
geometrie |
Returnează geometria unei entități |
geometry_n | Returnează geometria n dintr-o colecție de geometrii, sau null dacă geometria de intrare nu reprezintă o colecție |
interior_ring_n | Returnează inel interior n dintr-o geometrie poligonală, sau null dacă geometria de intrare nu reprezintă un poligon |
intersection | Returns a geometry that represents the shared portion of two geometries |
intersects | Testează dacă o geometrie intersectează o alta. Returnează 1 (true) dacă geometriile se intersectează spațial (partajează oricare parte din spațiu) și 0 în caz contrar |
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 | Returnează lungimea unei entități cu geometria de tip linie (sau lungimea unui șir de caractere) |
line_interpolate_angle | Returns the angle parallel to the geometry at a specified distance along a linestring geometry. Angles are in degrees clockwise from north. |
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 | Creează o geometrie de tip linie, dintr-o serie de geometrii de tip punct |
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 | Creează o geometrie de tip poligon, dintr-un inel exterior și dintr-o serie de geometrii inelare interioare |
nodes_to_points | Returns a multipoint geometry consisting of every node in the input geometry |
num_geometries | Returnează numărul de geometrii dintr-o colecție geometrică, sau null dacă geometria de intrare nu reprezintă o colecție |
num_interior_rings | Returnează numărul de inele interioare dintr-un poligon sau dintr-o colecție geometrică, sau null dacă geometria de intrare nu reprezintă un poligon sau o colecție |
num_points | Returnează numărul de vertecși dintr-o geometrie |
num_rings | Returnează numărul de inele (incluzând inelele exterioare) dintr-un poligon sau dintr-o colecție geometrică, sau null dacă geometria de intrare nu reprezintă un poligon sau o colecție |
order_parts | Ordonează părțile unei MultiGeometrii după anumite criterii |
overlaps | Testează dacă o geometrie se suprapune peste alta. Returnează 1 (true) dacă geometriile partajează un spațiu, sunt de aceeași dimensiune, dar nu sunt complet conținute una în cealaltă |
perimeter | Returnează perimetrul unei entități de geometrie poligonală. Calculele sunt în Sistemul de Referință Spațială al acestei geometrii |
point_n | Returns a specific node from a geometry |
point_on_surface | Returns a point guaranteed to lie on the surface of a geometry |
proiect |
Returns a point projected from a start point using a distance and bearing (azimuth) in radians |
relate | Testează sau returnează Modelul Dimensional Extins cu 9 Intersecții (DE-9IM), de reprezentare a relațiilor dintre două geometrii |
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 | Returnează cea mai scurtă linie care unește două geometrii. Linia rezultată va începe la geometria 1 și se va încheia la geometria 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 | Testează dacă o geometrie o atinge pe alta. Returnează 1 (true) dacă geometriile respective au cel puțin un punct în comun, dar interioarele lor nu se intersectează |
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 | Returnează o geometrie care reprezintă setul de puncte reunit al geometriilor |
within (a,b) | Testează dacă o geometrie este conținută în alta. Returnează 1 (true) dacă geometria a este complet inclusă în geometria 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 |
Câteva exemple:
You can manipulate the current geometry with the variable $geometry to create a buffer or get the point on surface:
buffer( $geometry, 10 )
point_on_surface( $geometry )
Return the x coordinate of the current feature’s centroid:
x( $geometry )
Trimite înapoi o valoare în funcție de suprafața entității:
CASE WHEN $area > 10 000 THEN 'Larger' ELSE 'Smaller' END
Acest grup conține funcții care operează asupra identificatorilor de înregistrare.
Funcția |
Descriere |
---|---|
$currentfeature | Returnează entitatea care este evaluată în mod curent. Se poate utiliza cu funcția ‘atribut’ pentru a evalua valorile atributelor din entitatea curentă. |
$id | Returnează id-ul entității din rândul curent |
$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 |
atribut |
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 | Generates a Universally Unique Identifier (UUID) for each row. Each UUID is 38 characters long. |
Câteva exemple:
Returnează prima entitate din stratul “LayerA”, al cărui câmp “id” are aceeași valoare ca și câmpul “nume” al entității curente (un fel de relație):
get_feature( 'layerA', 'id', attribute( $currentfeature, 'name') )
Se calculează aria entității îmbinate, din exemplul anterior:
area( geometry( get_feature( 'layerA', 'id', attribute( $currentfeature, 'name') ) ) )
Acest grup conține funcții care operează asupra șirurilor, (de ex: înlocuirea, conversia în majuscule).
Funcția |
Descriere |
---|---|
char | Returns the character associated with a unicode code |
concat | Concatenează mai multe șiruri într-unul |
format | Formatează un șir folosind argumentele furnizate |
format_date | Formatează un tip de dată sau un șir într-un format personalizat de tip text |
format_number | Returnează un număr formatat, cu separatorul local pentru mii (trunchiază, de asemenea, la numărul de cifre specificate) |
left(string, n) | Returnează un subșir care conține n caractere din stânga șirului |
length | Returnează lungimea unui șir (sau lungimea unei entități cu geometria de tip linie) |
lower | Convertește un șir în litere mici |
lpad | Returns a string with supplied width padded using the fill character |
regexp_replace | Returnează șirul înlocuit cu expresia regulată furnizată |
regexp_substr | Returnează porțiunea dintr-un șir care se potrivește cu expresia regulată specificată |
replace | Returns a string with the supplied string replaced |
right(string, n) | Returnează un subșir care conține n caractere din stânga șirului |
rpad | Returns a string with supplied width padded using the fill character |
strpos | Returns the index of a regular expression in a string |
substr | Returnează o parte dintr-un șir |
title | Convertește, în nume proprii, toate cuvintele unui șir (toate cuvintele fiind scrise cu minuscule, având o majusculă la început). |
trim | Elimină toate spațiile albe de la începutul și de la sfârșitul unui șir (spații, tab-uri, etc) |
upper | Convertește un șir în majuscule. |
wordwrap | Returnează un șir cu un număr maxim/minim de caractere per linie |
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.
Acest grup cuprinde variabile dinamice referitoare la aplicație, fișierul de proiect și alte setări. Aceasta înseamnă că anumite funcții pot nu fie disponibile, în funcție de context:
din dialogul cu proprietățile stratului
Pentru a utiliza aceste funcții într-o expresie, acestea ar trebui să fie precedate de caracterul @ (ex.: @row_number). Sunt luate în considerare:
Funcția |
Descriere |
---|---|
atlas_feature | Returnează entitatea curentă a atlasului (ca obiect entitate) |
atlas_featureid | Returnează ID-ul entității curente a atlasului |
atlas_featurenumber | Returns the number of pages in composition |
atlas_filename | Returnează numele curent al fișierului atlasului |
atlas_geometry | Returnează geometria entității curente a atlasului |
atlas_pagename | Returnează numele paginii curente a atlasului |
atlas_totalfeatures | Returnează numărul total de entități din atlas |
grid_axis | Returnează axele actuale ale adnotării din grilă (de exemplu, ‘x’ pentru longitudine, ‘y’ pentru latitudine) |
grid_number | Returnează valoarea actuală a adnotării din grilă |
item_id | Returns the composer item user ID (not necessarily unique) |
item_uuid | Returns the composer item unique ID |
layer_id | Returnează ID-ul stratului curent |
layer_name | Returnează numele stratului curent |
layout_dpi | Returnează rezoluția compoziției (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 | Returnează entitatea de tip punct din centrul hărții |
map_extent_height | Returnează înalțimea curentă a hărții |
map_extent_width | Returnează lățimea curentă a hărții |
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 | Returnează rotația curentă a hărții |
map_scale | Returnează scara curentă a hărții |
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 | Returnează titlul proiectului curent |
qgis_os_name | Returnează numele Sistemului de Operare curent, ex.: ‘windows’, ‘linux’ sau ‘osx’ |
qgis_platform | Returnează platforma QGIS, ex.: ‘desktop’ sau ‘server’ |
qgis_release_name | Returnează numele versiunii curente de QGIS |
qgis_version | Returnează textul versiunii curente de QGIS |
qgis_version_no | Returnează numărul versiunii curente de QGIS |
symbol_angle | Returnează unghiul simbolului utilizat pentru randarea entității (valabil numai pentru însemnele simbolurilor) |
symbol_color | Returnează culoarea simbolului utilizat pentru a randa entitatea |
user_account_name | Returnează numele de cont al utilizatorului curent din sistemul de operare |
user_full_name | Returnează numele utilizatorului curent din sistemul de operare |
row_number | Stochează numărul rândului curent |
valoare |
Returnează valoarea curentă |
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.
Iată un scurt exemplu cu privire la modul de creare a propriilor funcții:
@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.
Mai multe informații despre crearea de cod Python pot fi găsite în Cartea de rețete a dezvoltatorului PyQGIS.
The function editor is not only limited to working with the field calculator, it can be found whenever you work with expressions.