23. Integrazione con GRASS GIS

L’integrazione di GRASS fornisce l’accesso ai database e alle funzionalità di GRASS GIS (vedi GRASS-PROJECT in Letteratura e riferimenti web). L’integrazione consiste di due parti: sorgente e plugin. Il sorgente consente di sfogliare, gestire e visualizzare i layer raster e vettoriali GRASS. Il plugin può essere utilizzato per creare nuove posizioni e gruppi di GRASS, modificare la regione di GRASS, creare e modificare i livelli vettoriali e analizzare i dati GRASS 2D e 3D con più di 400 moduli GRASS. In questa sezione, introdurremo le funzionalità del sorgente e del plug-in e forniremo alcuni esempi di gestione e utilizzo dei dati GRASS.

ll sorgente supporta GRASS versione 6 e 7, il plugin supporta GRASS 6 e 7 (a partire da QGIS 2.12). La distribuzione QGIS può contenere sorgente/plugin per GRASS 6, GRASS 7 o per entrambe le versioni contemporaneamente (i file binari hanno nomi dei file diversi). Tuttavia, solo una versione del sorgente/plugin può essere caricata durante l’esecuzione.

23.1. Demo insieme di dati

Come esempio, useremo l’insieme dei dati QGIS Alaska (vedi la sezione Installare dati campione). Esso include un piccolo campione di GRASS LOCATION con tre layer vettoriali e una mappa di elevazione raster. Crea una nuova cartella chiamata grassdata, scarica l’insieme dei dati QGIS “Alaska” qgis_sampledata.zip da https://qgis.org/downloads/data/ e decomprimi il file in grassdata.

Altri esempi di GRASS LOCATIONs sono disponibili sul sito web di GRASS all’indirizzo https://grass.osgeo.org/download/sample-data/.

23.2. Caricare layer raster e vettoriali GRASS

Se il provider è caricato in QGIS, l’elemento location con l’icona GRASS grassLogo viene aggiunto nell’albero del browser sotto ogni elemento della cartella che contiene la localizzazione GRASS. Vai alla cartella grassdata ed espandi la location alaska e il mapset demo.

Puoi caricare raster e vettori GRASS come qualsiasi altro layer dal browser facendo doppio clic sul layer o trascinando e rilasciando sulla mappa o sulla legenda.

Suggerimento

Caricare dati GRASS

Se non vedi la location GRASS, verifica in Guida ► Informazioni ► Sorgente dati se il sorgente dei vettori GRASS è caricato.

23.3. Importare dati in una LOCATION GRASS tramite trascina e rilascia.

Questa sezione dà un esempio di come importare dati raster e vettoriali in un mapset di GRASS.

  1. Nel browser QGIS accedi al mapset in cui desideri importare i dati.

  2. Nel browser QGIS trova un layer che vuoi importare in GRASS, nota che puoi aprire un’altra finestra del browser (Browser Panel (2)) se i dati sorgente sono troppo lontani dal mapset nell’albero.

  3. Trascina un layer e rilascialo sul mapset di destinazione. L’importazione potrebbe richiedere del tempo per i layer più grandi, vedrai un icona animata import di fronte al nuovo oggetto del layer fino al termine dell’importazione.

Quando i raster sono in SR diversi, possono essere riproiettati utilizzando un Approximate (veloce) o Exact (esatta). Se viene creato un collegamento al raster sorgente (utilizzando `` r.external``), i dati di origine sono nello stesso SR e il formato è noto a GDAL, verranno utilizzati i dati di origine SR. Puoi impostare queste opzioni nella scheda Browser in Opzioni di GRASS.

Se un raster ha più bande, per ogni layer viene creata una nuova mappa GRASS per ogni raster con suffisso .<band number> e viene creato un gruppo per tutte le mappecon icona rasterGroup. I raster esterni hanno un’icona diversa rasterLink.

23.4. Gestione dei dati GRASS in QGIS Browser

  • Copia delle mappe: le mappe GRASS possono essere copiate tra i mapset all’interno della stessa location mediante trascinamento della selezione.

  • Eliminazione delle mappe: fai clic con il tasto destro su una mappa GRASS e seleziona Elimina dal menu contestuale.

  • Rinominare le mappe: fare clic con il tasto destro su una mappa GRASS e seleziona Rinomina dal menu contestuale.

23.5. Opzioni di GRASS

Le opzioni GRASS possono essere impostate nella finestra di dialogo Opzioni di GRASS, che può essere aperta facendo clic con il pulsante destro del mouse sulla posizione o sull’elemento mapset nel browser e quindi scegliendo Opzioni di GRASS.

23.6. Avviare il plugin GRASS

Per usare le funzionalità di GRASS in QGIS, devi selezionare e caricare il plugin GRASS usando il Plugin Manager. Per farlo, vai al menu Plugins ► showPluginManager Gestisci e Installa Plugin…, seleziona checkbox GRASS e clicca OK.

Le seguenti funzioni principali sono fornite con il menu GRASS (Plugins -> GRASS) quando si avvia il plugin GRASS:

  • grassOpenMapset Apri mapset

  • grassNewMapset Nuovo mapset

  • grassCloseMapset Chiudi mapset

  • grassTools Apri strumenti GRASS

  • grassRegion Visualizza la regione di GRASS attuale

  • general Opzioni di GRASS

23.7. Aprire un mapset GRASS

