22. 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.
22.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/.
22.2. Caricare layer raster e vettoriali GRASS¶
Se il provider è caricato in QGIS, l’elemento location con l’icona GRASS 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
se il sorgente dei vettori GRASS è caricato.22.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.
Nel browser QGIS accedi al mapset in cui desideri importare i dati.
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.
Trascina un layer e rilascialo sul mapset di destinazione. L’importazione potrebbe richiedere del tempo per i layer più grandi, vedrai un icona animata 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 . I raster esterni hanno un’icona diversa .
22.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.
22.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.
22.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 , seleziona GRASS e clicca OK.
Le seguenti funzioni principali sono fornite con il menu GRASS (
) quando si avvia il plugin GRASS:22.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.
22.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.)
22.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).
Avvia QGIS e assicurati che il plugin GRASS sia caricato
Nella barra degli strumenti di GRASS, fai clic sull’icona Apri mapset per aprire la procedura guidata MAPSET.
Seleziona come database GRASS la cartella
grassdata
nell’insieme dei dati QGIS Alaska, comeLOCATION
“alaska”, comeMAPSET
“demo” e clicca OK.Ora clicca sull’icona Apri strumenti GRASS. Appare la finestra di dialogo GRASS Toolbox (vedi sezione Il Toolbox GRASS).
Per importare la mappa raster
landcover.img
, fai clic sul modulor.in.gdal
nella scheda Modules Tree. Questo modulo di GRASS permette di importare file raster supportati da GDAL in unLOCATION
di GRASS. Appare la finestra di dialogo del modulo perr.in.gdal
.Scorri la cartella
raster
nell’insieme di dati “Alaska” di QGIS e seleziona il filelandcover.img
.Come nome raster in uscita, definisci
landcover_grass
e clicca su Run. Nella scheda Output, vedrai il comando GRASS attualmente in esecuzioner.in.gdal -o input=/path/to/landcover.img output=landcover_grass
.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.Per importare il file vettoriale GML
lakes.gml
, fai clic sul modulov.in.ogr
nella scheda Modules Tree. Questo modulo di GRASS permette di importare file vettoriali supportati dall’OGR in unLOCATION
di GRASS. Appare la finestra di dialogo del modulo perv.in.ogr
.Scorri la cartella
gml
nell’insieme di dati “Alaska” di QGIS e selezionare il filelakes.gml
come file OGR.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 esecuzionev.in.ogr -o dsn=/path/to/lakes.gml output=lakes\_grass
.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.
22.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).
Avvia QGIS e assicurati che il plugin GRASS sia caricato
Visualizza lo shapefile
alaska.shp
(vedi sezione Caricare un layer da un file) dall’insieme dei dati QGIS Alaska (vedi Installare dati campione).Nella barra degli strumenti di GRASS, clicca sull’icona Nuovo mapset per aprire la procedura guidata MAPSET.
Seleziona una cartella esistente del database di GRASS (GISDBASE)
grassdata
, o creane una per il nuovoLOCATION
usando un file manager sul tuo computer. Poi clicca su Avanti.Possiamo usare questa procedura guidata per creare un nuovo
MAPSET
all’interno di unaLOCATION
esistente (vedi la sezione Aggiungere un nuovo MAPSET) o per creare una nuovaLOCATION
. Seleziona Crea nuova location (vedi Fig. 22.2).Inserisci un nome per
LOCATION
– noi abbiamo usato “alaska” – e clicca su Avanti.Definisci la proiezione cliccando sul pulsante radio Proiezione per attivare la lista delle proiezioni.
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 SR Status nell’angolo in basso a destra della barra di stato (vedi sezione Lavorare con le proiezioni)).In Filtro, inserisci 2964 per selezionare la proiezione.
Fai clic su Avanti.
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 caricatoalaska.shp
come estensione della region predefinita di GRASS.Fai clic su Avanti.
Dobbiamo anche definire un
MAPSET
all’interno della nostra nuovaLOCATION
(questo è necessario quando si crea una nuovaLOCATION
). Puoi chiamarlo come vuoi - noi abbiamo usato “demo”. GRASS crea automaticamente uno specialeMAPSET
chiamatoPERMANENT
, 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).Verifica il sommario per assicurarti che sia corretto e clicca su Finish.
Il nuovo
LOCATION
, “alaska”, e dueMAPSETs
, “demo” e “PERMANENT”, sono creati. L’ambiente di lavoro attualmente aperto è “demo”, come definito.Nota che alcuni strumenti della barra di GRASS precedentemente disabilitati sono ora attivi.
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.
22.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).
Avvia QGIS e assicurati che il plugin GRASS sia caricato
Nella barra degli strumenti di GRASS, clicca sull’icona Nuovo mapset per aprire la procedura guidata MAPSET.
Seleziona la cartella del database di GRASS (GISDBASE)
grassdata
con laLOCATION
“alaska”, dove vogliamo aggiungere un ulterioreMAPSET
chiamato “test”.Fai clic su Avanti.
Possiamo usare questa procedura guidata per creare un nuovo
MAPSET
all’interno di unLOCATION
esistente o per creare un nuovoLOCATION
. Clicca sul pulsante radio Select location (vedi Fig. 22.2) e clicca su Next.Inserisci il nome
test
per il nuovoMAPSET
. Di seguito, nella procedura guidata, vedrai un elenco diMAPSET
esistenti e i relativi proprietari.Fai clic su Next, controlla il sommario per assicurarti che sia tutto corretto e fai clic su Finish.
22.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.
22.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).
22.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 |
---|---|---|
New Point |
Digitalizzare un nuovo punto |
|
Nuova Linea |
Digitalizzare una nuova linea |
|
Nuovo contorno |
Digitalizzare un nuovo confine |
|
Nuovo centroide |
Digitalizza un nuovo centroide (imposta l’etichetta per un’area esistente) |
|
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.
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.
22.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 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.
22.14. Il Toolbox GRASS¶
Il riquadro 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.
22.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.16 è 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. 22.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.
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
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
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.
22.14.2. Esempi di utilizzo di moduli GRASS¶
Gli esempi che seguono mostrano le potenzialità di alcuni moduli GRASS.
22.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 Apri mapset e scegliendo la località Alaska.
Nella lista delle categorie degli strumenti, fai doppio clic su
.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 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
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
, 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.
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).
22.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 .Clicca su r.shaded.relief per aprire il modulo.
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 digtopo30
, poi apri la finestra digtopo30
, 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.
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 comandor.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 layergtopo30
colorato. Dovresti vedere che l’effetto 3-D spicca più fortemente rispetto alla prima mappa del rilievo ombreggiato.
22.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
, 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 “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
da altre mappe.Clicca sul modulo v.rast.stats. Inserisci
gtopo30
eforest_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 cuielev_min
,elev_max
,elev_mean
, ecc.n.
22.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.