Introduzione ai GIS Liberi
GRASS
Indice
Primi passi in GRASS
Gesione di dati raster
Gestione di dati vettoriali
QuantumGIS GRASS plugin
Presentazione di GRASS
GRASS (Geographical Resources Analysis Support System) è un software GIS con supporto a dati raster e vettoriali
Il progetto nasce agli inizi degli anni ‘80 come progetto dell’esercito USA, per poi essere abbandonato nel 1996, e rilasciato nella versione 4.1 al pubblico dominio
Nel 1999, dopo alcuni anni di sviluppo da parte della comunità , viene rilasciata la versione 5, in licenza GPL
Attualmente il centro di sviluppo del software ha sede a Povo (Trento Trentino-Italia), presso l’ITC-irst, ma si avvale di molti collaboratori esterni
Presentazione di GRASS
Il sistema è organizzato su tre livelli:
- core: implementa funzionalità di base come la gestione dei dati, la visualizzazione, …
- moduli: gestiscono caratteristiche specifiche (analisi raster, image processing, …)
- interfacce grafiche: accesso facilitato ai comandi GRASS
È scritto principalmente in ANSI C, con alcuni moduli in FORTRAN. L’interfaccia grafica classica usa il linguaggio interpretato Tcl/Tk, ma dalla versione 6.4 è disponibile una nuova riscrittura in python (wxPython)
Organizzazione dei moduli
I moduli sono organizzati per gruppi:
- d.* comandi per la gestione del display grafico
- g.* comandi per la gestione dei file
- i.* comandi per l’elaborazione delle immagini
- r.* comandi per l’elaborazione di dati in formato raster
- v.* comandi per l’elaborazione di dati in formato vettoriale
- db.* comandi per la connessione a DBMS
- r3.* comandi per l’elaborazione di dati raster tridimensionali
- m.* altri comandi
- p.*/ps.* comandi per la creazione e gestione di file postscript per la stampa di mappe
Funzionalità di GRASS
In totale sono disponibili circa 400 moduli, che implementano le seguenti funzioni:
- analisi spaziale
- modellazione ambientale
- generazione di mappe tematiche
- integrazione con DBMS
- visualizzazione 2D e 3D di dati spazialmente distribuiti
- multispectral image processing
- gestione e memorizzazione di dati
Il loro numero è in costante crescita, grazie anche al modello di sviluppo che permette l’accesso al codice sorgente di tutto il sistema
InteroperabilitÃ
Lo sviluppo avviene soprattutto in ambiente Linux/Unix, per cui tale ambiente, nelle sue varianti, risulta il più adatto all’utilizzo di GRASS
Interfacce utente
GRASS, nella versione 6.4, viene distribuito con 3 differenti interfacce:
- interfaccia a linea di comando: è l’interfaccia standard di GRASS, presente fin dalle prime versioni. È la più complicata da utilizzare, ma presenta il vantaggio di essere scriptabile, rendendo task complessi automatizzabili
- interfaccia grafica classica, in TCL/Tk: la prima interfaccia grafica ad essere stata sviluppata per GRASS. Permette un utilizzo semplificato, anche per gli utenti meno esperti, ma si basa su un toolkit vecchio e poco integrato con i moderni sistemi desktop
- interfaccia wxPython: negli ultimi due anni gli sforzi si sono concentrati sullo sviluppo di una GUI più moderna, armonica, e simile agli altri SW GIS presenti sul mercato
Avvio di GRASS (1/3)
Per avviare il programma è sufficiente lanciare, in un terminale, il comando grass. Se non si utilizzano opzioni, il sistema partirà con l’interfaccia GUI classica in TCL/Tk
Opzioni del comando GRASS:
-text avvia GRASS senza GUI (interfaccia CLI)
-gui avvia GRASS con interfaccia grafica standard (TCL/Tk)
-tcltk avvia GRASS con GUI TCL/Tk
-wx avvia GRASS con l'ultima versione della GUI, in wxPython
Nota: GRASS memorizza le opzioni dell’ultimo avvio in un file di configurazione, rendendo superfluo l’uso di opzioni dopo il primo avvio
Avvio di GRASS (2/3)
GRASS necessita di una directory specifica, in cui salvare tutti i dati su cui lavorare (GRASSDATABASE)
Al primo avvio verrà presentata una schermata per effettuare tale operazione
# Primo avvio di GRASS
$> cd ~
$> grass -wx
Avvio di GRASS (2/3)
Struttura del database GRASS (1/3)
GRASS organizza il suo database interno in una struttura gerarchica, pensata per consentire l’accesso ai dati in maniera efficiente e garantire l’utilizzo multiutente
Il database di GRASS è spalmato sul filesystem, ed è organizzato in una serie di directory annidate
Come già detto in precedenza, l’elemento radice è la directory GISSDATABASE, che viene creata al primo avvio di GRASS
Struttura del database GRASS (2/3)
All’interno della directory principale, i dati sono organizzzti per aree di progetto, denominate LOCATION
GISDATABASE /home/user/GRASSDATA
_______________|_______________
| | |
LOCATIONS Vegetazione Temperatura Italia ...
Struttura del database GRASS (3/3)
Ciascuna LOCATION può contenere una o più sottodirectory, denominate MAPSET
I MAPSET servono da un lato a separare i dati in gruppi omogenei, e dall’altro a garantire a più utenti di lavorare sullo stesso progetto (LOCATION)
GISDATABASE /home/user/GRASSDATA
_______________|_______________
| | |
LOCATIONS Vegetazione Temperatura Italia ...
_______|______
| |
MAPSET NDVI EVI
Caratteristiche dei MAPSET
Di default, l’accesso ad un dato MAPSET è di tipo rw per l’utente che l’ha creato, e in sola lettura per tutti gli utenti che hanno accesso alla relativa LOCATION
Esiste un MAPSET di sistema, PERMANENT, che viene creato nel momento in cui viene inizializzata una LOCATION:
- memorizza le configurazioni della LOCATION, che per default vengono applicate a tutti i nuovi MAPSET
- per convenzione, PERMANENT dovrebbe contenere i dati comuni a tutti gli utenti della LOCATION
Caratterizzazione delle location
Ciascuna location è definita da 4 parametri:
- sistema di riferimento
- proiezione
- limiti geografici
- estensione della regione computazionale
Prima di utilizzare nuovi dati in GRASS, è necessario creare una location che abbia proprietà coerenti
Creazione nuova location (1/2)
La creazione di una nuova location si effettua dalla finestra di avvio di GRASS
È possibile definire una location sulla in 6 modi differenti:
- selezione manuale dei parametri (datum, proiezione, extent)
- selezione mediante un codice EPSG
- impostazione mediante un file già georiferito (ad, es. un raster)
- impostazione mediante un file di georeferenziazione (wkt, prj)
- utilizzo di parametri personalizzati nella sintassi proj4
- utilizzo di un SRS piano XY non cartografico (utile per importare raster da georeferenziare)
Creazione nuova location (2/2)
Creazione mapset
La creazione di un nuovo mapset è un’operazione estremamente semplice. È sufficiente:
- selezionare la location in cui il nuovo mapset verrà creato
- inserire il nome del nuovo mapset
Presentazione GUI wxPython (1/3)
GRASS, nella versione wxPython, presenta due finestre con funzionalità distinte:
- Layer manager: permette di gestire i layer cartografici (aggiunta, rimozione, ordinamento), e offre l’accesso a tutti i moduli di GRASS attraverso la barra dei menu, organizzata secondo l’ordinamento dei comandi interni (region, raster, vectorial, db,…)
- Map display: interfaccia di visualizzazione dei dati, con le tipiche funzioni di navigazione della mappa (zoom, pan, …), la gestione della stampa e i comandi per cambiare tipo di vista (2D, editing, 3D)
Presentazione GUI wxPython (2/3)
Presentazione GUI wxPython (3/3)
Raster data model
GRASS memorizza i dati raster in un insieme di file organizzati nel seguente modo:
- un header file, nella directory cellhd, che contiene informazioni su SRS, extent e risoluzione
- una matrice con i valori del raster (cell se matrice intera, fcell se matrice di float)
- un file con i valori delle categorie (cats), qualora vengano impostate col comando r.category
- la tabella dei colori nella directory colr (se impostata cool comando r.colors)
- alcune metainformazioni (nella directory cell_misc)
- range e valori null (directory cell_misc)
Regione computazionale
GRASS differisce dagli altri software GIS, nella gestione della regione (map extent) e della risoluzione
- se il raster in input si estende su una regione più grande, GRASS elaborerà solo le celle coinvolte
- se il raster in input presenta una risoluzione differente, GRASS effettuerà automaticamente operazioni di resampling
Per cambiare i parametri della regione si utilizza il comando g.region (Configurazione->Regione->Imposta region)
Vectorial data model (1/3)
Punti, linee, aree e geometrie 3D vengono gestite in GRASS attraverso il modello di dati vettoriale
- geometria delle features
- topologia
- attributi
Nota: nella definizione delle geometrie, i punti interni ad un segmento vengono detti vertici, mentre i due punti di confine (end points) nodi
Vectorial data model (2/3)
GRASS definisce i seguenti tipi di oggetti vettoriali:
- punti
- linee: sequenze orientate di vertici connessi, tra due nodi
- confini (boundary): la linea di confine di una superficie (i due nodi devono coincidere)
- centroidi: un punto all’interno di un confine (ne rappresenta il baricentro)
- aree: la composizione topologica tra un confine e un centroide
- facce: superficie 3D
- kernel: centroide nelle 3 dimensioni
- volumi: composizione topologica tra facce e kernel
Vectorial data model (3/3)
- ricerca di relazioni di vicinanza tra gli oggetti
- analisi di inclusione
- gestione delle intersezioni tra geometrie
- calcoli di prossimitÃ
- network analysis
Importare dati raster
Prima di poter utilizzare qualsiasi dato in GRASS, è necessario importarlo
I comandi di importazione iniziano con il prefisso r,in.*, e sono raggiungibili nel menu File->Importa mappe raster
Nelle ultime versioni di GRASS è stato sviluppato un nuovo modulo, r.external, che permette di collegare un raster GRASS ad un file esterno al suo database, senza la necessità di importarlo. Ciò è molto utile nella gestione di raster che non necessitano di analisi (es. le ortofoto)
Gestire dati in GRASS
Visualizzare raster
Per visualizzare dati raster all’interno di GRASS, è sufficiente cliccare sul rispettivo bottone, nella barra degli strumenti del Layer Manager
L’operazione di aggiunta del layer corrisponde al comando GRASS d.rats (display raster)
Composizione raster da RGB
In seguito all’importazione di una immagine a colori, GRASS scompone automaticamente tale raster in tre layer, ciascuno corrispondente alla componente cromatica nello spazio RGB (red/green/blue)
Gestione color maps
Madiante l’interfaccia proposta è possibile agganciare una color map (file di testo con la corrispondenza tra valori e colore) da scegliere tra quelle di default
L’interfaccia wxPython presenta anche una finestra per la definizione in maniera del tutto grafica di una mappa personalizzata (Raster->Gestione colori->Regole dei colori)
Profili e transetti
Statistiche e report (1/2)
Entrambi i comandi sono in grado di calcolare:
- distribuzione dei valori del raster in classi di ampiezza
- percentuale di copertura delle celle all’interno della stessa classe di ampiezza
- numero di celle nella stessa classe
Statistiche e report (2/2)
Statistiche univariate
Il calcolo di indicatori statistici si effettua con il comando r.univar (Raster->Report e statistiche->Statistiche univariate raster)
Gestione NULL values
GRASS implementa il modulo ad-hoc r.null (Raster->Sviluppa raster->Gestisci valori NULL) che permette:
- setting a NULL di tutte le celle per cui si specifica un valore
- impostazione ad un valore specificato, delle celle NULL
Riclassificazione
La sintassi generale di una regola di riclassificazione è la seguente:
old_value = new_value description
old_value old_value ... old_value = new_value description
old_low_bound thru old_up_bound = new_value description
* = new_value description
Nota: per preservare spazio su disco, il raster in output non viene effettivamente creato, ma viene salvata la lista delle regole per generarlo al volo in caso di richiesta
Raster algebra (1/2)
La nuova interfaccia grafica in wxPython di GRASS, fornisce un wrapper user-friendly alle funzioni di raster algebra fornite in GRASS dal modulo r.mapcalculator (Raster->Calcolatore raster)
Come nel caso della riclassificazione, il risultato non è salvato su disco, ma ricalcolato al volo all’occorrenza
Raster algebra (2/2)
Geoprocessing raster: contours
Tra le operazioni più comuni di geoprocessing, occorre sicuramente enumerare il calcolo di curve di livello, a partire da un raster
- i livelli su cui contornare
- l’intervallo interlivello
- i limiti (upper e lower) tra cui valutare i contorni
- il numero massimo di celle contigue, intorno a cui disegnare le curve
Il risultato del comando è un vettore GRASS
Esportazione dati raster
Comandi base: r.out.*
Tutti i comandi di esportazione operano sulla regione computazionale impostata
Visualizzare vettori
Per visualizzare dati vettoriali all’interno di GRASS, è sufficiente cliccare sul rispettivo bottone, nella barra degli strumenti del Layer Manager
L’operazione di aggiunta del layer corrisponde al comando GRASS d.vect
Creazione di vettori da ASCII (1/3)
Attraverso il comando v.in.ascii è possibile generare un vettoriale GRASS mediante un un file di testo contentente coordinate note
Il comando in questione può funzionare in due modalità :
- creazione di una serie di punti, mediante file ASCII di tipo point
- creazione di un vettoriale attraverso un file di testo nel formato standard di GRASS (una sorta di WKT)
Creazione di vettori da ASCII (2/3)
759758.87584346|4468209.67895402|casa
782873.17501666|4440892.77993116|albero
Nota: è necessario specificare il significato di ciascuna colonna, attraverso la sintassi SQL (x double precision, y double precision, descr varchar(20))
Creazione di vettori da ASCII (3/3)
ORGANIZATION: Alca
DIGIT NAME: dmt
MAP DATE: Thu Jul 29 19:27:16 2010
VERTI:
P 1
759758.87584346 4468209.67895402
L 2
759758.87584346 4468209.67895402
782873.17501666 4440892.77993116
Esportazione dati vettoriali
L’esportazione di dati vettoriali da GRASS si effettua con il comando v.out.ogr
Altro fattore degno di attenzione è la necessità di scegliere il tipo di geometrie da esportare, essendo possibile in GRASS riunire features differenti all’interno dello stesso dato vettoriale (punti, linee, centroidi e aree)
NVIZ
NVIZ è un potente visualizzatore di dati in 3D, basato su OpenGL
Attraverso tale modulo GRASS è in grado di visualizzare modelli altimetrici, grid3 (voxel) e dati vettoriali 2D e 3D
Tra le funzioni base è possibile definire l’insieme dei dati da renderizzare, il punto di vista (in maniera interattiva) e le luci della scena
È presente una funzione di esportazione in grado di salvare immagini renderizzate o animazioni (modalità fly)
QGIS GRASS Plugin (1/2)
QGIS fornisce un plugin per il supporto a GRASS, con cui è possibile:
- accedere al database GRASS (Location, Mapset), e navigarlo graficamente
- visualizzare dati nativi GRASS all’interno di un progetto QGIS
- utilizzare un elevato numero di moduli GRASS attraverso un’interfaccia intuitiva
- accedere al sistema di digitalizzazione di GRASS
QGIS GRASS Plugin (2/2)
Copyright 2010 - Alca Soc. Coop.
released under CreativeCommons 2.5 by-nc-sa