Per accedere a strumenti GRASS devi aprire un mapset di GRASS nel plugin (gli strumenti sono disabilitati se nessun mapset è aperto). Puoi aprire un mapset dal browser: fai clic con il pulsante destro del mouse sull’elemento mapset e quindi scegli Apri mapset dal menu contestuale.

23.8. LOCATION e MAPSET in GRASS

I dati GRASS sono memorizzati in una cartella indicata come GISDBASE. Questa cartella, spesso chiamata grassdata, deve essere creata prima di iniziare a lavorare con il plugin GRASS in QGIS. All’interno di questa cartella, i dati GIS GRASS sono organizzati per progetti memorizzati in sottocartelle chiamate LOCATION. Ogni LOCATION è definito dal suo sistema di coordinate, dalla proiezione e dai confini geografici. Ciascun LOCATION può avere diversi MAPSET (sottocartella di LOCATION) che vengono utilizzati per suddividere il progetto in diversi argomenti o sottoregioni o come aree di lavoro per i singoli membri del team (vedi Neteler & Mitasova 2008 in Letteratura e riferimenti web). Per analizzare i vettori e i raster con i moduli GRASS, devi generalmente importarli in una LOCATION GRASS. (Questo non è sempre vero - con i moduli GRASS r.external e v.external è possibile creare collegamenti di sola lettura a insieme di dati esterni supportati da GDAL/OGR senza importarli. Questo non è un modo per chi inizia a lavorare con GRASS, quindi questa funzionalità non sarà descritta qui.)

../../../_images/grass_location.png

Fig. 23.1 Dati di GRASS all’interno della LOCATION Alaska

23.9. Importare dati nelle LOCATION GRASS

Vedi la sezione Importare dati in una LOCATION GRASS tramite trascina e rilascia. per scoprire come i dati possono essere facilmente importati trascinandoli nel browser.

Questa sezione fornisce un esempio di come importare dati raster e vettoriali in GRASS “alaska” LOCATION fornito dall’insieme dei dati QGIS “Alaska” in modo tradizionale, usando moduli GRASS standard. Pertanto, usiamo la mappa raster landcover landcover.img e il file GML vettoriale lakes.gml dall’insieme dei dati QGIS “Alaska” (vedi Installare dati campione).

  1. Avvia QGIS e assicurati che il plugin GRASS sia caricato

  2. Nella barra degli strumenti di GRASS, fai clic sull’icona grassOpenMapset Apri mapset per aprire la procedura guidata MAPSET.

  3. Seleziona come database GRASS la cartella grassdata nell’insieme dei dati QGIS Alaska, come LOCATION “alaska”, come MAPSET “demo” e clicca OK.

  4. Ora clicca sull’icona grassTools Apri strumenti GRASS. Appare la finestra di dialogo GRASS Toolbox (vedi sezione Il Toolbox GRASS).

  5. Per importare la mappa raster landcover.img, fai clic sul modulo r.in.gdal nella scheda Modules Tree. Questo modulo di GRASS permette di importare file raster supportati da GDAL in un LOCATION di GRASS. Appare la finestra di dialogo del modulo per r.in.gdal.

  6. Scorri la cartella raster nell’insieme di dati “Alaska” di QGIS e seleziona il file landcover.img.

  7. Come nome raster in uscita, definisci landcover_grass e clicca su Run. Nella scheda Output, vedrai il comando GRASS attualmente in esecuzione r.in.gdal -o input=/path/to/landcover.img output=landcover_grass.

  8. Quando dice Terminato con successo, clicca su Visualizza risultato. Il layer raster landcover_grass è ora importato in GRASS e sarà visualizzato nell’area mappa di QGIS.

  9. Per importare il file vettoriale GML lakes.gml, fai clic sul modulo v.in.ogr nella scheda Modules Tree. Questo modulo di GRASS permette di importare file vettoriali supportati dall’OGR in un LOCATION di GRASS. Appare la finestra di dialogo del modulo per v.in.ogr.

  10. Scorri la cartella gml nell’insieme di dati “Alaska” di QGIS e selezionare il file lakes.gml come file OGR.

  11. Come nome vettoriale in uscita, definisci lakes_grass e clicca su Run. Non devi preoccuparti delle altre opzioni in questo esempio. Nella scheda Output vedrai il comando GRASS attualmente in esecuzione v.in.ogr -o dsn=/path/to/lakes.gml output=lakes\_grass.

  12. Quando dice Terminato con successo, clicca su Visualizza risultato. Il layer vettoriale landcover_grass è ora importato in GRASS e sarà visualizzato nell’area mappa di QGIS.

23.9.1. Creare una nuova LOCATION GRASS

