` `

Espressioni

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

Il Calcolatore di campi

La finestra di dialogo principale per la creazione di espressioni Calcolatore di campi è disponibile da molte parti in QGIS e, in particolare, puoi accederci:

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!

Lista delle funzioni

The Expression tab provides the main interface to write expressions using functions, layer’s fields and values. It contains widgets to:

  • type expressions using functions and/or fields. At the bottom of the dialog, is displayed the result of the expression evaluated on the first feature of the layer.
  • select the appropriate function among a list, organized in groups. A search box is available to filter the list and quickly find a particular function or field. Double-clicking on the item’s name adds it to the expression being written.
  • display help for each function selected. When a field is selected, this widget shows a sample of its values. Double-clicking a value adds it to the expression.
../../../_images/function_list.png

La scheda Espressioni

Operatori

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%'

Conditionals

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

Funzioni Matematiche

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

Funzioni di aggregazione

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")

Funzioni colore

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

Funzioni di conversione

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

Funzioni personalizzate

Questo gruppo contiene funzioni create dall’utente. Vedi Editor delle Funzioni per maggiori dettagli.

Funzioni di data e ora

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)

Campi e Valori

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.

Funzioni varie di confronto

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

Funzioni Generali

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

Funzioni Geometria

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

Record Functions

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') ) ) )

Funzioni Stringa

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

Funzioni recenti

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.

Funzioni Variabili

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 expressionSelect Seleziona tramite una espressione

  • dalla finestra di dialogo calculateField Calcolatore campo

  • dalla finestra di dialogo Proprietà layer

  • from the print composer

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

Editor delle Funzioni

With the Function Editor, you are able to define your own Python custom functions in a comfortable way.

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

La scheda Editor delle funzioni

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.