` `
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 ...
La finestra di dialogo principale per la creazione di espressioni Calcolatore di campi è disponibile da molte parti in QGIS e, in particolare, puoi accederci:
selecting features con lo strumento Seleziona con espressione...;
Modifica attributi per esempio con il Calcolatore di campi ;
nel costruire geometry generator un layer di simboli;
nell’attivare alcuni geoprocessing.
Le finestre di dialogo del Costruttore di Espressioni offrono l’accesso a:
Expression tab che, grazie ad un elenco di funzioni predefinite, aiuta a scrivere e controllare l’espressione da utilizzare;
Function Editor tab delle funzioni che consente di ampliare l’elenco delle funzioni creando quelle personalizzate.
Alcuni casi d’uso di espressioni:
Dal Calcolatore Campo, calcolare un campo “pop_density” utilizzando i campi esistenti “total_pop” e “area_km2”:
"total_pop" / "area_km2"
Aggiornare il campo “density_level” con le categorie in base ai valori “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
Applicare uno stile categorizzato a tutte le geometrie in base al fatto che il prezzo medio della casa sia più piccolo o superiore a 10000C per metro quadrato:
"price_m2" > 10000
Utilizzando lo strumento “Seleziona per espressione ...”, selezionare tutte le geometrie che rappresentano aree di “Alta densità di popolazione” e il cui prezzo medio di casa è superiore a 10000C per metro quadrato:
"density_level" = 'High population density' and "price_m2" > 10000
Allo stesso modo, l’espressione precedente potrebbe anche essere utilizzata per definire quali geometrie dovrebbero essere etichettate o mostrate nella mappa.
L’uso delle espressioni offre molte possibilità.
Suggerimento
Utilizzare parametri specifici per migliorare la lettura dell’espressione
Alcune funzioni richiedono che siano impostati molti parametri. Il motore di espressione supporta l’utilizzo di parametri denominati. Ciò significa che, invece di scrivere l’espressione criptica clamp( 1, 2, 9), puoi usare clamp( min:=1, value:=2, max:=9). Ciò consente inoltre l’inserimento di argomenti, ad esempio clamp( value:=2, max:=9, min:=1). L’utilizzo di parametri denominati aiuta a chiarire quali sono gli argomenti di una funzione espressione, utile quando si tenta di interpretare un’espressione in una data successiva!
The Expression tab provides the main interface to write expressions using functions, layer’s fields and values. It contains widgets to:
Questo gruppo contiene operatori (e.g., +, -, *). Si noti che per la maggior parte delle funzioni matematiche di seguito se uno dei input è NULL il risultato è NULL.
Funzioni |
Descrizione |
---|---|
a + b | Somma di due valori (a più b) |
a - b | Sottrazione tra due valori (a meno b). |
a * b | Moltiplicazione tra due valori (a moltiplicato per b) |
a / b | Divisione tra due valori (a diviso per b) |
a % b | Resto della divisione di a diviso b (ad esempio, 7 % 2 = 1 o 2 si entra nel 7 tre volte con il resto di 1) |
a ^ b | Elevazione a potenza di due valori (ad esempio, 2^2=4 o 2^3=8) |
a < b | Confronta due valori e restituisce 1 se il valore di sinistra è inferiore al valore di destra (a è minore di b) |
a <= b | Confronta due valori e restituisce 1 se il valore di sinistra è minore o uguale al valore di destra |
a <> b | Confronta due valori e restituisce 1 se non sono uguali |
a = b | Confronta due valori e restituisce 1 se sono uguali |
a ! = b |
a e b non sono uguali |
a > b | Confronta due valori e restituisce 1 se il valore di sinistra è maggiore del valore di destra (a è maggiore di b) |
a >= b | Confronta due valori e restituisce 1 se il valore di sinistra è maggiore o uguale al valore di destra |
a ~ b | a corrisponde al valore assoluto di b |
|| | Unisce insieme due valori in una stringa. Se uno dei valori è NULL, il risultato sarà NULL |
‘\n’ | Inserisce una nuova riga in una stringa |
LIKE | Restituisce 1 se il primo parametro corrisponde al filtro scelto |
ILIKE | Restituisce 1 se il primo parametro corrisponde senza distinzione tra maiuscole e minuscole al filtro scelto (ILIKE può essere usato al posto di LIKE per rendere la corrispondenza senza distinzione tra maiuscole e minuscole) |
a IS b | Verifica se due valori sono identici. Restituisce 1 se a è uguale a b |
a OR b | Restituisce 1 quando la condizione a o la condizione b è vera |
a AND b | Restituisce 1 quando le condizioni a e b sono vere |
NOT | Inverte una condizione |
column name “column name” | Valore del nome della colonna del campo, fare attenzione a non essere confuso con i semplici apici, vedi sotto |
‘string’ | valore stringa, fare attenzione a non essere confuso gli apici doppi, vedi sopra |
NULL | valore nullo |
a IS NULL | a ha valore nullo |
a IS NOT NULL | a contiene un valore |
a IN (value[,value]) | a ha valore contenuto nei valori in lista |
a NOT IN (value[,value]) | il valore di a non è tra i valori in lista |
Nota
Informazioni sulla concatenazione dei campi
Puoi concatenare le stringhe utilizzando o || o +. Quest’ultimo ha anche il significato di somma. Quindi, se si dispone di un numero intero (campo o valore numerico) questo può essere causa di errore. In questo caso, si dovrebbe usare ||. Se concatenate due valori di stringa, è possibile utilizzare entrambi.
Alcuni esempi:
Unire una stringa e un valore da un nome di colonna:
'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" || ')'
Testare se il campo di attributo “descrizione” inizia con la stringa “Hello” (notare la posizione del carattere %):
"description" LIKE 'Hello%'
Questo gruppo contiene funzioni per eseguire controlli condizionali nelle espressioni.
Funzioni |
Descrizione |
---|---|
CASE WHEN ... THEN ... END | Valuta un’espressione e restituisce un risultato se è vera. Puoi testare più condizioni |
CASE WHEN ... THEN ... ELSE ... END | Valuta un’espressione e restituisce un risultato diverso secondo se è vera o falsa. Puoi testare più condizioni |
coalesce | Restituisce il primo valore non NULL dall’elenco in espressione |
if | Verifica una condizione e restituisce un risultato diverso a seconda della verifica della condizione |
regexp_match | Returns true if any part of a string matches the supplied regular expression |
Alcuni esempi
Restituisce un valore se la prima condizione è vera, altrimenti un altro valore
CASE WHEN "software" LIKE '%QGIS%' THEN 'QGIS' ELSE 'Other' END
Questo gruppo contiene funzioni matematiche (ad es. Radice quadrata, seno e coseno).
Funzioni |
Descrizione |
---|---|
abs | Restituisce il valore assoluto di un numero |
acos | Restituisce l’arcocoseno di un valore in radianti |
asin | Restituisce l’arcoseno di un valore in radianti |
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) | Restituisce l’azimut a nord come angolo in radianti misurato in senso orario dalla verticale sul punto a al punto b |
ceil | Arrotonda un numero verso l’alto |
clamp | Limita un valore in ingresso a un intervallo specificato |
cos | Restituisce il coseno di un angolo in radianti |
degrees | Converte da radianti a gradi |
exp | Restituisce un valore esponenziale |
floor | Arrotonda un numero verso il basso |
ln | Restituisce il logaritmo naturale dell’espressione immessa |
log | Restituisce il valore del logaritmo immesso in una data base |
log10 | Restituisce il valore del logaritmo di base 10 dell’espressione immessa |
max | Returns the largest value in a set of values |
min | Returns the smallest value in a set of values |
pi | Restituisce il valore di pi greco per i calcoli |
radians | Converte da gradi a radianti |
rand | Restituisce il numero intero casuale nell’intervallo specificato dal parametro minimo e massimo (incluso) |
randf | Restituisce il numero reale casuale all’interno dell’intervallo specificato dal parametro minimo e massimo (incluso) |
round | Arrotonda al numero di cifre decimali |
scale_exp | Trasforma un determinato valore da un dominio di input a un intervallo di output utilizzando una curva esponenziale |
scale_linear | Trasforma un determinato valore da un dominio di input a un intervallo di output utilizzando l’interpolazione lineare |
sin | Restituisce il seno di un angolo in radianti |
sqrt | Restituisce la radice quadrata di un valore |
tan | Restituisce la tangente di un angolo |
Questo gruppo contiene funzioni che aggregano valori su layers e campi
Funzioni |
Descrizione |
---|---|
aggregate | Restituisce un valore aggregato calcolato utilizzando le geometrie di un altro layer |
concatenate | Restituisce tutte le stringhe aggregate da un campo o un’espressione unita da un delimitatore |
count | Restituisce il conteggio delle geometrie corrispondenti |
count_distinct | Restituisce il conteggio di valori distinti |
count_missing | Restituisce il conteggio di valori mancanti (nulli) |
iqr | Restituisce l’intervallo inter quartile calcolato da un campo o un’espressione |
majority | Restituisce la maggioranza aggregata di valori (il valore più comunemente presente) da un campo o da un’espressione |
max_length | Restituisce la lunghezza massima delle stringhe da un campo o da un’espressione |
maximum | Restituisce il valore massimo aggregato da un campo o da un’espressione |
mean | Restituisce il valore medio aggregato da un campo o da un’espressione |
median | Restituisce il valore della mediana aggregato da un campo o da un’espressione |
min_length | Restituisce la lunghezza minima delle stringhe da un campo o da un’espressione |
minimum | Restituisce il valore minimo aggregato da un campo o da un’espressione |
minority | Restituisce la minoranza dei valori aggregata (valore che si verifica meno comunemente) da un campo o da un’espressione |
q1 | Restituisce il primo quartile calcolato da un campo o da un’espressione |
q3 | Restituisce il terzo quartile calcolato da un campo o da un’espressione |
range | Restituisce l’intervallo di valori aggregato (massimo - minimo) da un campo o un’espressione |
relation_aggregate | Restituisce un valore aggregato calcolato utilizzando tutte le geometrie figlie corrispondenti da una relazione sul layer |
stdev | Restituisce il valore della deviazione standard aggregato da un campo o da un’espressione |
sum | Restituisce il valore sommato aggregato da un campo o da un’espressione |
Esempi:
Restituisce il massimo del campo “Passeggeri” dalle geometrie nel layer raggruppato dal campo “station_class” :
maximum("passengers", group_by:="station_class")
Calcola il numero totale di passeggeri per le stazioni all’interno della geometria Atlante corrente:
aggregate('rail_stations','sum',"passengers",
intersects(@atlas_geometry, $geometry))
Restituisce la media del campo “field_from_related_table” per tutte le geometrie figlio corrispondenti usando la relazione ‘my_relation’ dal layer:
aggregate_relation('my_relation', 'mean', "field_from_related_table")
oppure:
aggregate_relation(relation:='my_relation', calculation := 'mean',
expression := "field_from_related_table")
Questo gruppo contiene funzioni per la manipolazione dei colori.
Funzioni |
Descrizione |
---|---|
color_cmyk | Restituisce una rappresentazione in formato stringa di un colore in base alle componenti ciano, magenta, giallo e nero |
color_cmyka | Restituisce una rappresentazione in formato stringa di un colore in base ai componenti ciano, magenta, giallo, nero e alfa (trasparenza) |
color_hsl | Restituisce una rappresentazione in formato stringa di un colore in base agli attributi di tonalità, saturazione e luminosità |
color_hsla | Restituisce una rappresentazione in formato stringa di un colore in base agli attributi di tonalità, saturazione, luminosità e alfa (trasparenza) |
color_hsv | Restituisce una rappresentazione in formato stringa di un colore in base agli attributi di tonalità, saturazione e valore |
color_hsva | Restituisce una rappresentazione in formato stringa di un colore in base agli attributi di tonalità, saturazione, valore e alfa (trasparenza) |
color_part | Restituisce un componente specifico da una stringa di colori, ad esempio il componente rosso o il componente alfa |
color_rgb | Restituisce una rappresentazione in formato stringa di un colore in base alle componenti rosso, verde e blu |
color_rgba | Restituisce una rappresentazione in formato stringa di un colore in base alle componenti rosso, verde, blu e alfa (trasparenza) |
darker | Restituisce una stringa di colore più scuro (o più chiaro) |
lighter | Restituisce una stringa di colore più chiara (o più scura) |
project_color | Restituisce un colore dalla combinazione dei colori del progetto |
ramp_color | Restituisce una stringa che rappresenta un colore da una scala di colori |
set_color_part | Imposta un componente di colore specifico per una stringa di colore, ad esempio il componente rosso o il componente alfa |
Questo gruppo contiene funzioni per convertire un tipo di dati in un altro (ad esempio stringa su intero, intero su stringa).
Funzioni |
Descrizione |
---|---|
to_date | Converte una stringa in formato data |
to_datetime | Converte una stringa in formato datetime |
to_int | Converte una stringa in numero intero |
to_interval | Converte una stringa in un tipo di intervallo (può essere utilizzata per ricavare giorni, ore, mesi, ecc. da un dato) |
to_real | Converte una stringa in un numero reale |
to_string | Converte numero in stringa |
to_time | Converte una stringa in un formato orario |
Questo gruppo contiene funzioni create dall’utente. Vedi Editor delle Funzioni per maggiori dettagli.
Questo gruppo contiene funzioni per la gestione dei dati in formato data e ora.
Funzioni |
Descrizione |
---|---|
age | Restituisce come intervallo la differenza tra due date o datetime |
day | Estrae il giorno da una data o un datetime o il numero di giorni da un intervallo |
day_of_week | Restituisce un numero corrispondente al giorno della settimana per una data o un datetime specificato |
hour | Estrae l’ora da un datetime o tempo, o il numero di ore da un intervallo |
minute | Estrae il minuto da un datetime o tempo, o il numero di minuti da un intervallo |
month | Estrae la parte del mese da una data o datetime o il numero di mesi da un intervallo |
now | Restituisce la data e l’ora correnti |
second | Estrae il secondo da un datetime o time, o il numero di secondi da un intervallo |
week | Estrae il numero della settimana da una data o datetime, o il numero di settimane da un intervallo |
year | Estrae la parte dell’anno da una data o datetime o il numero di anni da un intervallo |
Questo gruppo condivide anche diverse funzioni con i gruppi Funzioni di conversione (to_date, to_time, to_datetime, to_interval) e Funzioni Stringa (format_date).
Alcuni esempi:
Ricava il mese e l’anno di oggi nel formato “numero_mese/anno”:
format_date(now(),'MM/yyyy')
-- Returns '03/2017'
Oltre a queste funzioni, le differenze di data, i tempi o le ore che usano l’operatore `` -`` (meno) restituiscono un intervallo.
Aggiungendo o sottraendo un intervallo a date, datetime o tempi, usando gli operatori + (più) e - (meno), restituisce un datetime.
Fino alla versione di QGIS 3.0 dà il numero di giorni:
to_date('2017-09-29') - to_date(now())
-- Returns <interval: 203 days>
Lo stesso con time:
to_datetime('2017-09-29 12:00:00') - to_datetime(now())
-- Returns <interval: 202.49 days>
Ottieni il tempo di 100 giorni a partire da adesso:
now() + to_interval('100 days')
-- Returns <datetime: 2017-06-18 01:00:00>
Nota
Memorizzazione di formati data e di intervalli di tempo su campi
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 e time possono essere memorizzati nei campi di tipo di testo dopo aver utilizzato la funzione to_format().
intervals possono essere memorizzati in campi di numeri interi o decimali dopo aver utilizzato una delle funzioni di estrazione della data (ad esempio, day() per ottenere l’intervallo espresso in giorni)
Contiene la lista dei campi di un layer.
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.
Questo gruppo contiene funzioni per confronti vari tra valori.
Funzioni |
Descrizione |
---|---|
hamming_distance | Restituisce il numero di caratteri nelle posizioni corrispondenti all’interno delle stringhe in input in cui i caratteri sono diversi |
levensheim | Restituisce il numero minimo di caratteri (inserzioni, cancellazioni o sostituzioni) richiesti per cambiare una stringa in un’altra. Misura la somiglianza tra due stringhe |
longest_common_substring | Restituisce la sottostringa comune più lunga tra due stringhe |
soundex | Restituisce la rappresentazione Soundex di una stringa |
Questo gruppo contiene funzioni assortite generali.
Funzioni |
Descrizione |
---|---|
eval | Valuta un’espressione che viene passata in una stringa. Utile per espandere i parametri dinamici passati come variabili di contesto o campi |
layer_property | Restituisce una proprietà di un layer o un valore dei suoi metadati. Può essere nome del layer, SR, tipo di geometria, conteggio delle geometrie ... |
var | Restituisce il valore memorizzato all’interno di una variabile specificata. Vedi funzioni variabili di seguito |
Questo gruppo contiene funzioni che operano su caratteristiche geometriche (ad es. Lunghezza, area).
Funzioni |
Descrizione |
---|---|
$area | Restituisce le dimensioni dell’area della geometria corrente |
$geometry | Restituisce la geometria dell’elemento corrente (può essere utilizzato per l’elaborazione con altre funzioni) |
$length | Restituisce la lunghezza della geometria lineare corrente |
$perimeter | Restituisce il perimetro della geometria poligono corrente |
$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 | Restituisce l’angolo bisettrice (angolo medio) alla geometria per un vertice specificato su una geometria lineare. Gli angoli sono in gradi in senso orario da nord |
area | Restituisce l’area di una geometria poligono. I calcoli sono nel Sistema di riferimento spaziale di questa geometria |
azimuth | Restituisce l’azimut a nord come angolo in radianti misurato in senso orario dalla verticale su point_a a 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 | Restituisce l’altezza del riquadro di delimitazione di una geometria. I calcoli sono nel Sistema di riferimento spaziale di questa geometria |
bounds_width | Restituisce la larghezza del riquadro di delimitazione di una geometria. I calcoli sono nel Sistema di riferimento spaziale di questa geometria |
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 | Restituisce il punto su una geometria che è più vicino a una seconda geometria |
combine | Restituisce la combinazione di due geometrie |
contains(a,b) | Restituisce 1 (vero) se e solo se nessun punto di b giace nell’esterno di a, e almeno un punto dell’interno di b si trova all’interno di a |
convex_hull | Returns the convex hull of a geometry (this represents the minimum convex geometry that encloses all geometries within the set) |
crosses | Restituisce 1 (vero) se le geometrie fornite hanno in comune alcuni punti interni, ma non tutti |
difference(a,b) | Returns a geometry that represents that part of geometry a that does not intersect with geometry b |
disjoint | Restituisce 1 (vero) se le geometrie non condividono nessuno spazio |
distance | Restituisce la distanza minima (in base al Sistema di riferimento spaziale) tra due geometrie in unità proiettate |
distance_to_vertex | Restituisce la distanza lungo la geometria a un vertice specificato |
end_point | Returns the last node from a geometry |
exterior_ring | Restituisce una stringa lineare che rappresenta l’anello esterno di una geometria poligonale o null se la geometria non è un poligono |
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 | Restituisce una geometria creata da una rappresentazione GML della geometria |
geom_from_wkt | Restituisce una geometria creata da una rappresentazione Well-Known Text (WKT) |
geom_to_wkt | Restituisce la rappresentazione Well-Known Text (WKT) della geometria senza i metadati del SRID |
geometry | Restituisce la geometria di un elemento |
geometry_n | Restituisce l’ennesima geometria da una raccolta di geometrie, o null se la geometria in input non è una raccolta |
interior_ring_n | Restituisce la geometria dell’ennesimo anello interno da una geometria poligonale, oppure null se la geometria non è un poligono |
intersection | Returns a geometry that represents the shared portion of two geometries |
intersects | Verifica se una geometria interseca un’altra. Restituisce 1 (vero) se le geometrie si intersecano spazialmente (condividono qualsiasi porzione di spazio) e 0 se non lo fanno |
intersects_bbox | Verifica se il riquadro di delimitazione di una geometria si sovrappone al riquadro di delimitazione di un’altra geometria. Restituisce 1 (vero) se le geometrie intersecano spazialmente (condividono qualsiasi porzione di spazio) nelle loro casella di delimitazione, o 0 se non lo fanno |
is_closed | Restituisce vero se una linea è chiusa (i punti di inizio e di fine sono coincidenti), falso se una linea non è chiusa o null se la geometria non è una linea |
length | Restituisce la lunghezza di una geometria lineare (o la lunghezza di una geometria di tipo linestring) |
line_interpolate_angle | Restituisce l’angolo parallelo alla geometria ad una distanza specificata lungo una geometria di tipo linestring. Gli angoli sono in gradi in senso orario da nord. |
line_interpolate_point | Returns the point interpolated by a specified distance along a linestring geometry. |
line_locate_point | Restituisce la distanza lungo una linestring corrispondente alla posizione più vicina alla linestring di una geometria puntuale specificata |
line_merge | Restituisce una geometria (Multi-)LineString, in cui tutte le LineString connesse dalla geometria in input sono state unite in una singola linestring. |
m | Returns the m value of a point geometry |
make_line | Crea una geometria lineare da una serie di geometrie punto |
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 | Crea una geometria poligono da un anello esterno e una serie opzionale di geometrie ad anello interne |
nodes_to_points | Returns a multipoint geometry consisting of every node in the input geometry |
num_geometries | Restituisce il numero di geometrie in una raccolta di geometrie, o null se la geometria in ingresso non è una raccolta |
num_interior_rings | Restituisce il numero di anelli interni in un poligono o in una raccolta di geometrie, oppure null se la geometria in input non è un poligono o una raccolta |
num_points | Restituisce il numero di vertici in una geometria |
num_rings | Restituisce il numero di anelli (inclusi gli anelli esterni) in un poligono o in una raccolta di geometrie, oppure null se la geometria in input non è un poligono o una raccolta |
order_parts | Ordina le parti di una MultiGeometry secondo un determinato criterio |
overlaps | Verifica se una geometria si sovrappone a un’altra. Restituisce 1 (vero) se le geometrie condividono lo spazio, sono della stessa dimensione, ma non sono completamente contenute l’una all’altra |
perimeter | Restituisce il perimetro di una geometria poligonale. I calcoli sono nel Sistema di riferimento spaziale di questa geometria |
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 | Testa o restituisce la rappresentazione Dimensional Extended 9 Intersection Model (DE-9IM) della relazione tra due geometrie. |
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 | Restituisce la linea più breve che unisce due geometrie. La linea risultante inizierà dalla geometria 1 e terminerà alla 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 | Verifica se una geometria tocca un’altra. Restituisce 1 (vero) se le geometrie hanno almeno un punto in comune, ma i loro interni non si intersecano |
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 | Restituisce una geometria che rappresenta l’unione dell’insieme dei punti delle geometrie |
within (a,b) | Verifica se una geometria si trova all’interno di un’altra. Restituisce 1 (vero) se la geometria a è completamente all’interno della 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 |
Alcuni esempi:
Puoi manipolare la geometria corrente con la variabile $geometry per creare un buffer o ottenere il punto sulla superficie:
buffer( $geometry, 10 )
point_on_surface( $geometry )
Return the x coordinate of the current feature’s centroid:
x( $geometry )
Generare un valore in base all’area della geometria:
CASE WHEN $area > 10 000 THEN 'Larger' ELSE 'Smaller' END
Questo gruppo contiene funzioni che operano sugli identificativi dei record.
Funzioni |
Descrizione |
---|---|
$currentfeature | Restituisce l’elemento corrente da valutare. Questo può essere usato con la funzione ‘attribute’ per valutare i valori degli attributi dell’elemento corrente. |
$id | Restituisce l’ID della geometria della riga corrente |
$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 | Restituisce il valore di uno specifico attributo di una geometria |
get_feature | Restituisce la prima geometria di un layer che corrisponde a un determinato valore di attributo |
uuid | Genera un Identificatore Univoco Universale (UUID) per ogni riga. Ogni UUID è lungo 38 caratteri |
Alcuni esempi:
Restituire la prima geometria nel layer “LayerA” il cui campo “id” ha lo stesso valore del campo “name” della geometria corrente (una specie di jointure) :
get_feature( 'layerA', 'id', attribute( $currentfeature, 'name') )
Calcolare l’area della geometria unita con l’esempio precedente:
area( geometry( get_feature( 'layerA', 'id', attribute( $currentfeature, 'name') ) ) )
Questo gruppo contiene le funzioni che operano sulle stringhe (ad esempio sostituisci, converti in maiuscolo).
Funzioni |
Descrizione |
---|---|
char | Restituisce il carattere associato a un codice Unicode |
concat | Concatena più stringhe in una |
format | Formatta una stringa usando gli argomenti forniti |
format_date | Formatta un tipo data o una stringa in un formato stringa personalizzato |
format_number | Restituisce un numero formattato con il separatore delle impostazioni internazionali per le migliaia (inoltre tronca il numero al numero di posti forniti) |
left(string, n) | Restituisce una sottostringa che contiene gli n caratteri più a sinistra della stringa |
length | Restituisce la lunghezza di una stringa (o la lunghezza di una geometria di tipo linestring) |
lower | converte una stringa in lettere minuscole |
lpad | Returns a string with supplied width padded using the fill character |
regexp_replace | Restituisce una stringa con la parte che soddisfa l’espressione regolare sostituita |
regexp_substr | Restituisce la parte di una stringa che corrisponde all’espressione regolare fornita |
replace | Returns a string with the supplied string replaced |
right(string, n) | Restituisce una sottostringa che contiene gli n caratteri più a destra della stringa |
rpad | Returns a string with supplied width padded using the fill character |
strpos | Returns the index of a regular expression in a string |
substr | Restituisce una parte di una stringa |
title | Converte tutte le parole di una stringa in ‘Titolo maiuscolo’ (tutte le parole in minuscolo con la prima lettera maiuscola) |
trim | Rimuove tutti gli spazi bianchi iniziali e finali (spazi, tabulazioni, ecc.) da una stringa |
upper | Converte una stringa in lettere maiuscole |
wordwrap | Restituisce una stringa posta a capo ad un massimo/minimo numero di caratteri |
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.
Questo gruppo contiene variabili dinamiche relative all’applicazione, al file di progetto e ad altre impostazioni. Significa che alcune funzioni potrebbero non essere disponibili in base al contesto:
dalla finestra di dialogo Proprietà layer
Per utilizzare queste funzioni in un’espressione, dovrebbero essere precedute da un carattere @ (ad esempio, @row_number). Riguardano:
Funzioni |
Descrizione |
---|---|
atlas_feature | Restituisce la geometria atlante corrente (come oggetto geometria) |
atlas_featureid | Restituisce l’ID della geometria atlante corrente |
atlas_featurenumber | Returns the number of pages in composition |
atlas_filename | Restituisce il nome del file atlante corrente |
atlas_geometry | Restituisce la geometria dell’elemento corrente dell’atlante |
atlas_pagename | Restituisce il nome della pagina atlante corrente |
atlas_totalfeatures | Restituisce il numero totale di geometrie nell’atlante |
grid_axis | Restituisce l’annotazione corrente dell’asse del reticolo (ad esempio ‘X’ per longitudine, ‘y’ per latitudine) |
grid_number | Restituisce il valore corrente dell’annotazione del reticolo |
item_id | Returns the composer item user ID (not necessarily unique) |
item_uuid | Returns the composer item unique ID |
layer_id | Restituisce l’ID del layer corrente |
layer_name | Restituisce il nome del layer corrente |
layout_dpi | Restituisce la risoluzione della composizione di stampa (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 | Restituisce il punto centrale della mappa |
map_extent_height | Restituisce l’altezza corrente della mappa |
map_extent_width | Restituisce la larghezza corrente della mappa |
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 | Restituisce la rotazione corrente della mappa |
map_scale | Restituisce la scala corrente della mappa |
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 | Restituisce il titolo del progetto corrente |
qgis_os_name | Restituisce il nome corrente del sistema operativo, ad esempio “windows”, “linux” o “osx” |
qgis_platform | Restituisce la piattaforma QGIS, ad esempio ‘desktop’ o ‘server’ |
qgis_release_name | Restituisce il nome della versione corrente di QGIS |
qgis_version | Restituisce la stringa della versione corrente di QGIS |
qgis_version_no | Restituisce il numero di versione corrente di QGIS |
symbol_angle | Restituisce l’angolo del simbolo utilizzato per la visualizzazione dell’elemento (valido solo per i simboli marker) |
symbol_color | Restituisce il colore del simbolo utilizzato per la visualizzazione dell’elemento |
user_account_name | Restituisce il nome corrente dell’account utente nel sistema operativo |
user_full_name | Restituisce il nome corrente dell’utente nel sistema operativo |
row_number | Memorizza il numero della riga corrente |
value | Restituisce il valore corrente |
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.
Ecco un breve esempio su come creare proprie funzioni:
@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.
Ulteriori informazioni sulla creazione di codice Python possono essere trovate nel PyQGIS cookbook.
The function editor is not only limited to working with the field calculator, it can be found whenever you work with expressions.