Come esempio, ecco l’esempio di GRASS LOCATION alaska, che è proiettato nella proiezione Albers Equal Area usando i piedi come unità. Questo esempio di GRASS LOCATION alaska sarà usato per tutti gli esempi ed esercizi nelle seguenti sezioni relative a GRASS. È utile scaricare e installare l’insieme dei dati sul tuo computer (vedi Installare dati campione).

  1. Avvia QGIS e assicurati che il plugin GRASS sia caricato

  2. Visualizza lo shapefile alaska.shp (vedi sezione Caricare un layer da un file) dall’insieme dei dati QGIS Alaska (vedi Installare dati campione).

  3. Nella barra degli strumenti di GRASS, clicca sull’icona grassNewMapset Nuovo mapset per aprire la procedura guidata MAPSET.

  4. Seleziona una cartella esistente del database di GRASS (GISDBASE) grassdata, o creane una per il nuovo LOCATION usando un file manager sul tuo computer. Poi clicca su Avanti.

  5. Possiamo usare questa procedura guidata per creare un nuovo MAPSET all’interno di una LOCATION esistente (vedi la sezione Aggiungere un nuovo MAPSET) o per creare una nuova LOCATION. Seleziona radioButtonOn Crea nuova location (vedi Fig. 23.2).

  6. Inserisci un nome per LOCATION – noi abbiamo usato “alaska” – e clicca su Avanti.

  7. Definisci la proiezione cliccando sul pulsante radio radioButtonOn Proiezione per attivare la lista delle proiezioni.

  8. Stiamo usando la proiezione Albers Equal Area Alaska (piedi). Poiché sappiamo che è rappresentata dall’ID EPSG 2964, lo inseriamo nella casella di ricerca. (Nota: Se vuoi ripetere questo processo per un’altra LOCATION e proiezione e non hai memorizzato l’ID EPSG, clicca sull’icona projectionEnabled SR Status nell’angolo in basso a destra della barra di stato (vedi sezione Lavorare con le proiezioni)).

  9. In Filtro, inserisci 2964 per selezionare la proiezione.

  10. Fai clic su Avanti.

  11. Per definire la region di default, dobbiamo inserire i limiti LOCATION nelle direzioni nord, sud, est e ovest. Qui, clicchiamo semplicemente sul pulsante Set Current QGIS Extent, per applicare l’estensione del layer caricato alaska.shp come estensione della region predefinita di GRASS.

  12. Fai clic su Avanti.

  13. Dobbiamo anche definire un MAPSET all’interno della nostra nuova LOCATION (questo è necessario quando si crea una nuova LOCATION). Puoi chiamarlo come vuoi - noi abbiamo usato “demo”. GRASS crea automaticamente uno speciale MAPSET chiamato PERMANENT, progettato per memorizzare i dati principali del progetto, la sua estensione spaziale predefinita e le definizioni del sistema di coordinate (vedi Neteler & Mitasova 2008 in Letteratura e riferimenti web).

  14. Verifica il sommario per assicurarti che sia corretto e clicca su Finish.

  15. Il nuovo LOCATION, “alaska”, e due MAPSETs, “demo” e “PERMANENT”, sono creati. L’ambiente di lavoro attualmente aperto è “demo”, come definito.

  16. Nota che alcuni strumenti della barra di GRASS precedentemente disabilitati sono ora attivi.

../../../_images/create_grass_location.png

Fig. 23.2 Creare una nuova GRASS LOCATION o un nuovo MAPSET in QGIS

Se questo sembra un sacco di passaggi, in realtà non è poi così male ed è un modo molto veloce per creare un LOCATION. Il LOCATION “alaska” è ora pronto per l’importazione dei dati (vedi la sezione Importare dati nelle LOCATION GRASS). Puoi anche usare i dati vettoriali e raster già esistenti nell’esempio GRASS LOCATION “alaska”, incluso nel dataset QGIS “Alaska” Installare dati campione, e passare alla sezione Il modello dati vettoriale di GRASS.

23.9.2. Aggiungere un nuovo MAPSET

Un utente ha accesso in scrittura solo a un MAPSET di GRASS che ha creato. Questo significa che oltre all’accesso al proprio MAPSET, puoi leggere le mappe nei MAPSET di altri utenti (e loro possono leggere i tuoi), ma puoi modificare o rimuovere solo le mappe nel tuo MAPSET.

Tutti i MAPSET includono un file WIND che memorizza i valori correnti delle coordinate dei confini e la risoluzione raster attualmente selezionata (vedi Neteler & Mitasova 2008 in Letteratura e riferimenti web, e la sezione Lo strumento Regione di GRASS).

  1. Avvia QGIS e assicurati che il plugin GRASS sia caricato

  2. Nella barra degli strumenti di GRASS, clicca sull’icona grassNewMapset Nuovo mapset per aprire la procedura guidata MAPSET.

  3. Seleziona la cartella del database di GRASS (GISDBASE) grassdata con la LOCATION “alaska”, dove vogliamo aggiungere un ulteriore MAPSET chiamato “test”.

  4. Fai clic su Avanti.

  5. Possiamo usare questa procedura guidata per creare un nuovo MAPSET all’interno di un LOCATION esistente o per creare un nuovo LOCATION. Clicca sul pulsante radio radioButtonOn Select location (vedi Fig. 23.2) e clicca su Next.

  6. Inserisci il nome test per il nuovo MAPSET. Di seguito, nella procedura guidata, vedrai un elenco di MAPSET esistenti e i relativi proprietari.

  7. Fai clic su Next, controlla il sommario per assicurarti che sia tutto corretto e fai clic su Finish.

23.10. Il modello dati vettoriale di GRASS

È importante capire il GRASS vector data model prima di digitalizzare. In generale, GRASS usa un modello vettoriale topologico. Ciò significa che le aree non sono rappresentate come poligoni chiusi, ma da uno o più confini. Un confine tra due aree adiacenti viene digitalizzato solo una volta, ed è condiviso da entrambe le aree. I confini devono essere collegati e chiusi senza spazi vuoti. Un’area è identificata (ed etichettata) dal centroide dell’area.

