alsperGIS
DATI
SOFTWARE

SOFTWARE >> QGIS 3

Esempio di stile 7

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.


Questo è il risultato:






Gennaio 2018
Alessandro Perego