Ciao a tutti. Potrebbe accadervi di avere un dato di tipo vettoriale, ma voi ci volete fare sopra delle analisi di map algebra e quindi volete trasformare tutto in raster. Vi serve quindi trasformare il vostro dato vettoriale in un dato raster. Oggi vediamo proprio questo: come convertire un dato vettoriale, le nostre feature, in raster.
1. Convertire in raster un vettore con una sola classe
Ci sarebbe da fare una premessa teorica alle conversioni da formato vettoriale a formato raster e viceversa, ma noi partiamo dal presupposto che voi sappiate già bene la differenza e quando usare l’uno piuttosto che l’altro. Ovviamente se non è così scrivetelo pure nei commenti e saremo ben contenti di fare un post sulla differenza tra vettore e raster e i fondamentali da sapere per non fare errori nelle conversioni.
Partiamo quindi da come fare a convertire un dato in formato vettoriale in un dato in formato raster, quando nel vettore che vogliamo convertire c’è una sola classe da rappresentare.
Ad esempio abbiamo qui lo shapefile dei boschi del Comune di Matera, preso dal geoportale della Regione Basilicata. Abbiamo quindi un’unica classe da convertire, la classe “bosco”.
Visto che possiamo avere le nostre buone ragioni per trasformarlo in raster, andiamo nel menu Raster (1), poi in Conversione (2) ed infine in Rasterizza (da vettore a raster) (3). Come al solito la tool che useremo si può aprire anche dal pannello degli strumenti di geoprocessing, dal gruppo degli strumenti di GDAL (4) in Conversione vettore (5).
Settiamo i parametri della tool:
- Vettore in ingresso è il nostro layer vettoriale da convertire in raster.
- Campo da usare per un valore di masterizzazione. Questo campo è opzionale. In questo esempio, in cui abbiamo una sola classe, non lo useremo e lo lasceremo vuoto. Lo useremo invece nel prossimo esempio.
- Valore fissato da masterizzare. I dati raster non memorizzano dati di tipo stringa, ma solo di tipo numerico. Qui potete, quindi, decidere, quale valore numerico associare alle aree caratterizzate da bosco. Noi scegliamo il 10.
- Unità di misura del raster in uscita, Larghezza/Risoluzione orizzontale e Altezza/Risoluzione verticale. Inseriamo i valori di larghezza e Altezza ponendoli pari a 10, e poi spieghiamo il significato di questi 3 elementi.
- Se in Unità di misura del raster in uscita scelgo pixel, otterrò un raster alto un numero di pixel uguale a quelli impostati in Larghezza e Altezza. Nel nostro caso sarebbe un raster 10 pixel per 10 pixel.
- Se invece in Unità di misura del raster in uscita scelgo Unità georeferenziate, il pixel del raster in uscita avrà altezza e larghezza pari al valore qui inserito e unità di misura del mio Sistema di Riferimento. Nel nostro esempio sceglieremo questa opzione. Quindi, poiché stiamo lavorando in coordinate piane, espresse in metri otterremo un raster di output con un pixel di base alto 10m e largo 10m
- Estensione risultato. Qui dobbiamo scegliere quale sarà l’extent del nostro raster di output. Abbiamo 3 opzioni: Calcola da layer, Usa l’estensione della mappa, Disegna nell’area di mappa a seconda che vogliamo che il nostro raster di output sia esteso quanto un layer specificato, quanto la mappa che vedo nel canvas, quanto un’area che andrò a specificare disegnandola a schermo. Per il nostro esempio vogliamo che il raster di output sia esteso quanto il layer di input
- Attribuisci un determinato valore nullo alle bande in uscita. Anche questo campo è opzionale. Qui va inserito il valore da dare al NoData di questo raster. Di default è posto uguale a 0, ma sarà trattato a tutti gli effetti come un NoData.
Diamo infine un nome al raster di output. Noi lo chiamiamo boscoRaster.
Clicchiamo su Esegui e guardiamo il risultato. Ingrandiamo un po’ e vedete, si vede la scalettatura tipica dei raster. Se volete un risultato più raffinato e meno “scalettato” basterà aumentare la risoluzione, ma un po’ questo effetto rimarrà, perché è caratteristica tipica del formato raster.
2. Convertire raster un vettore con due o più classi
Vediamo adesso invece il caso in cui vogliamo convertire un vettore in cui ci sia più di una classe, quindi almeno due.
Noi abbiamo un uso parziale del suolo in cui abbiamo evidenziato due macroclassi principali. Le aree con il codice 1 sono quelle in cui sono presenti boschi, le aree con il codice 2 sono quelle caratterizzate da coltivazioni. C’era la possibilità di fare una classificazione più raffinata evidenziando le diverse colture o i diversi alberi, ma ai nostri scopi sono sufficienti queste due classi.
La differenza principale tra questo esempio e quello precedente è proprio questa: adesso dobbiamo necessariamente avere un campo della tabella attributi con un codice che individui le diverse classi presenti nello shapefile. Questo codice verrà usato da QGIS come elenco di valori da inserire nel raster che stiamo andando a creare. Vediamo come. Riapriamo la tool di conversione da vettore a raster ed impostiamo i parametri:
- Vettore in ingresso è il layer UsoSuolo.
- Campo da usare per un valore di masterizzazione. Ecco qua. Questo è il momento di indicare a QGIS che deve prendere il valore da associare a ciascuna classe dal campo che gli indicheremo. Nel nostro caso si chiama cod.
- Valore fissato da masterizzare. Se nell’esempio precedente era il campo da usare per un valore di masterizzazione a rimanere vuoto, questa volta è invece la casella valore fissato da masterizzare a rimanere vuoto, perché abbiamo già detto a QGIS che i valori da associare al raster sono quelli contenuti nel campo cod. Non dobbiamo dirgli altro. Quindi questi due parametri sono di uso complementare.
- Unità di misura del raster, Larghezza e Altezza. Come prima scegliamo Unità georeferenziate ed impostiamo una risoluzione di 10m per 10m.
- Estensione risultato. Impostiamo l’extent di output uguale a quella dello shape UsoSuolo
- Attribuisci un determinato valore nullo alle bande in uscita. A differenza dell’esempio precedente, è interessante sapere che se invece di inserire un valore in questo elemento lo lasciamo vuoto, la porzione di raster dell’extent non occupata da poligoni, verrà riempita dallo 0. Ma questa volta lo zero non avrà valore di Nodata, ma di 0. Quindi avremo un raster tutto pieno e classificato come 0/Nessun uso, 1/Bosco, 2/Agricolo. Di conseguenza, per questo ed altri motivi, quando decidete una codifica numerica per i vostri layer, vi sconsigliamo di usare lo 0. Quindi, cancelliamo tutto in questo spazio. Comparirà la scritta “Non impostato”.
Diamo anche questa volta un nome al raster di output. Noi lo chiamiamo usoRaster. Clicchiamo su Esegui. Et voila, anche questa conversione è stata effettuata con successo. Il nostro raster di output contiene 3 valori: lo zero per le aree in cui non è stato definito un uso del suolo, l’1 per i boschi e il 3 per l’agricolo. Non vi rimane che appuntarvi la vostra codifica per non dimenticarla.
Bene, questo post è finito. Se ti è piaciuto condividilo! Se hai dubbi o suggerimenti lascia pure un commento.
Se vuoi, puoi vedere anche il nostro video su YouTube “Convertire vettori in raster” e iscriverti al nostro canale.
Ci GISsiamo al prossimo post.
Ciaooo
Ciao,
sto provando a rasterizzare uno shape di uso del suolo: non so perchè ma nel menu a tendina del campo da masterizzare non mi fa scegliere quelli con i codici identificativi dell’uso del suolo.
Ho provato anche a duplicare la colonna e chiamarla con un altro nome, ma lo stesso, non me la fa selezionare.
Sapete come risolvere?
Grazie
Ciao Antonio, scusa se ti rispondiamo così in ritardo! Probabilmente avrai già trovato la soluzione da solo. In caso non fosse così, QGIS non accetta campi di testo in quella selezione, come probabilmente è il tuo campo contenente i codici. Quindi ti conviene creare un codice numerico da associare alle classi di uso del suolo e riprovare. Grazie per esser passato di qua!
Risolto con il vostro consiglio. Grazie!
Bene, ne siamo contenti 🙂
Ciao, grazie per il tutorial, davvero utile 🙂
sono riuscita a rasterizzare lo shape uso del suolo, ma alcuni elementi del vettore non me li ritrovo nel nuovo raster. Sapete come possa risolvere?
grazie in anticipo 🙂
Potrebbe dipendere da tante cose. Ad esempio, avevi fatto una selezione? Oppure, la dimensione di cella è più grande di questi elementi andati persi? Nel frattempo pensiamo se ci viene in mente altro