Oltre ai confini e ai centroidi, una mappa vettoriale può contenere anche punti e linee. Tutti questi elementi geometrici possono essere mescolati in un vettore e saranno rappresentati in diversi cosiddetti strati all’interno di una mappa vettoriale di GRASS. Quindi in GRASS, un layer non è una mappa vettoriale o raster ma un strato all’interno di un layer vettoriale. Questo è importante da distinguere attentamente. (Anche se è possibile mescolare elementi geometrici, è insolito e, anche in GRASS, è usato solo in casi speciali come l’analisi di una rete vettoriale. Normalmente, dovresti preferire l’archiviazione di elementi di geometria diversi in livelli diversi).

È possibile memorizzare diversi «strati» in un set di dati vettoriali. Per esempio, campi, foreste e laghi possono essere memorizzati in un vettore. Una foresta e un lago adiacenti possono condividere lo stesso confine, ma hanno tabelle di attributi separate. È anche possibile allegare attributi ai confini. Un esempio potrebbe essere il caso in cui il confine tra un lago e una foresta è una strada, quindi può avere una tabella di attributi diversa.

Il “layer” dell’elemento è definito dal “layer” all’interno di GRASS. “Layer” è il numero che definisce se c’è più di un layer all’interno del dataset (per esempio, se la geometria è foresta o lago). Per ora, può essere solo un numero. In futuro, GRASS supporterà anche i nomi come campi nell’interfaccia utente.

Gli attributi possono essere memorizzati all’interno di GRASS LOCATION come dBase, SQLite3 o in tabelle di database esterni, per esempio PostgreSQL, MySQL, Oracle, ecc.

Gli attributi contenuti nelle tabelle del database sono collegati alla geometria per il tramite di un valore ’category’.

’Category’ (key, ID) è un valore intero collegato alle primitive geometriche ed è usato come collegamento ad una colonna chiave nella tabella del database.

Suggerimento

Conoscere il modello dati vettoriale di GRASS

Il modo migliore per imparare il modello vettoriale di GRASS e le sue funzionalità è quello di scaricare uno dei molti tutorial di GRASS dove il modello vettoriale è descritto più a fondo. Vedi https://grass.osgeo.org/documentation/manuals/ per ulteriori informazioni, libri e tutorial in diverse lingue.

23.11. Creare un nuovo layer vettoriale GRASS

Per creare un nuovo layer vettoriale GRASS, seleziona una delle seguenti voci dal menu contestuale di mapset nel browser:

  • Nuovo Layer Puntuale

  • Nuovo Layer Lineare

  • Nuovo Layer Poligonale

e inserisci un nome nella finestra di dialogo. Verrà creata una nuova mappa vettoriale e il layer verrà aggiunto all’area di disegno e inizierà l’editing. La selezione del tipo di layer non limita i tipi di geometria che possono essere digitalizzati nella mappa vettoriale. In GRASS, è possibile organizzare tutti i tipi di geometria (punto, linea e poligono) in una mappa vettoriale. Il tipo è usato solo per aggiungere il layer all’area di visualizzazione mappa, perché QGIS richiede che un layer abbia un tipo specifico.

È anche possibile aggiungere layer alle mappe vettoriali esistenti selezionando uno degli elementi descritti sopra dal menu contestuale della mappa vettoriale esistente.

In GRASS, è possibile organizzare tutti i tipi di geometria (punto, linea e area) in un singolo layer, perché GRASS usa un modello vettoriale topologico, quindi non è necessario selezionare il tipo di geometria quando si crea un nuovo vettore GRASS. Questo è diverso dalla creazione di shapefile con QGIS, perché gli shapefile usano il modello vettoriale Simple Feature (vedi la sezione Creare nuovi layer Vettore).

23.12. Digitalizzare e modificare layer vettoriali GRASS

I layer vettoriali di GRASS possono essere digitalizzati usando gli strumenti di digitalizzazione standard di QGIS. Ci sono tuttavia alcune particolarità, che dovresti sapere, dovute a

  • Modello topologico di GRASS in confronto a simple feature di QGIS

  • complessità del modello GRASS

    • layer multipli in mappe separate

    • tipologie di geometria multipla in una singola mappa

    • condivisione della geometria multipla da layer differenti

Le particolarità sono discusse nelle sezioni seguenti.

Salvare, scartare le modifiche, annullare, rifare

Avvertimento

Tutte le modifiche fatte durante l’editing sono immediatamente scritte nella mappa vettoriale e nelle relative tabelle degli attributi.

Le modifiche vengono scritte dopo ogni operazione, è comunque possibile fare undo/redo o scartare tutte le modifiche quando si chiude la modifica. Se viene utilizzato l’annullamento o l’eliminazione delle modifiche, lo stato originale viene riscritto nella mappa vettoriale e nelle tabelle degli attributi.

Ci sono due ragioni principali per questo comportamento:

  • È la natura dei vettori di GRASS che vengono dalla convinzione che l’utente vuole continuare a fare quello che sta facendo ed è meglio avere i dati salvati quando il lavoro è improvvisamente interrotto (per esempio, un blackout)

  • Una necessità per l’editing efficace dei dati topologici è l’informazione visualizzata sulla correttezza topologica, tale informazione può essere acquisita dalla mappa vettoriale di GRASS solo se le modifiche sono scritte sulla mappa.

Barra degli strumenti di digitalizzazione

