15.2. Lavorare con la tabella degli attributi
La tabella degli attributi visualizza informazioni sugli oggetti di un layer selezionato. Ogni riga nella tabella rappresenta un oggetto (con geometria o meno) e ogni colonna contiene una particolare informazione sull’oggetto. Gli oggetti nella tabella possono essere cercati, selezionati, spostati o anche modificati.
15.2.1. Premessa: Tabelle spaziali e non spaziali
QGIS ti consente di caricare layer spaziali e non spaziali. Attualmente include le tabelle supportate da OGR e il testo delimitato, nonché i provider PostgreSQL, MSSQL, SpatiaLite e Oracle. Tutti i layer caricati sono elencati nel pannello Layer. L’abilitazione spaziale o meno di un layer determina la possibilità di interagire con esso sulla mappa.
Le tabelle non spaziali possono essere visualizzate e modificate utilizzando la vista tabella degli attributi. Inoltre, possono essere utilizzate per ricerche sul campo. Ad esempio, puoi utilizzare le colonne di una tabella non spaziale per definire i valori degli attributi, o un intervallo di valori che possono essere aggiunti a uno specifico layer vettoriale durante la digitalizzazione. Dai un’occhiata più da vicino al widget di modifica nella sezione Proprietà Modulo Attributi per saperne di più.
15.2.2. Introduzione all’interfaccia della tabella degli attributi
Per aprire la tabella degli attributi di un layer vettoriale, attiva il layer cliccandoci sopra in Pannello dei Layer. Poi, dal menu principale , scegli . E” anche possibile cliccare con il tasto destro del mouse sul layer e scegliere dal menu a discesa, oppure cliccare sul pulsante Apri tabella attributi nella barra degli strumenti Attributi. Se preferisci le scorciatoie, F6 aprirà la tabella degli attributi. Shift+F6 aprirà la tabella degli attributi filtrata per le geometrie selezionate e Ctrl+F6 aprirà la tabella degli attributi filtrata per le geometrie visibili.
Si aprirà una nuova finestra che mostra gli attributi delle geometrie del layer (figure_attributes_table). In base all’impostazione in , la tabella degli attributi si aprirà in una finestra agganciata o in una finestra normale. Il numero totale di geometrie nel layer e il numero di geometrie attualmente selezionate/filtrate sono mostrati nel titolo della tabella degli attributi anche se il layer è spazialmente limitato.
I pulsanti nella parte superiore della finestra della tabella degli attributi forniscono le seguenti funzionalità:
Icona |
Etichetta |
Azione |
Scorciatoie da tastiera |
---|---|---|---|
Attivare/disattivare modalità modifica |
Attivare modalità modifica |
Ctrl+E |
|
Attivare modalità modifica multipla |
Aggiornare più campi di molte geometrie |
||
Salva modifiche |
Salva le modifiche in corso |
||
Ricarica la tabella |
|||
Aggiungi elemento |
Aggiungi un nuovo oggetto senza geometria |
||
Elimina elementi selezionati |
Rimuovi gli elementi elementi selezionati dal layer |
||
Taglia gli elementi selezionati nel blocco appunti |
Ctrl+X |
||
Copia gli elementi selezionati nel blocco appunti |
Ctrl+C |
||
Incolla elementi dagli appunti |
Inserisci nuovi elementi da quelli copiati |
Ctrl+V |
|
Seleziona elementi usando una Espressione |
|||
Seleziona Tutto |
Seleziona tutte gli elementi del layer |
Ctrl+A |
|
Inverti la selezione |
Inverti la selezione corrente del layer |
Ctrl+R |
|
Deseleziona tutto |
Deseleziona tutti gli elementi del layer corrente |
Ctrl+Shift+A |
|
Filtra/Seleziona elementi usando un modulo |
Ctrl+F |
||
Sposta la selezione in cima |
Sposta le righe selezionate in cima alla tabella |
||
Spostare mappa alle righe selezionate |
Ctrl+P |
||
Zoom mappa alle righe selezionate |
Ctrl+J |
||
Nuovo campo |
Aggiungi un nuovo campo ai dati originari |
Ctrl+W |
|
Elimina campo |
Rimuovi un campo dall’origine dati |
||
Organizzare le colonne |
Mostrare/nascondere i campi della tabella degli attributi |
||
Apri calcolatore campi |
Aggiornare il campo per molti elementi in una riga |
Ctrl+I |
|
Formattazione condizionale |
Abilitare formattazione tabella |
||
Aggancia Tabella degli Attributi |
Permette di agganciare/sganciare la tabella degli attributi |
||
Azioni |
Elenca le azioni relative al layer |
Nota
A seconda del formato dei dati e della libreria OGR creata con la versione di QGIS, alcuni strumenti potrebbero non essere disponibili.
Sotto questi pulsanti c’è la barra di Calcolo Rapido Campo (abilitata solo in modalità modifica), che ti consente di applicare rapidamente filtri e calcoli a tutti o parte degli elementi nel vettore. Per i calcoli usa le stesse expressions del Calcolatore di campi (vedi Modifica dei valori nella tabella degli attributi).
15.2.2.1. Visualizzazione Tabella e Visualizzazione Modulo
QGIS fornisce due modi di visualizzazione per manipolare facilmente i dati nella tabella degli attributi:
L’opzione Passa alla vista della tabella, visualizza i valori di più elementi in modo tabellare, ogni riga rappresenta un elemento e ogni colonna un campo. Facendo clic con il tasto destro del mouse sull’intestazione della colonna è possibile configure the table display, mentre facendo clic con il tasto destro del mouse su una cella è possibile interaction with the feature.
Passa alla vista modulo mostra feature identifiers 1 in un primo pannello e visualizza solo gli attributi dell’identificatore cliccato nel secondo. Nella parte superiore del primo pannello è presente un menu a tendina in cui l“«identificatore» può essere specificato utilizzando un attributo (Anteprima colonna) o un Espressione. Il menu a tendina include anche le ultime 10 espressioni da riutilizzare. La vista modulo utilizza la configurazione dei campi di livello (vedere Proprietà Modulo Attributi).
Puoi scorrere gli identificatori degli elementi con le frecce nella parte inferiore del primo pannello. Gli attributi degli elementi si aggiornano man mano nel secondo pannello. È anche possibile identificare o spostarsi su un elemento attivo nell’area di disegno della mappa premendo uno dei pulsanti in basso:
Puoi passare da una modalità all’altra cliccando sull’apposita icona in basso a destra della finestra di dialogo.
Puoi anche specificare la modalità di Vista predefinita all’apertura della tabella degli attributi nel menu . Può essere “Ricorda ultima vista”, “Vista tabella” o “Vista modulo”.
15.2.2.2. Configurare le colonne
Fai clic con il pulsante destro del mouse sull’intestazione di una colonna nella vista tabella per accedere agli strumenti che consentono di controllarla:
Cambiare la larghezza delle colonne
La larghezza delle colonne può essere impostata tramite un clic destro sull’intestazione della colonna e selezionare:
Imposta larghezza… per immettere il valore desiderato. Per impostazione predefinita, il valore corrente viene visualizzato nel widget
Imposta Tutte le larghezze di Colonna… allo stesso valore
Autodimensiona per ridimensionare al meglio la colonna.
Autodimensiona Tutte le Colonne
Le dimensioni di una colonna possono essere modificate anche trascinando il confine a destra dell’intestazione. La nuova dimensione della colonna viene mantenuta per il layer e ripristinata alla successiva apertura della tabella degli attributi.
Nascondere e organizzare colonne e attivare azioni
Facendo clic con il pulsante destro del mouse sull’intestazione di una colonna, puoi scegliere di Nascondi Colonna dalla tabella degli attributi (in modalità «vista tabella»). Per controlli più avanzati, premi il pulsante Organizza Colonne… dalla barra degli strumenti della finestra di dialogo o scegliere Organizza Colonne… nel menu contestuale dell’intestazione di colonna. Nella nuova finestra di dialogo puoi:
seleziona/deseleziona le colonne che vuoi mostrare o nascondere: una colonna nascosta scomparirà da ogni istanza della finestra di dialogo della tabella degli attributi finché non verrà ripristinata attivamente.
trascina e rilascia gli oggetti per riordinare le colonne nella tabella degli attributi. Si noti che questa modifica riguarda la visualizzazione della tabella e non modifica l’ordine dei campi nell’origine dati del layer
aggiungi una nuova colonna virtuale Azioni che visualizza in ogni riga una casella a discesa o un elenco di pulsanti di azioni abilitate. Vedie Proprietà Azioni per maggiori informazioni sulle azioni.
Ordinare le colonne
La tabella può essere ordinata in base a qualsiasi colonna, facendo clic sull’intestazione della colonna. Una piccola freccia indica l’ordine di ordinamento (se rivolta verso il basso significa valori decrescenti dalla riga superiore in giù, se rivolta verso l’alto significa valori ascendenti dalla riga superiore in giù). Si può anche scegliere di ordinare le righe con l’opzione Ordina… del menu contestuale dell’intestazione di colonna e scrivere un’espressione. Ad esempio, per ordinare le righe utilizzando più colonne, si può scrivere concat(col0, col1)
.
Nella visualizzazione modulo, l’identificatore degli elementi può essere ordinato utilizzando l’opzione Ordina tramite anteprima espressione.
Suggerimento
Ordinamento in base a colonne di diversa tipologia
Il tentativo di ordinare una tabella degli attributi in base a colonne di stringhe e a tipi numerici può portare a risultati inaspettati a causa dell’espressione concat("USE", "ID")
che restituisce i valori delle stringhe (cioè, 'Borough105' < 'Borough6'
). Puoi aggirare questo problema usando ad esempio ("USE", lpad("ID", 3, 0))
che restituisce 'Borough105' > 'Borough006'
.
15.2.2.3. Formattazione delle celle della tabella utilizzando condizioni
Le impostazioni di formattazione condizionale possono essere utilizzate per evidenziare le geometrie della tabella degli attributi che in particolare vuoi mettere a fuoco, utilizzando condizioni specifiche per le geometrie:
geometria (ad esempio, identificazione delle geometrie multi-parti, piccole aree o in una estensione limitata della mappa …);
o valore del campo (ad esempio, confrontando i valori con una soglia, identificando le celle vuote …)
Puoi abilitare il pannello di formattazione condizionale cliccando su in alto a destra nella finestra attributi in visualizzazione tabella (non disponibile in visualizzazione modulo).
Il nuovo pannello consente all’utente di aggiungere nuove regole per modificare la visualizzazione del Campo o Riga intera. L’aggiunta di una nuova regola apre un modulo per definire:
il nome della regola;
una condizione che utilizza una qualsiasi delle funzioni del expression builder
la formattazione: può essere scelta da un elenco di formati predefiniti o creata in base a proprietà come:
colori di sfondo e testo;
uso dell’icona;
grassetto, corsivo, sottolineato o testo barrato;
carattere.
15.2.3. Interagire con gli elementi nella tabella degli attributi
15.2.3.1. Selezionare elementi
Nella vista tabella, ogni riga nella tabella degli attributi visualizza gli attributi di una specifica geometria nel layer. Selezionando una sola riga si seleziona una geometria e allo stesso modo, selezionando una geometria nella mappa (in caso di geometria del layer attivato), viene selezionata la corrispondente riga nella tabella degli attributi. Se viene modificato un insieme di geometrie selezionate nella mappa (o nella tabella degli attributi), la selezione viene aggiornata anche nella tabella degli attributi (o nella visualizzazione della mappa).
Le righe possono essere selezionate facendo clic sul numero di riga sul lato sinistro della riga. È possibile contrassegnare più righe tenendo premuto il tasto Ctrl. Una selezione continua può essere effettuata tenendo premuto il tasto Shift e facendo click su più intestazioni di riga sul lato sinistro delle righe. Sono selezionate tutte le righe tra la posizione corrente del cursore e la riga cliccata. Spostando la posizione del cursore nella tabella degli attributi, facendo clic su una cella nella tabella, non cambia la selezione di riga. Cambiare la selezione nella finestra principale non sposta la posizione del cursore nella tabella degli attributi
Nella impostazione visualizzazione della tabella degli attributi, le geometrie vengono identificate per default nel pannello di sinistra per il valore del loro campo visualizzato (vedere Proprietà Suggerimenti). Questo identificatore può essere sostituito utilizzando l’elenco a discesa nella parte superiore del pannello, selezionando un campo esistente o utilizzando un’espressione personalizzata. Puoi inoltre scegliere di ordinare l’elenco delle geometrie dal menu a discesa.
Fai clic su un valore nel pannello di sinistra per visualizzare gli attributi della geometria nella destra. Per selezionare una geometria, devi fare click all’interno del simbolo quadrato a sinistra dell’identificatore. Per impostazione predefinita, il simbolo diventa giallo. Come nella visualizzazione tabella, puoi eseguire la selezione di più geometrie utilizzando le combinazioni di tasti precedentemente esposte.
Oltre a selezionare le geometrie con il mouse, è possibile eseguire la selezione automatica in base all’attributo della geometria utilizzando gli strumenti disponibili nella barra degli strumenti della tabella degli attributi, ad esempio (vedi la sezione Selezione automatica e la successiva per ulteriori informazioni e casi d’uso):
È anche possibile selezionare gli elementi utilizzando Filtrare e selezionare elementi usando moduli.
15.2.3.2. Filtrare elementi
Una volta che hai selezionato le geometrie nella tabella degli attributi, potresti voler visualizzare solo questi record nella tabella. Questo può essere fatto facilmente utilizzando la voce Mostra gli elementi selezionati dall’elenco a discesa in basso a sinistra della finestra di dialogo della tabella degli attributi. Questa lista offre i seguenti filtri:
Mostra Elementi Selezionati - come usare Apri Tabella Attributi (caratteristiche selezionate) dal menu Layer o dalla Barra degli strumenti relativi agli attributi o premendo Maiusc+F6.
Mostra elementi visibili sulla mappa - come usare Apri Tabella Attributi (Elementi Visibili) dal menu Layer o dalla Barra Strumenti degli Attributi o premendo Ctrl+F6.
Visualizza gli elementi modificati e nuovi - come usare Apri Tabella Attributi (Elementi Modificati e Nuovi) dal menu Layer o dalla Barra degli strumenti degli attributi.
Filtro campo - consente all’utente di filtrare in base al valore di un campo: scegli una colonna da un elenco, digitare o selezionare un valore e premere Invio per filtrare. Quindi, solo gli elementi che corrispondono all’espressione
num_field = value
ostring_field ilike '%value%'
vengono mostrati nella tabella degli attributi. Puoi selezionare Case sensitive per essere meno permissivi con le stringhe.Filtro avanzato (Espressione) - Apre la finestra di dialogo del costruttore di espressioni. Al suo interno, puoi creare complex expressions per selezionare righe nella tabella. Ad esempio, puoi filtrare elementi della tabella utilizzando più di un campo. Quando viene applicato, l’espressione del filtro apparirà in fondo al modulo.
saved expressions usate frequentemente per filtrare la tabella degli attributi.
: una scorciatoia per
E” anche possibile filter features using forms.
Nota
Filtrare records fuori dalla tabella degli attributi non consente di eliminare gli elementi dal layer; essi sono semplicemente momentaneamente nascosti dalla tabella e si possono selezionare sulla mappa ovvero si può rimuovere il filtro. Per filtri che nascondono gli elementi dal layer, utilizzare il Query Builder.
Suggerimento
Aggiornare il filtraggio della sorgente dati con Mostra gli elementi visibili nella mappa
Quando per motivi di prestazione, gli elementi visualizzati nella tabella degli attributi sono limitati nella visualizzazione mappa alla sua apertura (vedi Data Source Options per come fare), selezionando Mostra gli elementi visibili nella mappa su una nuova estensione di visibilità della mappa si aggiorna la precedente restrizione spaziale.
15.2.3.3. Memorizzazione espressioni filtro
Le espressioni utilizzate per il filtraggio della tabella degli attributi possono essere salvate per ulteriori richiami. Quando si usano le voci Filtro campo o Filtro avanzato (espressione), l’espressione usata viene visualizzata in un widget di testo nella parte inferiore della finestra di dialogo della tabella attributi. Premere l’opzione Save expression with text as name accanto alla casella per salvare l’espressione nel progetto. Premendo il menu a discesa accanto al pulsante è possibile salvare l’espressione con un nome personalizzato (Save expression as…). Una volta visualizzata un’espressione salvata, viene attivato il pulsante e il relativo menu a discesa consente di Modificare l’espressione e l’eventuale nome, oppure Cancellare l’espressione salvata.
Le espressioni di filtro salvate sono salvate nel progetto e disponibili attraverso il menu Espressioni Filtro Salvate della tabella degli attributi. Sono diverse dalle user expressions, condivise da tutti i progetti del profilo utente attivo.
15.2.3.4. Filtrare e selezionare elementi usando moduli
Facendo clic su Seleziona/filtra usando un modulo o premendo Ctrl+F la finestra di dialogo della tabella degli attributi passerà alla visualizzazione modulo e tutti i widget verranno sostituiti con le sue opzioni di ricerca.
Da questo punto in poi, questa funzionalità dello strumento è simile a quella descritta in Seleziona Elementi per Valore, dove si trovano le descrizioni di tutti gli operatori e le modalità di selezione.
Quando si selezionano/filtrano le geometrie dalla tabella degli attributi, c’è un pulsante Seleziona/Filtra elementi usando un modulo (Ctrl+F) ` che permette di definire e rifinire i filtri. Il suo utilizzo attiva l’opzione :guilabel:`Filtro avanzato (Espressione) e visualizza la corrispondente espressione del filtro in un widget di testo modificabile nella parte inferiore del modulo.
Se ci sono elementi già selezionati, puoi reimpostare il filtro usando l’elenco a discesa accanto al pulsante in basso a destra Filtra elementi. Le opzioni sono:
Filtra Entro («AND»)
Estendi Filtro («OR»)
Per cancellare il filtro seleziona l’opzione Seleziona tutto dal menu a discesa in basso a sinistra, oppure cancella l’espressione e fai clic su Applica oppure premi Invio.
15.2.4. Usare le azioni sugli elementi
Gli utenti hanno diverse possibilità di manipolare elementi con il menu contestuale come:
Seleziona Tutto (Ctrl+A) selezionare tutti gli elementi;
Copiare il contenuto di una cella negli appunti con Copia Contenuto Cella;
Zoom alla Geometria senza doverlo selezionare in anticipo;
Sposta alla Geometria senza doverla selezionare in anticipo;
Lampeggia Geometria, per evidenziarla sulla mappa;
Apri Modulo…: attiva la tabella degli attributi nella vista modulo con un focus sulla geometria cliccata.
Se vuoi utilizzare i dati degli attributi in programmi esterni (ad esempio Excel, LibreOffice, QGIS o un’applicazione Web personalizzata), seleziona una o più righe e utilizza il pulsante Copia le righe selezionate negli appunti o premi Ctrl+C.
Nel menu Copia elementi come:
, puoi definire il formato da incollare con le opzioni inTesto normale, nessuna geometria,
Testo normale, geometria WKT,
GeoJSON
Puoi anche visualizzare un elenco di azioni in questo menu contestuale. Questa opzione è attivata nella scheda Proprietà Azioni per ulteriori informazioni sulle azioni.
. Vedi15.2.4.1. Salvare le geometrie selezionate come nuovo layer
Le geometrie selezionate possono essere salvate in qualsiasi formato vettoriale supportato da OGR e anche trasformate in un altro sistema di riferimento di coordinate (SR). Nel menu contestuale del layer, dal Panello Layer, fai clic su per definire il nome del file di output, il formato e il SR (vedi la sezione Creare nuovi layer da layer esistente). Per salvare la selezione, assicurati che sia selezionata l’opzione . È anche possibile specificare le opzioni di creazione OGR all’interno della finestra di dialogo.
15.2.5. Modifica dei valori nella tabella degli attributi
La modifica dei valori degli attributi può essere eseguita:
digitando il nuovo valore direttamente nella cella, se la tabella degli attributi è in visualizzazione tabella o modulo. Le modifiche vengono quindi effettuate per cella, elemento per elemento;
utilizzando il field calculator: aggiorna in una riga un campo che può già esistere o essere creato ma per geometrie multiple Può essere utilizzato per creare campi virtuali.
utilizzando la modalità calculation bar: come sopra, ma solo per il campo esistente;
o utilizzando la modalità multi edit: aggiorna in una riga più campi per più geometrie
15.2.5.1. Usare il Calcolatore di campo
Il pulsante Apri calcolatore di campi nella tabella degli attributi ti consente di eseguire calcoli sulla base dei valori di attributi esistenti o di funzioni definite, per esempio, per calcolare la lunghezza o l’area di elementi geometrici. I risultati possono essere usati per aggiornare un campo esistente, o scritti in un nuovo campo (che può essere un campo virtual).
Il calcolatore di campi è disponibile su qualsiasi layer che supporta la modifica. Quando fai clic sull’icona del calcolatore di campi si apre la finestra di dialogo (vedi Fig. 15.71). Se il layer non è in modalità di modifica, viene mostrato un avvertimento e l’uso del calcolatore di campi causerà la messa in modalità di modifica del layer prima che il calcolo venga effettuato.
La finestra di dialogo Expression Builder offre un’interfaccia completa per definire un’espressione e applicarla a un campo esistente o appena creato. Per utilizzare la finestra di dialogo del calcolatore di campo, devi scegliere se vuoi:
applica il calcolo su tutto il layer o solo sulle geometrie selezionate
crea un nuovo campo per il calcolo o aggiorna un campo esistente.
Se scegli di aggiungere un nuovo campo, devi immettere un nome campo, un tipo di campo (intero, reale, data o stringa) e, se necessario, la lunghezza totale del campo e la precisione del campo. Ad esempio, se scegli una lunghezza del campo di 10 e una precisione del campo di 3, significa che hai 6 cifre prima del punto, poi il punto e altre 3 cifre per la precisione.
Un breve esempio illustra come funziona il calcolatore di campo quando si utilizza la scheda Espressione. Vogliamo calcolare la lunghezza in km del layer railroads
dal dataset di esempio di QGIS:
Carica lo shapefile
railroads.shp
in QGIS e premi Apri tabella attributi.Fai clic su Attiva modifiche e apri la finestra di dialogo Calcolatore di campi.
Seleziona la casella di controllo Crea un nuovo campo per salvare i calcoli in un nuovo campo.
Imposta Nome campo in uscita a
length_km
.Seleziona
Numero decinale (real)
come Tipo campo in uscitaImposta la Lunghezza campo in uscita a
10
e la Precisione a3
Fai doppio clic su
$lenght
nel gruppo Geometria per aggiungere la lunghezza della geometria nella casella di espressione del calcolatore di campo.Completa l’espressione digitando
/ 1000
nella casella Espressione del Calcolatore campo e fai click su OK.Puoi ora trovare un nuovo campo length_km nella tabella degli attributi.
15.2.5.2. Creare un Campo Virtuale
Un campo virtuale è un campo basato su un’espressione calcolata on the fly, il che significa che il suo valore viene aggiornato automaticamente non appena il parametro sottostante cambia. L’espressione viene impostata una sola volta; non è più necessario ricalcolare il campo ogni volta che i valori sottostanti cambiano. Ad esempio, puoi utilizzare un campo virtuale se vuoi che un’area venga valutata quando si digitalizzano poligoni ovvero calcolare automaticamente una durata tra date che possono cambiare (ad esempio, utilizzando la funzione now ()
).
Nota
Uso dei Campi Virtuali
I campi virtuali non sono permanenti negli attributi del layer, nel senso che sono solo salvati e disponibili nei file di progetto dove sono stati creati.
Un campo può essere impostato virtuale solo al momento della sua creazione. I campi virtuali sono evidenziati con uno sfondo viola nella scheda campi della finestra di dialogo delle proprietà del layer per distinguerli dai normali campi fisici o uniti. La loro espressione può essere modificata in seguito premendo il pulsante di espressione nella colonna Commento. Una finestra di editor di espressioni verrà aperta per modificare l’espressione del campo virtuale.
15.2.5.3. La barra di calcolo campo rapido
Mentre il calcolatore di campo è sempre disponibile, la barra di calcolo campo rapido in cima alla tabella di attributo è visibile solo se il layer è in modalità di modifica. Grazie al motore calcolatore tramite espressione, offre un accesso più rapido per modificare un campo già esistente.
15.2.5.4. Modifica multipla di campi
A differenza degli strumenti precedenti, la modalità modifica multipla consente di modificare più attributi di diversi elementi simultaneamente. Quando il layer viene impostato in modifica, sono disponibili strumenti di modifica multipla:
utilizzando il pulsante Attiva modalità modifica multipla nella barra degli strumenti all’interno della finestra di dialogo della tabella degli attributi,
Nota
A differenza dello strumento dalla tabella degli attributi, premendo l’opzione
viene fornita una finestra di dialogo per definire le modifiche degli attributi. Di conseguenza, è necessario selezionare le geometrie prima dell’esecuzione.Per modificare più campi di una riga:
Seleziona le geometrie che vuoi modificare.
Dalla barra degli strumenti della tabella degli attributi, fai click sul pulsante . In questo modo, la finestra di dialogo viene visualizzata nella sua maschera. La selezione delle geometrie potrebbe essere effettuata anche in questo punto.
Al lato destro della tabella degli attributi vengono visualizzati i campi (e i valori) delle geometrie selezionate. Nuovi widget appaiono accanto a ciascun campo che consentono di visualizzare lo stato di modifica multipla corrente:
il campo contiene valori diversi per le geometrie selezionate. Viene visualizzato vuoto e ogni geometria conserverà il suo valore originale. Puoi ripristinare il valore del campo dall’elenco a discesa del widget.
tutte le geometrie selezionate hanno lo stesso valore per questo campo e il valore visualizzato nel modulo verrà mantenuto.
il campo è stato modificato e il valore inserito verrà applicato a tutte le geometrie selezionate. Viene visualizzato un messaggio nella parte superiore della finestra di dialogo, invitandoti a applicare o annullare la modifica.
Facendo clic su uno di questi widget puoi o impostare il valore corrente per il campo o ripristinare il valore originale, il che significa che puoi ripristinare le modifiche campo per campo.
Apporta le modifiche ai campi desiderati.
Fai clic su Applica modifiche nel messaggio testuale superiore o a qualsiasi geometria del pannello di sinistra.
Le modifiche verranno applicate a tutte le geometrie selezionate. Se non è selezionata alcuna geometria, l’intera tabella viene aggiornata con le tue modifiche. Le modifiche vengono eseguite come un singolo comando di modifica. Quindi, premendo Annulla vengono ripristinate contemporaneamente le modifiche degli attributi per tutte le geometrie selezionate.
Nota
La modalità di modifica multipla è disponibile solo per i moduli generati automaticamente o personalizzati drag and drop (vedi Personalizzare un modulo per i tuoi dati); non è supportato da moduli personalizzati UI.
15.2.6. Creare una relazione uno a molti o molti a molti
Le relazioni sono una tecnica utilizzata spesso nelle banche dati. Il concetto è che le geometrie (righe) di layer diversi (tabelle) possono appartenersi a vicenda.
15.2.6.1. Introduzione alle relazioni 1-N
Come esempio hai un layer con tutte le regioni dell’Alaska (poligono) con alcuni attributi sul suo nome e il tipo regione e un ID univoco (che funge da chiave primaria).
Poi hai caricato un altro layer di punti o una tabella con informazioni sugli aeroporti che si trovano nelle regioni e desideri anche tenere traccia di questi. Se vuoi aggiungerli al layer regioni, devi creare rapporti uno a molti utilizzando chiavi esterne, in quanto in molte regioni esistono più aeroporti.
Layer in relazione 1-N
QGIS non fa differenza tra una tabella e un layer vettoriale. Fondamentalmente, un layer vettoriale è una tabella con una geometria. Quindi puoi aggiungere la tua tabella come un layer vettoriale. Per mostrare la relazione 1-n, puoi caricare lo shapefile airports
e lo shapefile airports
che contiene un campo chiave esterna (fk_region
) al layer regions. Ciò significa che ogni aeroporto appartiene esattamente ad una regione, mentre ogni regione può avere un certo numero di aeroporti (una tipica relazione uno a molti).
Chiavi esterne nelle relazioni 1-N
Oltre agli attributi già esistenti nella tabella degli attributi degli aeroporti, avrai bisogno di un altro campo fk_region
che funge da chiave esterna (se hai un database, probabilmente vorrai definire un vincolo su di esso).
Questo campo fk_region conterrà sempre un id di una regione. Può essere visto come un puntatore alla regione a cui appartiene. E si può progettare un modulo di modifica personalizzato per l’editing e QGIS si fa carico della sua definizione. Funziona con diverse fonti dati (quindi puoi anche usarlo con shapefile e csv) e tutto quello che devi fare è definire in QGIS le relazioni tra le tue tabelle.
Definire relazioni 1-N
La prima cosa da fare è far definire in QGIS le relazioni tra i livelli. Questo lo puoi fare con Relazioni e fai clic su Aggiungi relazione.
. Apri la schedaNome sarà il titolo. Dovrebbe essere un testo comprensibile, che indica a cosa serve la relazione. In questo caso nominala semplicemente airport_relation.
Layer di riferimento (genitore) considerato anche come layer genitore, è quello con la chiave primaria, quindi qui è il layer
regions
. Devi definire la chiave primaria del layer di riferimento, ch in questo caso èID
.Il layer referente, considerato come layer figlio è quello con il campo chiave che punta sul layer padre. In questo caso il layer
airports
e dovrai aggiungere un campo di referimento chiamatofk_region
.Nota
A volte, è necessario più di un singolo campo per identificare in modo univoco gli elementi in un livello. La creazione di una relazione con un tale layer richiede una chiave composta, cioè più di una singola coppia di campi corrispondenti. Usa il pulsante Aggiungi una nuova coppia di campi come parte di una chiave esterna composta per aggiungere tutte le coppie necessarie.
id sarà utilizzato per scopi interni e deve essere univoco. Ti potrebbe essere necessario per creare custom forms. Se lo lasci vuoto, verrà generato automaticamente per te, ma puoi assegnare un nome per avere una più chiara modalità di gestione.
Forza della relazione imposta la forza della relazione tra il livello genitore e il livello figlio. Il tipo predefinito Associazione significa che il livello genitore è semplicemente collegato a quello figlio, mentre il tipo Composizione consente di duplicare anche gli elementi figli quando si duplicano quelli genitori e quando si cancella un elemento vengono cancellati anche i figli, con conseguente cascata su tutti i livelli (significa che vengono cancellati anche i figli dei figli di…).
Dalla scheda Relazioni, puoi anche premere il pulsante Scopri Relazioni per recuperare le relazioni disponibili dai provider dei layer caricati. Questo è possibile per i layer memorizzati in provider di dati come PostgreSQL o SpatiaLite.
Moduli per relazioni 1-N
Ora che QGIS sa la relazione, sarà usato per migliorare il modulo che genera. Poiché non abbiamo modificato il modulo predefinito (autogenerato) aggiungerà semplicemente un nuovo widget nel nostro modulo. Quindi, selezioniamo la regione del layer nella legenda e utilizziamo lo strumento di identificazione. A seconda delle impostazioni, il modulo si potrebbe aprire direttamente o dovrai scegliere di aprirlo nella finestra di dialogo di identificazione in azioni.
Come puoi vedere, gli aeroporti assegnati a questa particolare regione vengono tutti mostrati in una tabella. E ci sono anche alcuni pulsanti disponibili. Guardiamoli brevemente
Il pulsante serve per attivare la modalità di modifica. Tieni presente che imposta la modalità di modifica per il layer airports, anche se siamo nel modulo di un elemento del layer regions. Ma la tabella rappresenta le geometrie del layer airports.
Il pulsante serve a salvare tutte le modifiche nel livello figlio (airport).
Il pulsante consente di digitalizzare la geometria dell’aeroporto nella area di disegno della mappa e assegna il nuovo elemento alla regione corrente per impostazione predefinita. L’icona cambia a seconda del tipo di geometria.
Il pulsante aggiunge un nuovo record alla tabella degli attributi del layer airport e assegna il nuovo elemento alla regione corrente per impostazione predefinita. La geometria può essere disegnata successivamente con lo strumento di digitalizzazione Aggiungi parte.
Il pulsante consente di copiare e incollare una o più elementi figli all’interno del livello figlio. Queste possono essere successivamente assegnate a un altro elemento genitore o modificarne gli attributi.
Il pulsante cancella definitivamente l’aeroporto o gli aeroporti selezionati.
Il simbolo apre una nuova finestra di dialogo in cui puoi selezionare un aeroporto esistente che verrà assegnato alla regione corrente. Questo può essere utile se si è creato per sbaglio un aeroporto nella regione sbagliata.
Il simbolo scollega l’aeroporto(i) selezionato(i) dalla regione corrente, lasciandolo effettivamente non assegnato (la chiave straniera è impostata a NULL).
Con il pulsante puoi ingrandire la mappa sulla geometria figlia selezionata.
I due pulsanti e a destra permettono di scegliere tra la table view and form view <attribute_table_view>` delle relative funzioni figlio.
Se utilizzi il Drag and Drop Designer per l’elemento regioni, puoi selezionare gli strumenti disponibili. Puoi anche decidere se aprire un nuovo modulo quando viene aggiunta un nuovo elemento, usando l’opzione Forza occultamento del modulo quando si aggiunge un elemento. Tieni presente che questa opzione implica che gli attributi non nulli devono assumere un valore predefinito valido per funzionare correttamente.
Nell’esempio precedente il layer ha delle geometrie (quindi non è solo una tabella alfanumerica) quindi i passi precedenti creeranno una voce nella tabella degli attributi del layer che non ha alcuna caratteristica geometrica corrispondente. Per aggiungere la geometria:
Seleziona il record che è stato aggiunto in precedenza all’interno del modulo per la geometria del layer selezionato.
Utilizza lo strumento di digitalizzazione Add Part per collegare una geometria al record della tabella degli attributi selezionata.
Se lavori sulla tabella dell’aeroporto, il widget Relation Reference viene automaticamente impostato per il campo fk_region
(quello usato per creare la relazione), vedi Relation Reference widget.
Nel modulo aeroporto vedrai il pulsante sul lato destro del campo fk_region
: se clicchi sul pulsante si aprirà il modulo del layer regione. Questo widget ti permette di aprire facilmente e rapidamente i moduli delle geometrie padri collegate.
Il widget Relation Reference ha anche un’opzione per incorporare il modulo del layer genitore all’interno di quello figlio. È disponibile nel menu fk_region
e attiva l’opzione Show embedded form
.
Se ora guardi alla finestra di dialogo delle geometrie, vedrai che il modulo della regione è incorporato all’interno del modulo aeroportuale e avrà anche una combinazione di opzioni di scelta, che ti consentono di assegnare l’attuale aeroporto ad un’altra regione.
Inoltre se attivi la modalità di modifica del layer airport, il campo fk_region
ha anche una funzione di autocompletamento: mentre scrivi vedrai tutti i valori del campo id
del layer region. Qui è possibile digitalizzare un poligono per il layer region usando il pulsante se hai scelto l’opzione Consenti l'aggiunta di nuovi elementi
nel menu del layer airport.
Il layer figlio può anche essere usato nello strumento Seleziona Elementi per Valore per selezionare gli elementi del layer padre in base agli attributi dei loro figli.
In Fig. 15.79, vengono selezionate tutte le regioni nelle quali l’altitudine media degli aeroporti è superiore a 500 metri sul livello del mare.
Scoprirai che nel modulo sono disponibili molte funzioni di aggregazione diverse.
15.2.6.2. Introduzione alle relazioni molti-a-molti (N-M)
Le relazioni N-M sono relazioni molti a molti rapporti tra due tabelle. Ad esempio, i layer airports
e airlines
: un aeroporto serve compagnie aeree e una compagnia aerea opera in diversi aeroporti.
Questo codice SQL crea le tre tabelle necessarie per una relazione N-M in uno schema PostgreSQL/PostGIS denominato locations. Puoi eseguire il codice utilizzando pgAdmin. La tabella aeroporti memorizza il layer airports
e la tabella compagnie aeree memorizza il layer airlines
. In entrambe le tabelle per chiarezza vengono usati pochi campi. La parte utile è la tabella airports_airlines`
. Ne abbiamo bisogno per elencare tutte le compagnie aeree per tutti gli aeroporti (o viceversa). Questo tipo di tabella è conosciuta come tabella pivot. Le relazioni in questa tabella costringono a far sì che un aeroporto possa essere associato ad una compagnia aerea solo se entrambi esistono già nei loro layer.
CREATE SCHEMA locations;
CREATE TABLE locations.airports
(
id serial NOT NULL,
geom geometry(Point, 4326) NOT NULL,
airport_name text NOT NULL,
CONSTRAINT airports_pkey PRIMARY KEY (id)
);
CREATE INDEX airports_geom_idx ON locations.airports USING gist (geom);
CREATE TABLE locations.airlines
(
id serial NOT NULL,
geom geometry(Point, 4326) NOT NULL,
airline_name text NOT NULL,
CONSTRAINT airlines_pkey PRIMARY KEY (id)
);
CREATE INDEX airlines_geom_idx ON locations.airlines USING gist (geom);
CREATE TABLE locations.airports_airlines
(
id serial NOT NULL,
airport_fk integer NOT NULL,
airline_fk integer NOT NULL,
CONSTRAINT airports_airlines_pkey PRIMARY KEY (id),
CONSTRAINT airports_airlines_airport_fk_fkey FOREIGN KEY (airport_fk)
REFERENCES locations.airports (id)
ON DELETE CASCADE
ON UPDATE CASCADE
DEFERRABLE INITIALLY DEFERRED,
CONSTRAINT airports_airlines_airline_fk_fkey FOREIGN KEY (airline_fk)
REFERENCES locations.airlines (id)
ON DELETE CASCADE
ON UPDATE CASCADE
DEFERRABLE INITIALLY DEFERRED
);
Al posto di PostgreSQL puoi anche utilizzare GeoPackage. In questo caso, le tre tabelle possono essere create manualmente utilizzando il menu
. In GeoPackage non ci sono schemi, quindi il prefisso localizzazione non è necessario.Chiavi esterne vincolanti nella tabella airports_airlines
non possono essere creati usando o pertanto devono essere creati usando . GeoPackage non supporta le istruzioni ADD CONSTRAINT quindi la tabella airports_airlines
dovrebbe essere creata in due fasi:
Imposta la tabella solo con il campo
id
usando .Usando
, digita ed esegui questo codice SQL:ALTER TABLE airports_airlines ADD COLUMN airport_fk INTEGER REFERENCES airports (id) ON DELETE CASCADE ON UPDATE CASCADE DEFERRABLE INITIALLY DEFERRED; ALTER TABLE airports_airlines ADD COLUMN airline_fk INTEGER REFERENCES airlines (id) ON DELETE CASCADE ON UPDATE CASCADE DEFERRABLE INITIALLY DEFERRED;
Poi, in QGIS, dovresti impostare due relazioni one-to-many relations come sopra spiegato:
una relazione tra la tabella
airlines
e la tabella pivot;e una seconda tra la tabella
airports
e la tabella pivot.
Un modo più semplice per farlo (solo per PostgreSQL) è quello di utilizzare il comando Scopri relazioni in . QGIS leggerà automaticamente tutte le relazioni nel tuo database e devi solo selezionare le due che ti servono. Ricordati di caricare prima le tre tabelle del progetto QGIS.
Se vuoi rimuovere un airport
o una airline
, QGIS non rimuoverà i record associati nella tabella airports_airlines
. Questo compito sarà fatto dal database se specifichiamo i corretti vincoli nella creazione della tabella pivot come nell’esempio corrente.
Nota
Combinare la relazione N-M con il gruppo di transazioni automatiche
Dovresti abilitare la modalità Crea automaticamente la transizione dei gruppi quando possibile in
se stai lavorando in tale contesto. QGIS dovrebbe essere in grado di aggiungere o aggiornare le righe in tutte le tabelle (compagnie aeree, aeroporti e tabelle pivot).Infine, dobbiamo selezionare la giusta cardinalità nel airports
e airlines
. Per il primo si deve scegliere l’opzione airlines (id) e per il secondo l’opzione airports (id).
Ora puoi associare un aeroporto con una compagnia aerea (o una compagnia aerea con un aeroporto) usando Add child feature o Link existing child feature nei sottomoduli. Un record verrà automaticamente inserito nella tabella airports_airlines
.
Nota
Utilizzo cardinalità Relazione molti ad uno
A volte non è opportuno nascondere la tabella pivot in una relazione N-M. Principalmente perché ci sono attributi nella relazione che possono avere valori solo quando si stabilisce una relazione. Se le tabelle sono layer (hanno un campo geometrico) potrebbe essere interessante attivare l’opzione On map identification opzione ( ) per i campi chiave esterna nella tabella pivot.
Nota
Chiave primaria tabella pivot
Evita di utilizzare più campi nella chiave primaria in una tabella pivot. QGIS accetta una singola chiave primaria, quindi un vincolo come constraint airports_airlines_airlines_pkey primary key (airport_fk, airline_fk)
non funzionerà.
15.2.6.3. Introduzione alle relazioni polimorfiche
Le relazioni polimorfiche sono un caso speciale di relazioni 1-N, in cui un singolo layer di riferimento (documento) contiene gli elementi di più layer referenziati. Ciò differisce dalle relazioni normali, che richiedono un layer di riferimento diverso per ogni layer referenziato. Un singolo layer di riferimento (documento) si ottiene aggiungendo una colonna aggiuntiva ``campo_layer”” nel layer di riferimento (documento) che memorizza le informazioni per identificare il layer di riferimento. Nella sua forma più semplice, il layer di riferimento (documento) inserirà semplicemente il nome del layer di riferimento in questo campo.
Per essere più precisi, una relazione polimorfa è un insieme di relazioni normali che hanno lo stesso layer di riferimento, ma con il layer di riferimento definito dinamicamente. L’impostazione polimorfica del layer viene risolta utilizzando un’espressione che deve corrispondere ad alcune proprietà del layer di riferimento, come il nome della tabella, l’id del layer, il nome del layer.
Immaginiamo di andare al parco e di voler fotografare le diverse specie di piante'' e ``animali'' che vediamo lì. Ogni pianta o animale ha più immagini associate, quindi se usassimo le normali relazioni 1:N per memorizzare le immagini, avremmo bisogno di due tabelle separate, ``immagini_animali
e immagini_piante
. Questo potrebbe non essere un problema per due tabelle, ma immaginiamo di voler fare immagini separate per funghi, uccelli, ecc.
Le relazioni polimorfiche risolvono questo problema, poiché tutte gli elementi di riferimento sono memorizzati nella stessa tabella documents
. Per ogni elemento, il layer di riferimento è memorizzato nel campo referenced_layer
e l’id dell’elemento di riferimento nel campo referenced_fk
.
Definizione relazioni polimorfiche
Per prima cosa, si deve far conoscere a QGIS le relazioni polimorfiche tra i layer. Questo si fa in Relazioni e fai clic sulla piccola freccia rivolta verso il basso accanto al pulsante Aggiungi relazione, in modo da poter selezionare l’opzione Aggiungi relazione polimorfica dal menu a tendina appena apparso.
. Apri la schedaid sarà utilizzato per scopi interni e deve essere univoco. Ti potrebbe essere necessario per creare custom forms. Se lo lasci vuoto, verrà generato automaticamente per te, ma puoi assegnare un nome per avere una più chiara modalità di gestione.
Il Layer di riferimento (figlio), considerato anche come layer figlio, è quello che contiene il campo chiave esterna. Nel nostro caso, si tratta del layer
documents
. Per questo layer è necessario aggiungere un campo di riferimento che punti all’altro layer, quindi questo èreferenced_fk
.Nota
A volte, è necessario più di un singolo campo per identificare in modo univoco gli elementi in un livello. La creazione di una relazione con un tale layer richiede una chiave composta, cioè più di una singola coppia di campi corrispondenti. Usa il pulsante Aggiungi una nuova coppia di campi come parte di una chiave esterna composta per aggiungere tutte le coppie necessarie.
Il Campo layer è il campo della tabella di riferimento che memorizza il risultato dell’espressione del layer valutato, che è la tabella di riferimento a cui appartiene questo elemento. Nel nostro esempio, si tratta del campo
referenced_layer
.L”Espressione Layer valuta un identificatore univoco del layer. Può essere il nome del layer
@layer_name
, l’id del layer@layer_id
, il nome della tabella del layerdecode_uri(@layer, 'table')
o qualsiasi cosa che possa identificare univocamente un layer.Forza Associazione significa che il layer genitore e il layer figlio sono legati da una relazione di forza. Il tipo predefinito Associazione significa che il layer genitore è semplicemente collegato a quello figlio, mentre il tipo Composizione consente di duplicare anche gli elementi figli quando si duplicano quelli genitori e quando si cancella un elemento vengono cancellati anche i figli, con conseguente cascata su tutti i layer (significa che vengono cancellati anche i figli dei figli di…).
I Layer di riferimento, considerati anche come layer padre, sono quelli con la chiave primaria puntata, quindi in questo caso sono i layer
plants
eanimals
. Devi definire la chiave primaria dei layer referenziati dall’elenco a discesa, quindi èfid
. Si noti che la definizione di una chiave primaria valida richiede che tutti i layer di riferimento abbiano un campo con quel nome. Se non esiste tale campo, non è possibile salvare una relazione polimorfa.
Una volta aggiunta, la relazione polimorfa può essere modificata tramite la voce di menu Modifica relazione polimorfa.
L’esempio precedente utilizza il seguente schema di database:
CREATE SCHEMA park;
CREATE TABLE park.animals
(
fid serial NOT NULL,
geom geometry(Point, 4326) NOT NULL,
animal_species text NOT NULL,
CONSTRAINT animals_pkey PRIMARY KEY (fid)
);
CREATE INDEX animals_geom_idx ON park.animals USING gist (geom);
CREATE TABLE park.plants
(
fid serial NOT NULL,
geom geometry(Point, 4326) NOT NULL,
plant_species text NOT NULL,
CONSTRAINT plants_pkey PRIMARY KEY (fid)
);
CREATE INDEX plants_geom_idx ON park.plants USING gist (geom);
CREATE TABLE park.documents
(
fid serial NOT NULL,
referenced_layer text NOT NULL,
referenced_fk integer NOT NULL,
image_filename text NOT NULL,
CONSTRAINT documents_pkey PRIMARY KEY (fid)
);
15.2.7. Memorizzazione e acquisizione di una risorsa esterna
Un campo può puntare a una risorsa memorizzata su un sistema di archiviazione esterno. I moduli degli attributi possono essere configurati in modo da agire come client di un sistema di archiviazione esterno, per memorizzare e recuperare tali risorse, su richiesta degli utenti, direttamente dai moduli.
15.2.7.1. Configurazione di una memoria esterna
Per configurare un archivio esterno, occorre prima configurarlo dal vettore attribute form properties e selezionare il widget Attachment.
Dal widget Attachment, devi prima selezionare il Tipo di memorizzazione:
Seleziona file esistente: L’URL di destinazione esiste già. Quando si seleziona una risorsa, non viene eseguita alcuna operazione di memorizzazione, ma l’attributo viene semplicemente aggiornato con l’URL.
Copia semplice: Memorizza una copia della risorsa su un disco di destinazione (che può essere un file system locale o condiviso in rete) e l’attributo viene aggiornato con il percorso della copia.
WebDAV Storage: La risorsa viene inviata a un server HTTP che supporta il protocollo WebDAV e l’attributo viene aggiornato con il suo URL. Nextcloud, Pydio o altri software di file hosting supportano questo protocollo.
Quindi, devi impostare il parametro Store URL, che fornisce l’URL da utilizzare quando una nuova risorsa deve essere memorizzata. È possibile impostare un’espressione usando il parametro data defined override widget, per avere valori specifici in base agli attributi degli elementi.
La variabile @selected_file_path potrebbe essere usata in questa espressione e rappresentare il percorso assoluto del file selezionato dall’utente (usando il selettore di file o con trascina e rilascia).
Nota
Utilizzando l’archivio esterno WebDAV, se l’URL termina con «/», viene considerato come una cartella e il nome del file selezionato viene aggiunto per ottenere l’URL finale.
Se il sistema di archiviazione esterno ne ha bisogno, è possibile configurare una authentication.
15.2.7.2. Utilizzare una memoria esterna
Una volta configurato, puoi selezionare un file locale utilizzando il pulsante … quando si modifica l’attributo di un elemento. A seconda del tipo di storage type configurato, il file verrà memorizzato sul sistema di archiviazione esterno (tranne se è stato selezionato Select existing file) e il campo verrà aggiornato con il nuovo URL della risorsa.
Nota
L’utente può ottenere lo stesso risultato anche trascinando e rilasciando un file sull’intero attachment widget.
Utilizzare il pulsante Cancel per interrompere il processo di memorizzazione. È possibile configurare un visualizzatore utilizzando la voce Visualizzatore integrato di documenti, in modo che la risorsa venga recuperata automaticamente dal sistema di archiviazione esterno e visualizzata direttamente sotto l’URL. L’icona di avviso di cui sopra indica che la risorsa non può essere recuperata dal sistema di archiviazione esterno. In questo caso, ulteriori dettagli potrebbero apparire nel Pannello Messaggi di Log.