Vettorializzare: da classi raster a poligoniIn questa pagina sono confrontati gli strumenti disponibili in QGIS per convertire i dati raster classificati in poligoni vettoriali. Tali strumenti si basano su GDAL (2.0.2), GRASS (6.4.3 e 7.0.4) e SAGA (2.1.2). Il confronto è stato fatto con QGIS 2.14.2-Essen e installazione mediante OSGeo4W. Per SAGA è stata provata anche la versione 2.2.7 con installazione stand-alone. GDALMenù: Raster > Conversione > Poligonalizzazione (da raster a vettore)... Strumenti di Processing: GDAL/OGR > [GDAL] Conversion > Vectorize raster layer Entrambi i modi (dal menù raster o dagli strumenti di processing) richiamano il comando gdal_polygonize (> http://www.gdal.org/gdal_polygonize.html); l'unica vera differenza è che con gli strumenti di processing si può salvare il risultato come file temporaneo. La finestra aperta dal menù raster contiene già l'opzione per una eventuale maschera che comunque può essere sempre indicata modificando la riga di comando con l'aggiunta dell'opzione -mask filename (valori pari a 0 sono considerati non validi, gli altri sono validi). Un'altra opzione che può essere utile è -b band per specificare la banda da vettorializzare in caso di raster multibanda. In genere vengono salvati nel contorno dei poligoni solo i nodi in cui c'è un cambio di direzione, tuttavia possono ritrovare nodi intermedi anche su alcuni segmenti diritti orizzontali. A volte tali nodi intermedi non sono presenti in entrambi i poligoni adiacenti. GRASSStrumenti di Processing: GRASS > Raster (r.*) > r.to.vect (> https://grass.osgeo.org/grass64/manuals/g.region.html) Strumenti di Processing: GRASS 7 > Raster (r.*) > r.to.vect (> https://grass.osgeo.org/grass70/manuals/g.region.html) ATTENZIONE: per vettorializzare aree ricordarsi di selezionare "Area" alla voce "Feature Type"! La cosa interessante del comando di GRASS è l'opzione "Smooth corners of area features" che invece di seguire i contorni dei pixel ne taglia gli angoli. PROBLEMI: Usando l'opzione "Smooth corners of area features" con GRASS 6.4 si ottengono poligoni con vertici duplicati, perfettamente sovrapposti; tale difetto non si presenta nella versione 7 di GRASS. Un altro problema si presenta quando il raster da vettorializare ha risoluzioni orizzontale e verticale diverse: GRASS definisce la propria regione di lavoro con risoluzione uguale per entrambe le direzioni e che coincide con la risoluzione orizzontale del raster, per cui si crea uno sfasamento verticale dei contorni vettoriali rispetto al raster di partenza. Con GRASS 7 il problema dello sfasamento può verificarsi anche se le risoluzioni x e y coincidono. Questo perché nel definire la regione di lavoro (g.region) viene usata l'opzione "-a" che allinea la regione alla risoluzione invece che ai limiti (> https://grass.osgeo.org/grass70/manuals/g.region.html) ovvero i limiti della regione (e di conseguenza la base raster da vettorializzare) vengono spostati per ottenere valori multipli della risoluzione. Il problema dello sfasamento, essendo dovuto alla definizione approssimata della regione di lavoro, si verifica usando GRASS attraverso gli strumenti di processing. Se usiamo l'apposito plugin di GRASS che richiede la definizione di mapset e location possiamo personalizzare limiti e risoluzione della regione impostando valori corretti ed evitando così il problema. SAGAStrumeni di Processing: SAGA (2.1.2) > Shapes - Grid > Vectorising grid classes la finestra di questo strumento propone le seguenti opzioni Class Selection: [0] one single class specified by class identifier (in tal caso vengono vettorializzate solo le aree con il valore indicato nella riga "Class Identifier") [1] all classes (per vettorializzare tutte le aree) Vectorised class as: [0] one single (multi-)polygon object (le aree di una stessa classe vanno a costituire un poligono multiparte) [1] each island as separate polygon (aree separate diventano poligoni separati anche se appartengono alla stessa classe) L'installazione stand-alone (attualmente, maggio 2016, è alla versione 2.2.7) propone l'opzione "Keep Vertices on Straight Lines" che salva i punti intermedi sul segmenti diritti (altrimenti sono salvati solo il primo e l'ultimo vertice); tale opzione può essere utile se poi si vuole smussare la geometria. Nella tabella degli attributi associati alle geometrie vettoriali risultanti, oltre al campo con i valori del raster, vengono creati anche due campi, uno numerico (ID) e uno di testo (NAME), con la numerazione ordinata delle classi trovate, che partono rispettivamente da 0 e d 1. PROBLEMI SAGA lavora su dati raster con la stessa risoluzione orizzontale e verticale. Se il raster ha risoluzioni diverse esso viene ricampionato usando la risoluzione più dettagliata per entrambe le orientazioni; in tal modo i poligoni vettorializzati potrebbero non coincidere con le aree del raster di partenza. Nella versione stand-alone, importando con drag-and-drop nella finestra di SAGA un raster classificato con le risoluzioni x e y non coincidenti, il programma potrebbe eseguire un ricampionamento con un metodo che altera i valori presso i confini delle aree. Per evitare che questo accada è meglio importare il raster usando il comando "Geoprocessin > File > Grid > Import > Import Raster" impostando l'opzione Resampling a Nearest Neighbour. Nella versione 2.2.7 (installazione stand-alone) con l'opzione "Keep Vertices on Straight Lines" ogni poligono ha il primo nodo duplicato.
Sintesi del confronto
|
Applicazione comando versione |
GDAL poligonize 2.0.2 |
GRASS
6 r.to.vect 6.4.3 |
GRASS 7 r.to.vect 7.0.4 |
SAGA vectorising grid classes 2.1.2 |
SAGA vectorising 2.2.7 stand-alone |
Esempi |
smooth corners: |
smooth corners: |
keep vertices: |
||
Pregi |
Ok anche con risoluzioni x e y diverse. |
Opzione "Smooth corners". |
Opzione "Smooth corners". | Numerazione ordinata delle classi. | Numerazione ordinata delle classi. |
Difetti |
Punti intermedi casuali sui segmenti orizzontali. |
Sfasamento se le risoluzioni x e y sono diverse. L'opzione "Smooth corners" produce tutti i nodi duplicati. |
Sfasamento se le risoluzioni x e y sono diverse. Sfasamento per riallineamento. |
Sfasamento se le risoluzioni x e y sono diverse. Sfasamento per riallineamento. |
Sfasamento se le risoluzioni x e y sono diverse. L'opzione "Keep vertices" produce primi nodi duplicati. |
Strumenti |
- poligonize di GDAL |
- r.to.vect di GRASS |
- vectorising di SAGA |
- Sintesi del confronto |
Argomenti correlati |
> QGIS |
> GDAL |
> GRASS |
> SAGA |