La “Digitizing Toolbar” ha alcuni strumenti specifici quando un layer di GRASS viene modificato:

Icon

Tool

Purpose

capturePoint

New Point

Digitalizzare un nuovo punto

captureLine

Nuova Linea

Digitalizzare una nuova linea

captureBoundary

Nuovo contorno

Digitalizzare un nuovo confine

captureCentroid

Nuovo centroide

Digitalizza un nuovo centroide (imposta l’etichetta per un’area esistente)

capturePolygon

Nuovo confine chiuso

Digitalizzare un nuovo confine chiuso

Tabella GRASS Digitizing: Strumenti di digitalizzazione GRASS

Suggerimento

Digitalizzare poligoni in GRASS

Se vuoi creare un poligono in GRASS, devi prima digitalizzare il confine del poligono. Poi aggiungi un centroide (punto di etichetta) nel confine chiuso. La ragione di ciò è che un modello vettoriale topologico collega le informazioni degli attributi di un poligono sempre al centroide e non al confine.

Categoria

La categoria, spesso chiamata cat, è una specie di ID. Il nome deriva dai tempi in cui i vettori di GRASS avevano solo un singolo attributo «categoria». La categoria è usata come collegamento tra la geometria e gli attributi. Una singola geometria può avere più categorie e quindi rappresentare più elementi in diversi strati. Attualmente è possibile assegnare solo una categoria per strato usando gli strumenti di editing di QGIS. Ai nuovi elementi viene automaticamente assegnata una nuova categoria univoca, eccetto i confini. I confini di solito formano solo aree e non rappresentano elementi lineari, è comunque possibile definire gli attributi per un confine in seguito, per esempio in un diverso strato.

Le nuove categorie sono sempre create solo nel layer in corso di modifica.

Non è possibile assegnare più categorie alla geometria usando l’editing di QGIS, tali dati sono correttamente rappresentati come elementi multipli, e i singoli elementi, anche da strati diversi, possono essere cancellati.

Attributi

