Calcolatore di campi

Il pulsante mActionCalculateField Apri il calcolatore di campi presente nella tabella degli attributi permette di operare calcoli sulla base di funzioni definite e/o dei valori degli attributi esistenti, per esempio è possibile calcolare il perimetro o l’area di un poligono. Il risultato delle operazioni può essere salvato in una nuova colonna attributo oppure essere usato per aggiornare i valori di una colonna esistente.

Per poter aprire il calcolatore di campi bisogna impostare il layer in modalità di modifica (vedi figura figure_attributes_3). Nella finestra di dialogo del Calcolatore di campi è possibile scegliere se aggiornare un campo esistente, aggiornare gli elementi selezionati oppure creare un nuovo campo in cui salvare i risultati delle operazioni di calcolo.

Figure Attributes 3:

../../../_images/fieldcalculator.png

Field Calculator nix

Per aggiungere un nuovo campo bisogna indicare il nome, il tipo di campo (intero, decimale, testo) e la larghezza. Per il tipo Numero decimale è anche possibile definire la precisione, ossia il numero di cifre dopo la virgola: ad esempio per un campo con larghezza 10 e precisione 3 si avranno 6 cifre prima della virgola, quindi la virgola ed infine 3 cifre decimali (see figure_attributes_3).

La Lista delle funzioni contiene, oltre alle funzioni, anche la lista dei campi e valori. La casella Aiuto per la funzione scelta fornisce una descrizione della funzione selezionata. La casella Espressione mostra l’espressione creata tramite la Lista delle funzioni. Gli operatori più comuni sono raggruppati nella sezione Operatori.

La sezione Campi e valori presente nella casella Lista delle funzioni elenca tutti gli attributi della tabella. Per aggiungere un attributo nella casella Espressioni fare doppio click sullo stesso, quindi usare le altre sezioni (campi e valori, operatori e le altre funzioni) per completare l’espressione; alternativamente è possibile scriverla direttamente nella casella. Per visionare i valori di un campo è sufficiente cliccare con il tasto destro sul campo desiderato. E’ possibile scegliere fra Carica primi 10 valori univoci oppure Carica tutti i valori univoci. Nella parte destra apparirà la lista dei Valori del campo con i valori univoci elencati. Per aggiungere un valore alla casella Espressione basta fare doppio click sul suo nome dalla casella Valori del campo.

Le sezioni Operatori, Matematica, Conversioni, Stringa, Geometria e Record contengono molte funzioni. Operatori fornisce operatori matematici. Per funzioni matematiche cercare in Matematica. La sezione Conversioni permette di convertire un tipo di dato in un altro (per esempio da numero intero a numero reale).Le funzioni riguardanti le stringhe sono disponibili in Stringa. La sezione Geometria contiene le funzioni per gli oggetti geometrici mentre grazie alla sezione Record è possibile aggiungere una numerazione al dataset (esempio numero della riga). Per aggiungere una funzione alla casella Espressione cliccare su > e fare doppio click sulla funzione scelta.

Segue un breve esempio di utilizzo del calcolatore per calcolare la lunghezza degli elementi del layer railroads presenti nel dataset di QGIS:

  1. Caricare in QGIS lo shapefile railroads.shp e cliccare su mActionOpenTable Apri tabella attributi.

  2. Attivare la modalità mActionToggleEditing Modifica e aprire il mActionCalculateField Calcolatore di campi.

  3. Spuntare checkbox Crea un nuovo campo per abilitare la creazione di un nuovo campo.

  4. Nominare il campo length, impostare numero decimale come tipo, 10 come larghezza e 3 come precisione.

  5. Cliccare sulla funzione length presente nella sezione Geometria per aggiungerla come ``$lenght``nella casella espressione e cliccare su [OK].

  6. Adesso la nuova colonna length è presente nella tabella degli attributi.

Le funzioni disponibili sono di seguito elencate.

column name "column name"            value of the field column name
'string'                             a string value
NULL                                 null value
a IS NULL                            a has no value
a IS NOT NULL                        a has a value
a IN (value[,value])                 a is below the values listed
a NOT IN (value[,value])             a is not below the values listed
a OR b                               a or *b* is true
a AND b                              a and *b* is true
NOT a                                inverted truth value of a
sqrt(a)                              square root of a
sin(a)                               sinus of a
cos(a)                               cosinus of b
tan(a)                               tangens of a
asin(a)                              arcussinus of a
acos(a)                              arcuscosinus of a
atan(a)                              arcustangens of a
to int(a)                            convert string a to integer
to real(a)                           convert string a to real
to string(a)                         convert number a to string
lower(a)                             convert string a to lower case
upper(a)                             convert string a to upper case
length(a)                            length of string a
atan2(y,x)                           arcustangens of y/x using the signs of the two
                                     arguments to determine the quadrant of the result
replace(*a*, replacethis, withthat)  replace this with that in string a
regexp_replace(a,this,that)          replace the regular expression this with that
substr(*a*,from,len)                 len characters of string *a* starting from from
                                     (first character index is 1)
a || b                               concatenate strings a and b
$rownum                              number current row
$area                                area of polygon
$perimeter                           perimeter of polygon
$length                              length of line
$id                                  feature id
$x                                   x coordinate of point
$y                                   y coordinate of point
xat(n)                               X coordinate of the point of an n-th line (indeces
                                     start at 0; negative values refer to the line end)
yat(n)                               y coordinate of the point of an n-th line (indeces
                                     start at 0; negative values refer to the line end)
a = b                                a and b are equal
a != b and a <> b                    a and b are not equal
a >= b                               a is larger than or equal to b
a <= b                               a is less than or equal to b
a > b                                a is larger than b
a < b                                a is smaller than b
a ~ b                                a matches the regular expression b
a LIKE b                             a equals b
a ILIKE b                            a equals b (without regard to case-sensitive)
a |wedge| b                          a raised to the power of b
a * b                                a multiplied by b
a / b                                a divided by b
a + b                                a plus b
a - b                                a minus b
+ a                                  positive sign
- a                                  negative value of a

E’ possibile accedere alle varie caselle del calcolatore di camp: Lista delle funzioni, Aiuto per la funzione scelta, Operatori e Espressione, sia attraverso la visualizzazione tramite regole presente nella scheda stile delle proprietà del layer, sia attraverso la modalità di impostazione di etichettatura cliccando browsebutton accessibile dal pulsante mActionLabeling Etichettatura.