Vai al contenuto

Gruppo Record e Attributi

Abstract

Questo gruppo contiene funzioni che operano sugli identificativi dei record.


$currentfeature

Restituisce l'elemento corrente corrente da valutare. Questo può essere usato con la funzione 'attribute' per valutare i valori dell'attributo dall'elemento corrente. ATTENZIONE: questa funzione è deprecata (a partire da QGIS 3.28.0 Firenze). Si consiglia di utilizzare la variabile sostitutiva @feature.

Sintassi:

  • $currentfeature

Esempi:

- attribute( $currentfeature, 'name' ) → valore memorizzato nell'attributo 'name' per l'elemento corrente
- attribute( @feature, 'name' ) → valore memorizzato nell'attributo 'name' per l'elemento corrente


$id

Restituisce l'id geometria della riga corrente. ATTENZIONE: Questa funzione è deprecata (a partire da QGIS 3.28 Firenze). Si consiglia di utilizzare la variabile sostitutiva @id

Sintassi:

  • $id

Esempi:

$id → 71
@id → 71

Osservazioni:

Questa funzione inizia sempre da 0 con vettore shapefile da 1 con i database


is_attribute_valid

(>= QGIS 3.30)

Restituisce TRUE se un attributo di caratteristica specifico soddisfa tutti i vincoli.

Sintassi:

  • is_attribute_valid (attribute[,feature][,layer][,strength])

[ ] indica componenti opzionali

Argomenti:

  • attribute un nome di attributo
  • feature Un elemento. Se non impostato, verrà utilizzato l'elemento corrente.
  • layer Un layer vettoriale. Se non impostato, verrà utilizzato il layer corrente
  • strength Impostare su 'hard' o 'soft' per restringere il campo a un tipo di vincolo specifico. Se non è impostata, la funzione restituirà FALSE se fallisce un vincolo hard o soft.

Esempi:

is_attribute_valid('HECTARES') → TRUE se il valore dell'elemento corrente nel campo "ETTARI" soddisfa tutti i vincoli.
is_attribute_valid('HOUSES',get_feature('my_layer', 'FID', 10), 'my_layer') → FALSE se il valore nel campo "HOUSES" dell'elemento con "FID"=10 in 'my_layer' non soddisfa tutti i vincoli.


is_feature_valid

(>= QGIS 3.30)

Restituisce TRUE se un attributo di caratteristica specifico soddisfa tutti i vincoli.

Sintassi:

  • is_feature_valid ([feature][,layer][,strength])

[ ] indica componenti opzionali

Argomenti:

  • feature Un elemento. Se non impostato, verrà utilizzato l'elemento corrente.
  • layer Un layer vettoriale. Se non impostato, verrà utilizzato il layer corrente
  • strength Impostare su 'hard' o 'soft' per restringere il campo a un tipo di vincolo specifico. Se non è impostata, la funzione restituirà FALSE se fallisce un vincolo hard o soft.

Esempi:

is_feature_valid(strength:='hard') → TRUE se tutti i campi della funzione corrente soddisfano i relativi vincoli rigidi.
is_feature_valid(get_feature('my_layer', 'FID', 10), 'my_layer') → FALSE se tutti i campi dell'elemento con "FID"=10 in 'my_layer' non soddisfano tutti i vincoli.


attribute

Restituisce un attributo da un elemento.

Variante 1

Restituisce il valore di un attributo dall'elemento corrente.

Sintassi:

  • attribute(attribute_name)

Argomenti:

  • attribute_name nome dell'attributo da restituire

Esempi:

attribute( 'name' ) → valore memorizzato nell'attributo 'name' per l'elemento corrente

Variante 2

Consente di specificare l'elemento di destinazione e il nome dell'attributo.

Sintassi:

  • attribute(feature, attribute_name)

Argomenti:

  • feature un elemento
  • attribute_name nome dell'attributo da restituire

Esempi:

attribute( $currentfeature, 'name' ) → valore memorizzato nell'attributo 'name' per l'elemento corrente


attributes

Restituisce una mappa contenente tutti gli attributi di un elemento, con i nomi dei campi come chiavi della mappa.

Variante 1

Restituisce una mappa di tutti gli attributi dall'attuale elemento.

Sintassi:

  • attributes()

Esempi:o

attributes()['name'] → valore memorizzato nell'attributo 'name' per l'elemento corrente

per trasformare una feature (una riga di una tabella) in un array:

Variante 2

Consente di specificare la feature di destinazione.

Sintassi:

  • attributes(feature)