Gli attributi del layer attualmente modificato possono essere modificati. Se la mappa vettoriale contiene più layer, gli elementi degli altri layer avranno tutti gli attributi impostati a “<not editable (layer #)>” per avvertire che tale attributo non è modificabile. La ragione è che gli altri layer possono avere e di solito hanno diversi set di campi mentre QGIS supporta solo un set fisso di campi per layer.

Se una primitiva geometrica non ha una categoria assegnata, una nuova categoria univoca viene assegnata automaticamente e viene creato un nuovo record nella tabella degli attributi quando un attributo di quella geometria viene modificato.

Suggerimento

Se vuoi fare un aggiornamento in blocco degli attributi nella tabella, per esempio usando “Field Calculator” (Usare il Calcolatore di campo), e ci sono elementi senza categoria che non vuoi aggiornare (tipicamente i confini), puoi filtrarli impostando “Advanced Filter” su cat is not null.

Stile di editing

La simbologia topologica è essenziale per una modifica efficace dei dati topologici. Quando inizia la modifica, un visualizzatore specializzato “GRASS Edit” viene impostato automaticamente sul layer e il visualizzatore originale viene ripristinato quando la modifica viene chiusa. Lo stile può essere personalizzato nella scheda “Style” delle proprietà del layer. Lo stile può anche essere memorizzato nel file di progetto o in un file separato come qualsiasi altro stile. Se personalizzi lo stile, non cambiare il suo nome, perché è usato per ripristinare lo stile quando la modifica è ricominciata.

Suggerimento

Non salvare il file di progetto quando il layer viene modificato, il layer verrebbe memorizzato con “Edit Style” che non ha significato se il layer non viene modificato.

Lo stile è basato su informazioni topologiche che sono temporaneamente aggiunte alla tabella degli attributi come campo “topo_symbol”. Il campo viene automaticamente rimosso quando la modifica viene chiusa.

Suggerimento

Non rimuovere il campo “topo_symbol” dalla tabella degli attributi, questo renderebbe gli elementi invisibili perché il visualizzatore è basato su quella colonna.

Aggancio

Per formare un’area, i vertici dei confini collegati devono avere esattamente le stesse coordinate. Questo può essere ottenuto usando lo strumento snapping solo se l’area visualizzazione mappa e la mappa vettoriale hanno lo stesso SR. Altrimenti, a causa della trasformazione dalle coordinate della mappa all’area visualizzazione mappa e viceversa, le coordinate possono diventare leggermente diverse a causa dell’errore di rappresentazione e delle trasformazioni del SR.

Suggerimento

Usa il SR del layer anche per l’area di visualizzazione mappa durante l’editing.

Limitazioni

La modifica simultanea di più layer all’interno dello stesso vettore allo stesso tempo non è supportata. Ciò è dovuto principalmente all’impossibilità di gestire più annullamenti per una singola fonte di dati.

nix osx Su Linux e macOS è possibile modificare solo un layer di GRASS alla volta. Questo è dovuto a un bug in GRASS che non permette di chiudere i driver del database in ordine casuale. Questo problema è stato risolto con gli sviluppatori di GRASS.

Suggerimento

Permessi di modifica in GRASS

Devi essere il proprietario del MAPSET di GRASS che vuoi modificare. È impossibile modificare i livelli di dati in un MAPSET che non è tuo, anche se hai il permesso di scrittura.

23.13. Lo strumento Regione di GRASS

La definizione della regione (impostazione di una finestra di lavoro spaziale) in GRASS è importante per lavorare con i layer raster. L’analisi vettoriale non è di default limitata a nessuna definizione di regione definita. Ma tutti i nuovi raster creati avranno l’estensione spaziale e la risoluzione della regione GRASS attualmente definita, indipendentemente dalla loro estensione e risoluzione originale. La regione GRASS corrente è memorizzata nel file $LOCATION/$MAPSET/WIND, e definisce i limiti nord, sud, est e ovest, il numero di colonne e righe, la risoluzione spaziale orizzontale e verticale.

È possibile attivare e disattivare la visualizzazione della regione di GRASS nell’area di visualizzazione di QGIS usando il pulsante grassRegion Display current GRASS region.

La regione può essere modificata nella scheda “Region” nel widget dock di “GRASS Tolls”. Digita i nuovi limiti e la risoluzione della regione e clicca su Apply. Se clicchi su Select the extent by dragging on canvas puoi selezionare una nuova regione in modo interattivo con il mouse sull’area di visualizzazione di QGIS trascinando un rettangolo.

Il modulo GRASS g.region fornisce molti altri parametri per definire un’estensione e una risoluzione della regione appropriate per la tua analisi raster. Puoi usare questi parametri con il GRASS Toolbox, descritto nella sezione Il Toolbox GRASS.

23.14. Il Toolbox GRASS

Il riquadro grassTools Open GRASS Tools fornisce le funzionalità del modulo GRASS per lavorare con i dati all’interno di un LOCATION e MAPSET di GRASS selezionato. Per usare il GRASS Toolbox è necessario aprire un LOCATION e MAPSET per cui si hanno i permessi di scrittura (solitamente concessi, se si è creato il MAPSET). Questo è necessario perché i nuovi layer raster o vettoriali creati durante l’analisi devono essere scritti nel LOCATION e MAPSET attualmente selezionati.

../../../_images/grass_toolbox_moduletree.png

Fig. 23.3 Toolbox e elenco dei moduli di GRASS

23.14.1. Lavorare con i moduli GRASS

La shell di GRASS all’interno del GRASS Toolbox fornisce l’accesso a quasi tutti (più di 300) i moduli di GRASS in un’interfaccia a riga di comando. Per offrire un ambiente di lavoro più user-friendly, circa 200 dei moduli e delle funzionalità di GRASS disponibili sono anche forniti da finestre di dialogo grafiche all’interno del GRASS plugin Toolbox.

Un elenco completo dei moduli di GRASS disponibili nel Toolbox grafico nella versione di QGIS 3.22 è disponibile nel wiki di GRASS all’indirizzo https://grasswiki.osgeo.org/wiki/GRASS-QGIS_relevant_module_list.

È anche possibile personalizzare il contenuto di GRASS Toolbox. Questa procedura è descritta nella sezione Personalizzare gli strumenti GRASS.

Come mostrato in Fig. 23.3, puoi cercare il modulo GRASS appropriato usando il raggruppamento tematico Modules Tree o la scheda ricercabile Modules List.

Cliccando sull’icona di un modulo grafico, una nuova scheda verrà aggiunta alla finestra di dialogo Toolbox, fornendo tre nuove sotto schede: Options, Output e Manual.

Opzioni

La scheda Options fornisce una finestra di dialogo semplificata del modulo dove di solito puoi selezionare un layer raster o vettoriale visualizzato nel l’area di visualizzazione di QGIS e inserire ulteriori parametri specifici del modulo per eseguirlo.

../../../_images/grass_module_option.png

Fig. 23.4 Opzioni del modulo GRASS Toolbox

I parametri del modulo forniti spesso non sono completi per mantenere il dialogo semplice. Se vuoi usare ulteriori parametri e flag del modulo, devi avviare la shell di GRASS ed eseguire il modulo nella riga di comando.

Una nuova caratteristica da QGIS 1.8 è il supporto per un pulsante Show Advanced Options sotto la finestra di dialogo semplificata del modulo nella scheda Options. Al momento è aggiunto solo al modulo v.in.ascii come esempio d’uso, ma probabilmente farà parte di più o di tutti i moduli del GRASS Toolbox nelle versioni future di QGIS. Questo permette di usare le opzioni complete del modulo GRASS senza dover passare alla shell di GRASS.

Output

../../../_images/grass_module_output.png

Fig. 23.5 Modulo di output del GRASS Toolbox

La scheda Output fornisce informazioni sullo stato dell’output del modulo. Quando fai clic sul pulsante Run, il modulo passa alla scheda Output e vedi le informazioni sul processo di analisi. Se tutto funziona bene, alla fine vedrai un messaggio Successfully finished.

Manuale

../../../_images/grass_module_manual.png

Fig. 23.6 Manuale del modulo GRASS Toolbox

La scheda Manuale mostra la pagina di aiuto HTML del modulo GRASS. Potete usarla per controllare ulteriori parametri e flag del modulo o per avere una conoscenza più approfondita dello scopo del modulo. Alla fine di ogni pagina di manuale del modulo, si vedono ulteriori link al Main Help index, al Thematic index e al Full index. Questi collegamenti forniscono le stesse informazioni del modulo g.manual.

Suggerimento

Mostrare i risultati immediatamente

Se si desidera visualizzare il risultato di un’analisi immediatamente nella vista mappa, è possibile cliccare sul pulsante Visualizza Output nella porzione inferiore della scheda.

23.14.2. Esempi di utilizzo di moduli GRASS

Gli esempi che seguono mostrano le potenzialità di alcuni moduli GRASS.

23.14.2.1. Creare curve di livello

Il primo esempio crea una mappa di curve di livello vettoriali da un raster di elevazione (DEM). Qui si presume che tu abbia impostato l’Alaska LOCATION come spiegato nella sezione Importare dati nelle LOCATION GRASS.

  • Per prima cosa, apri la location cliccando il pulsante grassOpenMapset Apri mapset e scegliendo la località Alaska.

  • Ora apri il Toolbox con il pulsante grassTools Open GRASS tools.

  • Nella lista delle categorie degli strumenti, fai doppio clic su Raster ► Surface Management ► Generate vector contour lines.

  • Ora un singolo clic sullo strumento r.contour aprirà il dialogo dello strumento come spiegato sopra (vedi Lavorare con i moduli GRASS).

  • Nella Nome della mappa raster in ingresso inserisci gtopo30.

  • Digita nella casella Incremento tra linee di livello selectNumber il valore 100. (Questo creerà linee di livello a intervalli di 100 metri).

  • Inserire in Nome del vettoriale in output il nome ctour_100.

  • Fai clic su Run per avviare il processo. Attendi qualche istante fino a quando il messaggio Successfully finished appare nella finestra di output. Poi clicca su View Output e Close.

Dal momento che la regione è pittosto estesa, il comando richiede del tempo. Una volta terminata l’operazione è possibile modificare le proprietà del nuovo layer vettoriale come descritto in La finestra di dialogo Proprietà dei vettori.

Poi, zooma su una piccola area montuosa nel centro dell’Alaska. Zoomando da vicino, si noterà che i contorni hanno spigoli vivi. GRASS offre lo strumento v.generalize per alterare leggermente le mappe vettoriali mantenendo la loro forma generale. Lo strumento utilizza diversi algoritmi con diversi scopi. Alcuni algoritmi (per esempio, Douglas Peuker e Vertex Reduction) semplificano la linea rimuovendo alcuni dei vertici. Il vettore risultante verrà caricato più velocemente. Questo processo è utile quando si ha un vettore altamente dettagliato, ma si sta creando una mappa su scala molto piccola, quindi il dettaglio non è necessario.

Suggerimento

Semplifica geometrie

Nota che QGIS ha uno strumento Vector ► Geometry Tools ► Simplify geometries che funziona proprio come l’algoritmo di GRASS v.generalize Douglas-Peuker.

Tuttavia, lo scopo di questo esempio è diverso. Le linee di livello create da r.contour hanno angoli acuti che dovrebbero essere smussati. Tra gli algoritmi v.generalize, c’è quello di Chaiken, che fa proprio questo (anche le spline di Hermite). Sii consapevole che questi algoritmi possono aggiungere ulteriori vertici al vettore, facendolo caricare ancora più lentamente.

  • Apri il Toolbox di GRASS e fai doppio clic sulle categorie Vector ► Develop map ► Generalization, poi clicca sul modulo v.generalize per aprire la sua finestra delle opzioni.

  • Controllare che “ctour_100” appaia come Nome della mappa vettoriale in input.

  • Dall’elenco degli algoritmi, scegli quello di Chaiken. Lascia tutte le altre opzioni al loro valore predefinito e scorri fino all’ultima riga per inserire nel campo Nome della mappa vettoriale in uscita “ctour_100_smooth”, e clicca su Run.

  • Il processo richiede alcuni istanti. Una volta che Successfully finished appare nelle finestre di output, clicca su View Output` e poi su Close.

  • Puoi modificare il colore del layer vettoriale in modo da renderlo ben visibile sul raster di sfondo. Potrai notare come le curve di livello ora appaiano meno spigolose.

../../../_images/grass_toolbox_vgeneralize.png

Fig. 23.7 GRASS modulo v.generalize per smussare una mappa vettoriale

Suggerimento

Altri usi di r.contour

La procedura descritta sopra può essere usata in altre situazioni equivalenti. Se hai una mappa raster di dati sulle precipitazioni, per esempio, allora lo stesso metodo sarà usato per creare una mappa vettoriale di linee isoietiche (precipitazioni costanti).

23.14.2.2. Creare un effetto ombreggiatura 3-D

Diversi metodi sono usati per visualizzare layer altimetrici e dare un effetto 3-D alle mappe. L’uso delle curve di livello, come mostrato sopra, è un metodo popolare spesso scelto per produrre mappe topografiche. Un altro modo per visualizzare un effetto 3-D è l’ombreggiatura. L’effetto di ombreggiatura è creato da un raster DEM (elevazione) calcolando prima la pendenza e l’aspetto di ogni cella, poi simulando la posizione del sole nel cielo e dando un valore di riflessione ad ogni cella. Così, si ottengono pendii rivolti al sole illuminati; i pendii rivolti lontano dal sole (in ombra) sono scuriti.

  • Iniziare questo esempio caricando il raster di elevazione gtopo30. Avvia il Toolbox di GRASS e, sotto la categoria Raster, fai doppio clic per aprire Analisi spaziale ► Analisi del terreno.

  • Clicca su r.shaded.relief per aprire il modulo.

  • Cambia l” angolo azimutale selectNumber da 270 a 315.

  • Inserisci gtopo30_shade per la nuova ombreggiatura raster e clicca su Run`.

  • Quando il processo sarà completato, aggiungere il raster ombreggiatura alla vista mappa.

  • Per vedere insieme l’ombreggiatura e i colori di gtopo30, sposta la mappa dell’ombreggiatura sotto la mappa di gtopo30, poi apri la finestra Proprietà` di gtopo30, passa alla scheda Trasparenza` e imposta il suo livello di trasparenza al 25% circa.

Si dovrebbe vedere gtopo30 sopra la mappa di ombreggiatura in scala di grigi. Per riuscire a visualizzare appieno gli effetti dell’ombreggiatura, deselezionare gtopo30_shade.

Usare la shell di GRASS

Il plugin GRASS in QGIS è progettato per gli utenti che sono nuovi a GRASS e non hanno familiarità con tutti i moduli e le opzioni. Come tale, alcuni moduli nel Toolbox non mostrano tutte le opzioni disponibili, e alcuni moduli non appaiono affatto. La shell (o console) di GRASS dà all’utente l’accesso a quei moduli aggiuntivi di GRASS che non appaiono nell’albero del Toolbox, e anche ad alcune opzioni aggiuntive ai moduli che sono nel Toolbox con i parametri di default più semplici. Questo esempio dimostra l’uso di un’opzione aggiuntiva nel modulo r.shaded.relief che è stato mostrato sopra.

../../../_images/grass_toolbox_shell.png

Fig. 23.8 La shell di GRASS, modulo r.shaded.relief

Il modulo r.shaded.relief può accettare un parametro zmult, che moltiplica i valori di elevazione relativi alle unità di coordinate X-Y in modo che l’effetto ombreggiatura sia ancora più pronunciato.

  • Carica il raster di elevazione gtopo30 come sopra, poi avvia la GRASS Toolbox e clicca sulla shell di GRASS. Nella finestra della shell, digitate il comando r.shaded.relief map=gtopo30 shade=gtopo30_shade2 azimuth=315 zmult=3 e premi Enter`.

  • Dopo che il processo è finito, passa alla scheda Browse e fai doppio clic sul nuovo raster gtopo30_shade2 per visualizzarlo in QGIS.

  • Come spiegato sopra, sposta il raster del rilievo ombreggiato sotto il raster gtopo30, poi controlla la trasparenza del layer gtopo30 colorato. Dovresti vedere che l’effetto 3-D spicca più fortemente rispetto alla prima mappa del rilievo ombreggiato.

../../../_images/grass_toolbox_shadedrelief.png

Fig. 23.9 Visualizzazione del rilievo ombreggiato creato con il modulo GRASS r.shaded.relief

23.14.2.3. Statistiche raster in una mappa vettoriale

Il prossimo esempio tratta di un modulo GRASS che può aggregare dati raster ed aggiungere colonne di statistiche per ogni poligono di una mappa vettoriale.

  • Sempre utilizzando i dati Alaska, fai riferimento a Importare dati nelle LOCATION GRASS per importare il file shapefiles/trees.shp in GRASS.

  • Ora è necessario un passo intermedio: i centroidi devono essere aggiunti alla lista layer per renderla un vettore d’area completo di GRASS (includendo sia i confini che i centroidi).

  • Dal Toolbox, scegli Vector ► Manage features, e apri il modulo v.centroids.

  • Inserire come Nome del vettoriale in output “forest_areas” e lanciare il modulo.

  • Ora carica il vettore forest_areas e visualizza i tipi di foreste - decidue, sempreverdi, miste - in diversi colori: Nella finestra del layer Proprietà, scheda Simbologia, scegli da Tipo di legenda selectString “Valore univoco” e imposta il Classificazione campo a “VEGDESC”. (Fai riferimento alla spiegazione della scheda simbologia in Proprietà Simbologia della sezione vettoriale).

  • Poi, riapri il GRASS Toolbox e apri Vector ► Vector update da altre mappe.

  • Clicca sul modulo v.rast.stats. Inserisci gtopo30 e forest_areas.

  • È necessario solo un parametro aggiuntivo: Inserisci prefix di colonna elev, e clicca su Run`. Questa è un’operazione computazionalmente pesante, che durerà a lungo (probabilmente fino a due ore).

  • Infine, apri la tabella degli attributi forest_areas e verifica che siano state aggiunte diverse nuove colonne, tra cui elev_min, elev_max, elev_mean, ecc.n.

23.14.3. Personalizzare gli strumenti GRASS

Quasi tutti i moduli di GRASS possono essere aggiunti al GRASS Toolbox. Viene fornita un’interfaccia XML per analizzare i file XML piuttosto semplici che configurano l’aspetto e i parametri dei moduli all’interno del Toolbox.

Un esempio di file XML che genera il modulo v.buffer (v.buffer.qgm) ha il seguente aspetto:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE qgisgrassmodule SYSTEM "http://mrcc.com/qgisgrassmodule.dtd">

<qgisgrassmodule label="Vector buffer" module="v.buffer">
        <option key="input" typeoption="type" layeroption="layer" />
        <option key="buffer"/>
        <option key="output" />
</qgisgrassmodule>

Il parser legge questa definizione e crea una nuova scheda nel Toolbox quando si seleziona il modulo. Una descrizione più dettagliata per aggiungere nuovi moduli, cambiare il gruppo di un modulo, ecc. può essere trovata su https://qgis.org/en/site/getinvolved/development/addinggrasstools.html.