Dati DUSAF, Destinazione d'Uso dei Suoli Agricoli e Forestali
(esempio realizzato con QGIS 2.99)
I dati DUSAF sono realizzati dall'E.R.S.A.F. (Ente Regionale per i Servizi
all'Agricoltura e Foreste) e contengono informazioni su
uso o caratteristiche dei suoli o della copertura vegetale. Sono
disponibili diverse versione che si riferiscono ad anni diversi; al
momento la versione più aggiornata e la 5.0 relativa all'uso del suolo
dell'anno 2015.
I dati sono scaricabili dal geoportale di Regione Lombardia (http://www.geoportale.regione.lombardia.it/)
in formato shapefile compressi in archivio .zip. All'interno
dell'archivio sono presenti due layer: "Filari Siepi" (shapefile di
linee) e "Uso Suolo" (shapefile di poligoni). In questo esempio vediamo
come gestire il layer "Uso Suolo".
Quando il layer è importato in QGIS tutti i poligoni vengono
rappresentati con lo stesso colore.
Per differenziarli dobbiamo fare riferimento alla tabella attributi
associata al layer (tasto destro del mouse sul nome del layer >
"Apri tabella attributi") dove sono presenti i codici che identificano
il tipo di uso o copertura vegetale per ogni porzione di suolo.
Purtroppo nella versione 5.0 sono presenti solo codici numerici e manca
una descrizione. Per conoscere il significato dei codici dobbiamo
consultare il file pdf "legenda_DUSAF" che può essere scaricato dal
geoportale lombardo oppure da qui.
I poligoni (che rappresentano porzioni di suolo con caratteristiche omogenee al loro interno) sono classificati
secondo 5 livelli.
Il primo livello distingue:
1 - aree antropizzate
2 - aree agricole
3 - territori boscati e ambienti seminaturali
4 - aree umide
5- corpi idrici
Il secondo livello suddivide le precedenti classi in sottogruppi. Ad
esempio le aree antropizzate sono distinte in:
11 - Zone Urbanizzate
12 - Insediamenti produttivo, grandi impianti e reti di
comunicazione
13 - Aree estrattive, discariche, cantieri, terreni artefatti e
abbandonati
14 - Aree verdi non agricole
I livelli successivi fanno altrettanto, ovvero suddividono le classi
del livello precedente in ulteriori sottoclassi.
Non sempre si arriva fino al 5° livello di classificazione. Alcuni
elementi arrivano solo a 4 livelli, altri solo a 3 e non sempre la
suddivisione genera più sottoclassi. Ad esempio la classe 4 (aree
umide) comprende una sola sottoclasse 41 (aree umide interne) che a sua
volta comprende un'unica sotto-sottoclasse 411 (vegetazione delle aree
umide interne e delle torbiere) e si ferma al 3° livello.
La classificazione finale di ogni poligono è indicata nel campo 'COD5'
della tabella attributi ed è un numero intero di 3, 4 o 5 cifre in
base al livello di classificazione raggiunto. (Pur essendo un numero intero esso è salvato in formato testo all'interno della tabella attributi.) Ora diventa un po'
scomodo creare uno stile differenziato dei vari poligoni tenendo
un'occhio sulla tabella attributi ed uno sul pdf della legenda. Per
questo ho creato la seguente tabella riassuntiva:
La prima colonna '5-CODICE' corrisponde al campo 'COD5' della tabella
attributi del layer, poi vengono i livelli di classificazione superiori
con codice e descrizione.
Questa tabella è scaricabile in formato .csv (comma separated value) da qui.
Essa può essere importata in QGIS e collegata al layer "Uso Suolo" per
far comparire codici e descrizioni nella tabella attributi.
Vediamo come fare.
Il file csv può essere importato QGIS trascinandolo nella finestra del programma (drag and drop)
oppure dal "Pannello Browser" cliccando con tasto destro del mouse su
'codici_dusaf.csv' > "Aggiungi i(il) layer selezionati alla mappa".
Il file viene aggiunto al "Pannello layer" come tabella a cui non sono
associate geometrie.
Possiamo vederne il contenuto cliccando con tasto destro del mouse > "Apri tabella attributi".
Però non ci interessa la sola tabella ma piuttosto il suo collegamento
al layer di poligoni. Chiudiamo quindi la tabella e apriamo la finestra
"Proprietà vettore" del layer 'Dusaf5 Uso Suolo' (tasto destro del
mouse sul nome del layer > "Proprietà"). Andiamo sulla scheda
"Join" che al momento dovrebbe essere vuota e clicchiamo in basso sul
tasto + ("Add new join", aggiungi nuovo collegamento).
Nella finestra che compare selezioniamo la tabella 'Codici Dusaf' alla
voce "Vettore di join" poi indichiamo i due campi di unione (che devono
contenere valori corrispondenti); il primo (Campo unione) è la colonna
'5-CODICE' della tabella 'Codici Dusaf' da collegare; il secondo (Campo
destinazione) è la colonna 'COD5' della tabella attributi del layer
'Dusaf5 Uso Suolo'. Va notato che, mentre nel campo
'COD5' della tabella del layer 'Uso Suolo' i valori
possono ripetersi poiché più poligoni possono essere classificati allo
stesso modo, ogni valore del campo '5-CODICE' della tabella 'Codici
Dusaf' è presente una sola volta, non ci sono doppioni. Quindi ad ogni
elemento del layer 'Uso Suolo' corrisponde una sola riga della tabella
'Codici Dusaf'.
Cliccando su OK il collegamento ad i suoi parametri vengono riportati nella scheda "Join" della finestra "Proprietà vettore".
Se ora apriamo la tabella attributi del layer 'Dusaf 5 Uso Suolo'
(tasto destro del mouse sul nome del layer >
"Apri tabella attributi") vediamo che essa riporta anche i campi della
tabella 'Codici Dusaf' associati ai valori del campo 'COD5'.
Ora i campi di questa tabella potrebbero essere usati per differenziare
i poligoni. Se però usassimo i campi di descrizione le classi
verrebbero elencate in ordine alfabetico e si perderebbe l'ordine della
classificazione originale; usando invece i codici che seguono l'ordine
della classifacazione originale non avremmo le descrizioni in legenda.
Per evitare questi inconvenienti creiamo campi virtuali che uniscono i
codici con le relative descrizioni, poi, costruendo classi di simbologia
basate su questi nuovi campi, otterremo classi ordinate secondo i
codici (e quindi secondo la classificazione originale) ed avremo la
descrizione in legenda.
Cominciamo con codici e descrizione del livello 1.
Nella finestra della nuova tabella attributi clicchiamo sull'icona con
il pallottoliere ("Apri il calcolatore di campi"). Quando il layer non
è modificabile (come in questo caso in cui lo shapefile è compresso in
un archivio .zip) non si possono aggiungere nuovi campi reali (cioè
scritti nel database del layer) o modificare campi reali esistenti, ma
si possono aggiungere campi virtuali. Un
campo virtuale non viene salvato insieme al dato, quindi se aprissimo
il layer con un altro programma non ritroveremmo il campo appena creato
(in altri progetti di QGIS invece possiamo ritrovare il campo virtuale
se salviamo un file di stile .qml associato al layer). Ha però alcuni
vantaggi: può essere creato anche per layer non modificabili, può
essere cambiato/corretto/migliorato modificandone l'espressione che lo
genera e viene automaticamente aggiornato se si cambia il valore di un
campo usato nell'espressione.
Per prima cosa specifichiamo nome e tipo del nuovo campo: '1_COD-DESC',
di tipo "Testo (string)" con lunghezza 200 (abbastanza lungo da
contenere codice e descrizione). Poi usiamo la funzione "concat" per
unire i valori dei campi '1-CODICE' e '1-DESCRIZIONE' ovvero scriviamo:
concat( "Codici Dusaf_1-CODICE" ,' - ', "Codici Dusaf_1-DESCRIZIONE" )
(tra i due campi è inserito ' - ' per separarli)
Cliccando su OK nuovo campo viene aggiunto alla tabella attributi:
Creiamo altri campi virtuali per gli altri livelli cambiando opportunamente nomi ed espressioni:
2_COD-DESC :
concat( "Codici Dusaf_2-CODICE" ,' - ', "Codici Dusaf_2-DESCRIZIONE" )
3_COD-DESC :
concat( "Codici Dusaf_3-CODICE" ,' - ', "Codici Dusaf_3-DESCRIZIONE" )
4_COD-DESC :
concat( "Codici Dusaf_4-CODICE" ,' - ', "Codici Dusaf_4-DESCRIZIONE" )
5_COD-DESC :
concat( "COD5" ,' - ', "Codici Dusaf_5-DESCRIZIONE" )
in modo da averli tutti nella tabella attributi
A questo punto possiamo dare simboli differenziati ai poligoni sulla
base di uno o più dei nuovi campi. Per sfruttare più campi usiamo la
modalità di simbologia "basata su regole".
Apriamo la finestra "Proprietà vettore" (tasto destro del mouse sul
nome del layer > "Propèrietà"), scheda "Simbologia" ed impostiamo la
modalità "Rule-based" (basata su regole). Nello spazio sottostante
dovrebbe essere presente un solo simbolo; clicchiamo su di esso con il
tasto destro del mouse e scegliamo "Affina la regola attuale" > "Aggiungi categorie alla regola".
Nella nuova finestra indichiamo il campo '2_COD-DESC' alla voce
"Colonna" e clicchiamo su classifica: il programma crea un simbolo per
ogni valore presente nel campo indicato più uno in caso di eventuali
valori nulli o non corrispondenti ai valori in elenco.
I simboli sono diversificati per colore.
Proviamo ad eliminare il bordo. Potremmo modificare singolarmente ogni
sombolo ma visto che è una modifica da applicare a tutti possiamo
cliccare su "Cambia" alla voce "Simbolo".
Nella finestra "Selettore simbolo" clicchiamo su "Simple fill" poi
modifichiamo il "Colore tratto" mettendolo trasparente (che equivale ad
eliminare il bordo) e clicchiamo su OK.
Vediamo che il bordo sparisce da tutti i simboli.
Cambiamo ora i colori di riempimento. Visto che alcuni simboli devono
avere lo stesso colore li selezioniamo insieme, clicchiamo con il tasto
destro del mouse e selezioniamo "Cambia colore"
(nella finestra di selezione del colore scegliamo quello che ci piace poi diamo OK per assegnarlo ai simboli selezionati)
Finita l'attribuzione dei colori diamo OK per riprodurre l'elenco dei
simboli e rispettive regole nella finestra "Proprietà vettore". Ora i
simboli sono differenziati in base agli attributi del campo
'2_COD-DESC' ma possiamo ulterioremente differenziare ogni classe
simbolica in sottoclessi usando altri attributi.
Ad esempio selezioniamo la classe corrispondente a '31- Aree boscate',
clicchiamo con il tasto destro del mouse > "Affina la regola
attuale" > Aggiungi categoria alla regola":
Ricompare la finestra già vista prima. Questa volta scegliamo la
colonna '4_COD-DESC' e creiamo una nuova classifica. Viene così creato
l'elenco di tutti i valori presenti nel campo '4_COD-DESC'.
Diamo OK e vediamo comparire tale elenco sotto il simbolo della classe
'31 - Aree boscate'. In realtà la maggior parte delle sottoclassi
appena create non sono presenti tra le aree boscate e le possiamo
eliminare. In questo caso potremmo farlo subito perchè sono tutte
quelle sottoclassi che NON cominciano con 31, ma di solito per
riconoscere le sottoclassi assenti si clicca sul tasto "Conta gli elementi".
In tal modo compare a lato il conteggio di
tutti gli elementi del layer
che appartengono ad ogni classe simbolica. Ora selezioniamo tutte le
classi/sottoclassi con conteggio 0 e rimuoviamole cliccando sul tasto
con icona " - " (Rimuovi regole selezionate).
Ora ci restano le sottoclassi effettivamente presenti e possiamo andare a modificarle.
In questo caso diamo un verde scuro omogeneo ai boschi continui.
Per i boschi a densità bassa ci serve una cosa più complessa. Facciamo
doppio click sul simbolo della classe '3112 - Boschi di latifoglie a
densità bassa'.
Si apre la finestra "Modifica regola"
Consideriamo la sezione "Simbolo"; dobbiamo creare un simbolo composto
quindi clicchiamo sul + per aggiungere un secondo "Simple fill"
(riempimento semplice).
Selezioniamo il simbolo più basso e diamogli un "Colore di riempimento" verde chiaro.
Selezioniamo poi il simbolo più alto e cambiamo il "Tipo simbolo del
vettore" da "Simple fill" a "Point pattern fill" ovvero un riempimento
a schema di punti.
Compare un simbolo puntuale, incluso nel "Point pattern fill", costituito da: Simbolo ---Simple marker
Selezioniamo il "Simple marker" e cambiamo "Dimensione", "Colore
riempimento" e "Colore tratto" in modo da ottenere un pallino verde
scuro
poi duplichiamo tale pallino con l'apposito tasto.
All'inizio i due pallini ("Simple marker") si sovrappongono
perfettamente ma se nei parametri di uno dei due cambiamo un "Offset"
(spostamento), ad esempio la "x", vediamo sbucare anche il secondo
pallino.
Creaiamo un terzo pallino ulteriormente spostato coi parametri di "Offset" (spostamento) e con dimensione diversa.
Abbiamo ottenuto un simbolo composto da tre pallini semplici.
Ora selezioniamo "Point pattern fill": i parametri sottostanti ci
permettono di definire come verrà ripetuto il nostro simbolo composto.
Cambiamo opportunamente le distanze e gli spostamenti (orizzontali e
verticali) fino ad ottenere lo schema di riempimento che ci piace.
Questo sarà il simbolo della classe '3112 - Boschi di latifoglie a
densità bassa', ma lo utilizzeremo anche per la classe '3132 - Boschi misti a
densità bassa'.
Per non rifare tutta la procedura di creazione possiamo salvarlo in
modo da riutilizzarlo quando serve: selezioniamo "Riempimento" e
clicchiamo su "Salva simbolo" in basso.
Diamo un nume al simbolo (in questo caso 'Bosco rado') ed eventualmente
indichiamo una o più etichette o aggiungiamolo ai preferiti (cose che
ci aiutano a ritrovare più facilmente il simbolo), poi salviamo.
Il nostro simbolo compare così tra quelli già pronti. Possiamo chiudere
(click su OK) la finestra "Modifica regola" della classe simbolica
'3112 - Boschi di latifoglie a
densità bassa' e aprire quella della classe '3132 - Boschi misti a
densità bassa' (doppio click). Ora ci basta selezionare il simbolo appena creato per assegnarlo alla classe.
A questo punto dovremmo avere la seguente classificazione:
C'è ancora una cosa da fare: il primo simbolo, con indicato "(nessun
filtro)" nella colonna "Regola", è inutile e possiamo disabilitarlo.
Facciamo doppio click su di esso per aprire la sua finestra di
"Modifica regola" e togliamo la spunta al "Simbolo". In tal modo viene
disabilitalo il disegno del simbolo.
Questo è il risultato ottenuto:
Se vogliamo cambiare un simbolo possiamo fare doppio click su di esso
direttamente nel "Pannello layer" (non serve riaprire la finestra
"Proprietà vettore").
Ad esempio facciamo doppio click sul simbolo della classe '33 - ...' che rappresenta zone con vegetazione erbacea rada.
Nella sua finestra di "Modifica regola", sezione "simbolo", clicchiamo
sul simbolo di 'Bosco rado' precedentemente creato, poi cambiamo i
colori. Selezioniamo il "Simple fill" di sfondo a cui diamo un colore
grigio molto chiaro.
Poi selezioniamo il "Simbolo" del "Point pattern fill" e cambiamo il colore da verde scuro a verde chiaro.