Argomenti:

  • feature un elemento

Esempi:

attributes( @atlas_feature )['name'] → valore memorizzato nell'attributo 'name' per l'elemento corrente dell'atlante


display_expression

Restituisce l'espressione visualizzata per un dato elemento in un layer. L'espressione è sempre valutata. Può essere usata con lo zero, uno o più argomenti, vedi sotto per dettagli.

Nessun parametro

Se chiamata senza parametri, la funzione valuterà l'espressione di visualizzazione dell'elemento corrente nel layer corrente.

Sintassi:

  • display_expression()

Esempi:

display_expression() → L'espressione visualizzata dell'elemento corrente nel layer corrente

Un parametro 'feature'

Se chiamata con il solo parametro 'feature', la funzione valuterà l'elemento specificato nel layer corrente.

Sintassi:

  • display_expression(feature)

Argomenti:

  • feature L'elemento che dovrebbe essere valutato.

Esempi:

display_expression(@atlas_feature) → L'espressione visualizzata dell'elemento corrente dell'atlante.

Parametri del Layer ed elementi

Se la funzione viene chiamata sia con un layer che con un elemento, valuterà l'elemento specificato dal layer indicato.

Sintassi:

  • display_expression(layer,feature[,evaluate=true])

[ ] indica componenti opzionali

Argomenti:

  • layer Il layer (o suo ID o nome)
  • feature L'elemento che dovrebbe essere valutato.
  • evaluate Se l'espressione deve essere valutata. Se false l'espressione sarà restituita solo come stringa letterale (che potenzialmente potrebbe essere valutata a posteriori tramite la funzione 'eval').

Esempi:

display_expression( 'streets', get_feature_by_id('streets', 1)) → L'espressione visualizzata dell'elemento con ID 1 sul layer 'streets'.
display_expression('a_layer_id', $currentfeature, 'False') → L'espressione visualizzata del dato elemento non è stata valutata.


feature_id

(>= QGIS 3.30)

Restituisce l'ID univoco di una funzione o NULL se la funzione non è valida.

Sintassi:

  • feature_id(feature)

Argomenti:

  • feature un oggetto elemento

Esempi:

feature_id( @feature ) → l'ID dell'elemento corrente


get_feature

Restituisce il primo elemento di un layer che corrisponde ad un dato valore di attributo.

Variante a valore singolo

Insieme all'ID livello, vengono specificati una singola colonna e un valore.

Sintassi:

  • get_feature(layer, attribute, value)

Argomenti:

  • layer nome layer o ID
  • attribute nome attributo
  • value valore attributo da far corrispondere

Esempi:

get_feature('streets','name','main st') → prima geometria trovata nel vettore "streets" con valore "main st" nel campo "name"
get_feature( 'streets', 'fid', attribute( $currentfeature, 'name') ) → Restituisce la prima feature nel layer "streets" il cui campo "fid" ha lo stesso valore del campo "nome" della feature corrente` (una sorta di JOIN)

Variante map

QGIS >= 3.24

Insieme all'ID livello, una mappa contenente le colonne (chiave) e il rispettivo valore da utilizzare.

Sintassi:

  • get_feature(layer, map)

Argomenti:

  • layer nome layer o ID
  • map Mappa contenente le coppie di colonne e valori da usare.

Esempi:

get_feature('streets',map('name','main st','lane_num','4')) → primo elemento trovato in 'streets' con il valore 'main st' nel campo 'name' e il valore '4' nel campo 'lane_num'


get_feature_by_id

Restituisce l'id dell'elemento della riga corrente.

Sintassi:

  • get_feature_by_id(layer, feature_id)

Argomenti:

  • layer layer, nome del layer o id del layer
  • feature_id L'id dell'elemento che deve essere restituito (inizia da 0 per gli shapefile)

Esempi:

get_feature_by_id('streets', 1) → l'elemento con id 1 nel vettore "streets"


is_selected

Restituisce Vero se è selezionata una funzione. Può essere usato con zero, uno o due argomenti, vedi sotto per i dettagli.

Senza parametri

Se chiamata senza parametri, la funzione restituirà vero se è selezionata la feature corrente nel layer corrente.

Sintassi:

  • is_selected()

Esempi:

is_selected() → True (vero) se l'elemento corrente è selezionato.

Una Feature come parametro

Se chiamata con il solo parametro 'feature', la funzione restituisce true se l'elemento specificato è selezionato nel layer attuale.

Sintassi:

  • is_selected(feature)

Argomenti:

  • feature L'elemento che deve essere controllata per la selezione.

Esempi:

is_selected(@atlas_feature) → Vero se l'elemento corrente dell'atlante è selezionato.
is_selected(get_feature('streets', 'name', 'Main St.'))) → Vero se l'unico elemento con nome "Main St." sul layer "streets" attivo è selezionato.
is_selected(get_feature_by_id('streets', 1)) → Vero se l'elemento con l'ID 1 sul layer "streets" attivo è selezionato.

Due parametri

Se la funzione è chiamata sia con un layer che con un elemento, questa restituirà vero se l'elemento specificato del layer specificato è selezionato.

Sintassi:

  • is_selected(layer, feature)

Argomenti:

  • layer Il layer (o il suo ID o nome) su cui verrà controllata la selezione.
  • feature L'elemento che deve essere controllato per la selezione.

Esempi:

is_selected( 'streets', get_feature('streets', 'name', "street_name")) → Vero se è selezionata la strada dell'edificio corrente (supponendo che il layer edifici abbia un campo denominato 'street_name' e il layer strade abbia un campo denominato 'name' con valori univoci).
is_selected( 'streets', get_feature_by_id('streets', 1)) → Vero se l'elemento con l'ID 1 nel layer "streets" è selezionato.

Esempio etichettatura tramite regola:

Esempio tematizzazione tramite regola:


maptip

Restituisce il suggerimento mappa di un dato elemento in un vettore. Per impostazione predefinita, l'espressione è valutata. Può essere usata con zero, uno o più argomenti, vedi sotto per dettagli.

Nessun parametro

Se chiamata senza parametri, la funzione valuterà il suggerimento mappa dell'elemento corrente nel layer corrente.

Sintassi:

  • maptip()

Esempi:

maptip() → Il suggerimento mappa dell'elemento corrente nel layer corrente.

Un parametro 'feature'

Se chiamata con il solo parametro 'feature ', la funzione valuterà l'elemento specificato nel layer corrente.

Sintassi:

  • maptip(feature)

Argomenti:

  • feature L'elemento che dovrebbe essere valutato.

Esempi:

maptip(@atlas_feature) → Il suggerimento mappa dell'elemento corrente dell'atlante.

Parametri del Layer ed elementi

Se la funzione viene chiamata sia con un layer che con un elemento, valuterà l'elemento specificato dal layer indicato.

Sintassi:

  • maptip(layer,feature[,evaluate=true])

[ ] indica componenti opzionali

Argomenti:

  • layer Il layer (o suo ID o nome)
  • feature L'elemento che dovrebbe essere valutato.
  • evaluate Se l'espressione deve essere valutata. Se false l'espressione sarà restituita solo come stringa letterale (che potenzialmente potrebbe essere valutata a posteriori tramite la funzione 'eval_template').

Esempi:

maptip('streets', get_feature_by_id('streets', 1)) → Il suggerimento mappa dell'elemento con ID 1 sul vettore 'streets'.
maptip('a_layer_id', $currentfeature, 'False') → Il suggerimento mappa del dato elemento non valutato.


num_selected

Restituisce il numero di geometrie selezionate in un vettore dato. Per impostazione predefinita funziona sul vettore sul quale l'espressione è valutata.

Sintassi:

  • num_selected([layer=current layer])

Argomenti:

  • layer Il vettore (o il suo id o nome) sul quale la selezione sarà controllata.

Esempi:

num_selected() → Il numero di geometrie selezionate nel vettore corrente.
num_selected('streets') → Il numero di geometrie selezionate nel vettore streets


represent_attributes

Restituisce una mappa con i nomi degli attributi come chiavi ed i valori di rappresentazione configurati come valori. Il valore di rappresentazione per gli attributi dipende dal tipo di widget configurato per ogni attributo. Può essere usato con zero, uno o più argomenti, vedi sotto per i dettagli.

Nessun paramentro

Se chiamata senza parametri, la funzione restituisce la rappresentazione degli attributi dell'elemento corrente nel layer corrente.

Sintassi:

  • represent_attributes()

Esempio:

represent_attributes() → La rappresentazione degli attributi per l'elemento corrente.

Un parametro feature

Se chiamata solo con un parametro 'feature', la funzione restituisce la rappresentazione degli attributi dell'elemento specificato dal layer corrente.

Sintassi:

  • represent_attributes(feature)

Argomenti:

  • feature L'elemento che dovrebbe essere valutato

Esempio:

represent_attributes($currentfeature) → La rappresentazione degli attributi per l'elemento corrente.

Parametri layer e feature

Se chiamata con un parametro 'layer' e un parametro 'feature', la funzione restituirà la rappresentazione degli attributi dell'elemento specificato dal layer specificato

Sintassi:

  • represent_attributes(layer, feature)

Argomenti:

  • layer Il layer (o suo ID o nome).
  • feature L'elemento che dovrebbe essere valutato

Esempio:

represent_attributes(@layer, $currentfeature) → La rappresentazione degli attributi per l'elemento corrente.


represent_value

Restituisce il metodo di rappresentazione configurato per un valore di un campo. Esso dipende dal tipo di widget configurato. Spesso, questo è molto utile per i widget 'Mappa Valore'.

Sintassi:

  • represent_value(value, fieldName)

Argomenti:

  • value Il valore che dovrebbe essere risolto. Molto probabilmente un campo.
  • fieldName Il nome del campo per cui la configurazione del widget dovrebbe essere caricata. (Opzionale)

Esempi:

represent_value("field_with_value_map") → Descrizione per il valore
represent_value('static value', 'field_name') → Descrizione per il valore statico


sqlite_fetch_and_increment

Gestisce i valori incrementali nei database sqlite.

I valori predefiniti in SQlite possono essere applicati all'inserimento e non possono venir elaborati con il prefetch.

Ciò rende impossibile l'acquisizione e l'incremento della chiave primaria tramite l'AUTO_INCREMENT prima della creazione della riga nel database. Note a margine: con postgres, questo funziona tramite l'opzione valuta i valori predefiniti.

Quando vengono aggiunti nuovi elementi che hanno relazioni, è veramente grazioso poter aggiungere elementi figlio per un genitore, mentre il modulo dei genitori è ancora aperto e l'elemento genitore non è ancora salvato.

Per sorpassare questa limitazione, questa funzione può essere usata per gestire valori sequenziali in una tabella separata basata su un formato sqlite come il gpkg.

La tabella sequenza sarà filtrata per un id sequenziale (filter_attribute e filter_value) ed il valore attuale dell'id_field sarà incrementato di 1 e verrà restituto il valore incrementato.

Se colonne aggiuntive richiedono che per esse debbano venir specificati valori, i default_values map possono essere usati per questo scopo.

Nota

Questa funzione modifica la tabella sqlite di destinazione. Essa è intesa per l'uso con la configurazione predefinita per gli attributi. Quando il parametro è un layer ed il layer è in modo transazione, il valore viene recuperato solo una volta durante il tempo di vita di una transazione e memorizzato ed incrementato. Ciò rende insicuro lavorare sullo stesso database con diversi processi in parallelo.

Sintassi:

  • sqlite_fetch_and_increment(database,table,id_field,filter_attribute,filter_value[,default_values])

[ ] indica componenti opzionali

Argomenti:

  • database Percorso del file sqlite o del layer geopackage
  • table Nome della tabella che gestisce le sequenze
  • id_field Nome del campo che contiene il valore corrente
  • filter_attribute Nome del campo che contiene un identificatore unico per questa sequenza. Deve avere un indice di tipo UNIQUE.
  • filter_value Nome della sequenza da utilizzare.
  • default_values Compila con i valori predefiniti per campi aggiuntivi sulla tabella. I valori necessitano di essere quotati. Sono consentite le funzioni.

Esempi:

sqlite_fetch_and_increment(@layer, 'sequence_table', 'last_unique_id', 'sequence_id', 'global', map('last_change', 'date(''now'')', 'user', '''' || @user_account_name || '''')) → 0
sqlite_fetch_and_increment(layer_property(@layer, 'path'), 'sequence_table', 'last_unique_id', 'sequence_id', 'global', map('last_change', 'date(''now'')', 'user', '''' || @user_account_name || '''')) → 0


uuid

Genera un Universally Unique Identifier (UUID) per ciascun record usando il metodo Qt QUuid::createUuid. Aggiornato dalla QGIS 3.18

Sintassi:

  • uuid([format='WithBraces'])

[ ] indica componenti opzionali

Argomenti:

  • format Il formato, come l'UUID verrà formattato. 'WithBraces' (con parentesi {}), 'WithoutBraces' (senza parentesi) o 'Id128' (senza trattino).

Esempi:

uuid() → '{0bd2f60f-f157-4a6d-96af-d4ba4cb366a1}'
uuid('WithoutBraces') → '0bd2f60f-f157-4a6d-96af-d4ba4cb366a1'
uuid('Id128') → '0bd2f60ff1574a6d96afd4ba4cb366a1'

1.png)