QGIS RELAZIONI

Le ‘Relazioni’ in QGIS permettono di sviluppare dei casi molto interessanti attraverso il meccanismo classico delle ‘chiavi’. Le relazioni sono molto usate in QGIS, sia tra shapefile che tra semplici tabelle o shapefile e semplici tabelle o vettori PostGIS; vengono usate anche negli Atlas (Atlanti) nel compositore di stampe. Di seguito parleremo delle relazioni tra tabelle già esistenti.

Le ‘Relazioni’ vengono utilizzate ogniqualvolta nasce la necessità di dover mettere in relazione due tabelle, una con ‘n’ record e un’altra con ‘m’ record (con ‘n’ < ‘m’) cioè il classico esempio della relazione uno a molti, relazione ‘padre’ – ‘figlio’.

Per capire meglio di cosa si tratta facciamo un semplice esempio: lo shapefile regioni italiane è caratterizzato da una tabella degli attributi con #20 record (#20 feature) che rappresentano le venti regioni italiane e lo shapefile province italiane caratterizzato da #110 province (#110 feature) cioè la tabella degli attributi ha #110 righe. Lo shapefile regioni ha un campo univoco denominato ‘cod_reg’ (codice regione), tale campo lo ritroviamo anche nello shapefile province italiane, ma questa volta non è un campo univoco ma un semplice campo numerico che si ripete tante volte quante sono le province ricadenti all’interno di una regione; per esempio in Sicilia (cod_reg = 19) nella tabella delle province il campo ‘cod_reg = 19’ è ripetuto ben 9 volte, cioè il numero delle province siciliane.

Immagine 30
Tabella degli attributi regioni italiane
Immagine 31
Tabella degli attributi province italiane (filtrate per la Sicilia)

Questi due shapefile sono in relazione tra loro, una relazione tra ‘padre’ (regioni italiane) e ‘figlio’ (province italiane), relazione che tecnicamente è definita ‘uno a molti’ (una regione ha molte province; un record della tabella ‘padre’ ha molti record nella tabella ‘figlio’).

Per poter esplicare la relazione è necessario, come detto sopra, che la tabella padre sia caratterizzata da un campo con valori univoci (cod_reg, detta chiave primaria) e che la tabella figlia abbia un campo con valori ripetuti (cod_reg, detta chiave esterna) uguali alla tabella padre quindi un campo non univoco. Questi due campi sono fondamentali per definire la relazione in QGIS, entrambi vengono chiamati campi di riferimento, ma uno è relativo alla tabella padre (campo univoco) e l’altro alla tabella figlio (campo non univoco).

In QGIS le relazioni vengono definite a livello di progetto, quindi per definire una relazione tra tabelle occorre andare sul menù Progetto => Proprietà progetto… => relazioni

Immagine 32
screenshot proprietà progetto – Relazioni

cliccando sul bottone ‘Aggiungi relazione’ si aprirà la finestra:

Immagine 33
screenshot aggiungi relazione
  • Nome: inserire un nome che ricordi la relazione;
  • Layer di riferimento (figlio): selezionare lo shapefile delle province;
  • campo di riferimento: selezionare il campo ‘cod_reg’ (la chiave esterna);
  • Layer di riferimento (padre): selezionare lo shapefile regioni;
  • campo di riferimento: selezionare il campo ‘cod_reg’ (la chiave primaria);
  • OK.

A questo punto la relazione è definita e può essere visualizzata aprendo la tabella degli attributi dello shapefile regioni:

Immagine 34
screenshot tabella regione con relazione.

Osservazioni finali:

In generale le tabelle lato figlio sono delle semplici tabelle senza contenuto spaziale, delle classiche tabelle in formato CSV, in quanto il loro uso è limitato al solo arricchimento di dati, di conseguenza NON possono essere utilizzate per tematizzazioni o selezioni di feature lato padre. Un uso molto interessante è legato alla costruzione di atlanti.

Video dimostrativo.

Advertisements

2 pensieri su “QGIS RELAZIONI

  1. volevo chiederti cortesemente, se è possibile creare una relazione con più di 2 tabelle in cascata (esempio banale: regione, provincia, comune, zone….)

    Mi piace

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...