GRASS 6.4 1. introduzione Marco Negretti Politecnico di Milano e-mail: marco.negretti@polimi.it http://geomatica.como.polimi.it 13/12/2013
indice introduzione struttura dell'archivio utilizzare GRASS con i dati demo di Spearfish gestione dell'archivio visualizzare carte raster e vettoriali tabella degli attributi dei dati vettoriali definire i colori per le carte raster e vettoriali il workspace navigare e interrogare la cartografia legenda e barra di scala stampa 2
introduzione GRASS Geographic Resources Analysis Support System E' un Sistema Informativo Geografico (GIS) utilizzato per la gestione, l'elaborazione, il modellamento spaziale e la visualizzazione di dati geografici http://grass.osgeo.org/ 3
introduzione GRASS è un software libero/open source rilasciato con licenza GNU General Public License (GPL) >= V2 http://www.gnu.org/licenses/gpl.html Può essere utilizzato, modificato e ridistribuito rispettando i termini della licenza GNU GPL Originariamente scritto, sviluppato, gestito e diffuso dall'u.s. Army Construction Engineering Research Laboratories (USA-CERL, 19821995), sezione dell'us Army Corp of Engineers, come strumento per la gestione del territorio e la pianificazione ambientale per scopi militari 4
introduzione E' diventato rapidamente un potente strumento in un ampio campo di applicazioni in molte differenti aree della ricerca scientifica GRASS è attualmente utilizzato in tutto il mondo in ambienti accademici e commerciali, in molti settori governativi, che includono NASA, NOAA, USDA, DLR, CSIRO, il National Park Service, l' U.S. Census Bureau, USGS, e in molte compagnie di consulenza ambientale 5
introduzione GRASS è sviluppato da una rete mondiale di operatori che continuano a rilasciare con regolarità nuove versioni Include centinaia di moduli per elaborare dati (2D e 3D) raster, vettoriali e immagini multispettrali, restituire carte ed immagini sul monitor e su carta, immagazzinare dati con connessioni a diversi DBMS (PostgreSQL, ed altri tramite ODBC) 6
introduzione Il codice sorgente di GRASS è scritto in ANSI-C ed è POSIX compliant. Questo permette di utilizzarlo sulla maggior parte dei sistemi UNIX, incluso Linux, su MacOX e su MS-Windows GRASS è un progetto dell' Open Source Geospatial Foundation http://www.osgeo.org/ 7
introduzione Il team di sviluppo di GRASS rende disponibili diverse versioni del sw: GRASS 6.4.x è la nuova versione stabile GRASS 6.5 è la versione di sviluppo di GRASS 6, consigliata per gli sviluppatori, meno per la produzione GRASS 7 è la nuova versione di GRASS, in fase di sviluppo 8
introduzione - download E' possibile scaricare i file sorgenti e poi compilarli Oppure utilizzare uno dei pacchetti precompilati della versione 6.4 Arch Linux, Debian, Fedora, Gentoo, Linux Mint, Mageia, OpenSUSE, RedHat Enterprise Linux, Ubuntu MacOSX, Windows http://grass.osgeo.org/download/software/ 9
introduzione - download In alternativa all'installazione, per iniziare, sono a disposizione versioni su live DVD e Virtual Machine: OSGEO Live GIS Disc Italian GRASS Virtual Machine (Università di Trento) VigerGIS (Laboratorio di Geomatica - Politecnico di Milano)... http://grass.osgeo.org/download/software/live-cdrom/ 10
introduzione - i moduli di GRASS GRASS è organizzato in moduli (comandi) Ad ogni modulo corrisponde una determinata funzione E' possibile utilizzare i moduli mediante interfaccia grafica (GUI) direttamente da linea di comando 11
introduzione - i moduli di GRASS Per usare un comando di GRASS: cercarlo nei menu della GUI nome del comando help del comando definizione dei parametri di esecuzione linea di comando che sarà eseguita premendo sul tasto run 12
introduzione - i moduli di GRASS Per usare un comando di GRASS: da linea di comando, nella scheda command console : indicare il nome del comando e invio per aprire direttamente la finestra senza cercare nei menu specificare direttamente le opzioni per eseguire il comando senza utilizzare la GUI dalla command console dalla shell 13
introduzione - i moduli di GRASS Il campo di azione di un modulo è identificato dalla stringa a sinistra del punto: g.xxxx => generali - es: g.region r.xxxx => per i raster - es: r.mapcalc, r.buffer r3.xxxx => per i raster 3D - es: r3.mapcalc v.xxxx => per i vettoriali - es: v.buffer i.xxxx => per le immagini - es: i.fft d.xxxx => di visualizzazione - es: d.rast, d.vect db.xxxx => per la connessione ai DB - es: db.connect ps.xxxx => per la stampa - es: ps.map m.xxxx => comandi vari (misellaneous) - es: m.proj 14
introduzione - manuali GRASS è ben documentato I manuali delle varie versioni sono on-line: Per la versione 6.4, utilizzata come riferimento: http://grass.osgeo.org/grass64/manuals/index.html Ad ogni comando corrisponde una pagina, ad esempio, per il comando d.rast: http://grass.osgeo.org/documentation/manuals/ http://grass.osgeo.org/grass64/manuals/d.rast.html che più semplicemente, in questa dispensa sarà indicata come: http://path_to_man/d.rast.html 15
struttura dell'archivio L'organizzazione dei dati di GRASS è di tipo gerarchico ed è stata pensata per gestire in modo efficiente l'accesso multiutente ai dati e la loro condivisione I dati di GRASS sono contenuti tutti all'interno di una directory, GISDBASE, che deve essere creata prima di utilizzare GRASS GISDBASE /home/grassdb/ 16
struttura dell'archivio All'interno della GISDBASE i dati sono organizzati in directory chiamate LOCATION ogni location contiene dati omogenei dal punto di vista del sistema di riferimento e dell'estensione geografica /home/grassdb/ GISDBASE LOCATION COMO GENOVA MODENA 17
struttura dell'archivio In ogni LOCATION ci sono una o più directory chiamate MAPSET I mapset sono le aree di lavoro degli utenti che accedono ai dati della location ad ogni mapset corrisponde un utente /home/grassdb/ GISDBASE LOCATION MAPSET COMO PERMANENT GENOVA utente01 MODENA utente02 18
struttura dell'archivio Accesso ai dati di un mapset l'accesso in lettura/scrittura ai dati di un mapset è consentito solo al proprietario del mapset per default ogni utente ha accesso in lettura ai mapset degli altri utenti Mapset PERMANENT viene creato da GRASS quando si crea la location sono definite le proprietà della location, valide per tutti gli altri mapset della location sistema di riferimento, estensione, risoluzione... contiene i dati comuni da condividere con tutti gli utenti della location 19
struttura dell'archivio - dati raster I dati raster sono memorizzati in una matrice numerica di N righe per M colonne i cui elementi rappresentano ciascuno una porzione di forma rettangolare di territorio Ogni matrice contiene N x M valori numerici, ciascuno per ogni cella, che descrivono la corrispondente porzione di territorio Si possono utilizzare matrici di valori interi e in virgola mobile 20
struttura dell'archivio - dati raster I dati di ogni carta raster sono distribuiti su più file residenti in sottodirectory tematiche del mapset LOCATION MAPSET DATI COMO PERMANENT utente01 utente02 fcell cell cell_misc colr cellhd cats hist 21
struttura dell'archivio - dati raster Esempio gisdbase: GRASSDB location: spearfish60 mapset: user1 carta raster: elevation.dem 22
struttura dell'archivio - dati raster directory cell - fcell matrice numerica in formato binario con i dati della carta directory cellhd cell => valori interi fcell => valori in virgola mobile file di testo con l intestazione (header) directory cell_misc ad ogni raster corrisponde una directory con 2 file: range: definisce massimo e minimo valore della carta raster null: definisce le celle a valore nullo 23
struttura dell'archivio - dati raster directory cats directory colr/colr2 contiene il file con l'elenco delle categorie, corredate eventualmente da una descrizione Contiene il file con la tavola dei colori definiti nel formato RGB: cat:r:g:b directory hist Contiene il file con le meta informazioni 24
struttura dell'archivio - dati vettoriali Le carte vettoriali sono contenute all'interno della directory vector ad ogni carta vettoriale corrisponde una directory all'interno della quale ci sono i file che definiscono le proprietà geometriche della carta Gli attributi sono memorizzati per default in tabelle dbf all'interno della directory dbf LOCATION MAPSET DATI COMO PERMANENT vector utente01 utente02 dbf 25
struttura dell'archivio - dati vettoriali Esempio gisdbase: GRASSDB location: spearfish60 mapset: user1 carta vettoriale: roads 26
struttura dell'archivio - dati vettoriali file coor, cidx, topo file head intestazione (header) file dbln file binari con geometria, indici spaziali e topologia tipo di connessione al database file hist meta informazioni 27
struttura dell'archivio - dati vettoriali Gli attributi della carta vettoriale sono: in tabelle DBF, all'interno della directory dbf oppure è possibile utilizzare dei database esterni: PostgreSQL SQLite MySQL qualsiasi altro DB via ODBC 28
utilizzare GRASS con i dati di demo spearfish 1. creare la directory principale (GISDBASE) dove si ritiene più opportuno 2. scaricare i dati demo spearfish_grass60data.tar.gz http://grass.osgeo.org/download/sample-data/ 3. decomprimere il file scaricato al punto 2 all'interno della GISDBASE creata al punto 1 si così ottiene una location pronta da utilizzare con GRASS 29
utilizzare GRASS con i dati di demo spearfish E' possibile avviare GRASS scegliendo tra due interfacce grafiche (GUI) diverse: tcltk => GUI di default fino a GRASS 6 wxpython => la nuova GUI di GRASS per Linux, da linea di comando per windows (dipende...) grass64 -tcltk grass64 -wxpython Es. QGIS-OSGEO4W package: In queste dispense si utilizzerà la nuova GUI wxpython http://path_to_man/grass6.html 30
utilizzare GRASS con i dati di demo spearfish Avviare GRASS e indicare GISDBASE, LOCATION e MAPSET: GISDBASE dipende da dove si è estratta la location spearfish LOCATION scegliere spearfish60 MAPSET scegliere user1 avviare GRASS 31
utilizzare GRASS con i dati di demo spearfish La GUI wxpython: map display finestra di visualizzazione layer manager - proprietà layer - gestione dell'archivio - accesso ai comandi di GRASS - console http://path_to_man/wxgui.html 32
utilizzare GRASS con i dati di demo spearfish Il terminale: 33
gestione dell'archivio L'archivio di GRASS è complesso Nel menu "Manage maps and volumes" ci sono i moduli per copiare dati da un altro mapset o da quello corrente visualizzare i dati presenti nei mapset rinominare i dati del mapsert corrente cancellare i dati dal mapset corrente 34
gestione dell'archivio - alcuni esempi Copiare i seguenti dati dal mapset (g.copy) PERMANENT al mapset corrente user1: road (vettoriale) elevation.dem (raster) Perché copiarli? I dati in PERMANENT sono accessibili solo in lettura I dati nel mapset corrente sono accessibili in lettura/scrittura per iniziare con qualcosa di semplice 35
gestione dell'archivio - alcuni esempi Vedere quali dati ci sono nell'archivio (g.list) selezionare il/i tipo/i di dati che si vogliono visualizzare nell'esempio i dati raster e vettoriali 2D 36
gestione dell'archivio - alcuni esempi Vedere quali dati ci sono nell'archivio nel mapset user1 raster nel mapset PERMENENT vettoriali 37
gestione dell'archivio - alcuni esempi Provare da linea di comando a lanciare i seguenti comandi: g.copy rast=slope@permanent,slope vect=railroads,railroads g.rename vect=railroads,ferrovie rast=slope,pendenza cambia i nomi, da railroads a ferrovie e da slope a pendenza (lavora nel mapset corrente) g.list type=vect,rast copia slope e railroad dal mapset PERMANENT a quello corrente elenca i file vettoriali e raster a cui si ha accesso g.remove rast=pendenza cancella dal mapset corrente il raster pendenza http://path_to_man/ g.copy.html - g.rename.html - g.remove.html - g.list.html 38
visualizzare i dati - raster per aggiungere un layer di tipo raster si ottiene l'elenco di tutte le carte raster del mapset corrente e di tutti quelli ai quali si ha accesso in lettura mapset selezionare elevation.dem 39
visualizzare i dati - raster Per aggiornare il Map Display con i nuovi layer aggiunti nel Layer Manager Selezionare render per avere l'aggiornamento automatico dei contenuti http://path_to_man/d.rast.html 40
visualizzare i dati - vettoriali per aggiungere un layer di tipo vettoriale si ottiene l'elenco di tutte le carte vettoriali del mapset corrente e di tutti quelli ai quali si ha accesso in lettura mapset selezionare roads 41
visualizzare i dati - vettoriali Per aggiornare il Map Display con i nuovi layer aggiunti nel Layer Manager http://path_to_man/d.vect.html 42
tabella degli attributi dei dati vettoriali Ad ogni oggetto vettoriale sono associate delle informazioni => attributi Gli attributi sono organizzati in tabelle La connessione tra dato vettoriale e tabella degli attributi può essere gestita in diversi modi: pg (PostgreSQL), odbc, mysql, ogr, dbf, sqlite Ad ogni riga della tabella corrisponde un oggetto geometrico e viceversa 43
tabella degli attributi dei dati vettoriali Per default GRASS utilizza il driver dbf: gli attributi sono su file dbf questi file sono in $GISDBASE/$LOCATION_NAME/$MAPSET/dbf/ dove: $GISDBASE è la "GIS data directory" indicata all'avvio di GRASS $LOCATION è la location corrente $MAPSET è il mapset corrente 44
tabella degli attributi dei dati vettoriali Per gestire la connessione alle tabelle degli attributi dei dati vettoriali: per tutti i dati del mapset corrente manage databases per una determinata carta vettoriale vector database connections 45
tabella degli attributi dei dati vettoriali Visualizzare i parametri della connessione corrente db.connect http://path_to_man/db.connect.html 46
tabella degli attributi dei dati vettoriali Per modificare la struttura di una tabella, visualizzarne e modificarne il contenuto è possibile: utilizzare il tasto "show attribute table" nel layer manager modalità accessibile solo dalla GUI utilizzare i comandi db.xxxx, v.db.xxxx questi comandi sono sempre accessibili, da GUI e da linea di comando 47
tabella degli attributi dei dati vettoriali Dal layer manager, selezionare il vettoriale di interesse (es. roads) e click sul tasto "show attribute table" per visualizzare la tabella 48
tabella degli attributi dei dati vettoriali Visualizzare i dati contenuti nella tabella doppio click su una riga per evidenziare sul map display l'elemento vettoriale corrispondente definizione di query per visualizzare dati parziali 49
tabella degli attributi dei dati vettoriali Per modificare i dati contenuti nella tabella tasto dx per modificare il valore dell'attributo selezionato, cancellare righe, inserirne di nuove... 50
tabella degli attributi dei dati vettoriali Modificare i dati contenuti nella tabella nel seguente modo 1 => "autostrade federali" 2 => "autostrade principali" 3 => "autostrade secondarie" 4 => "strade principali" 5 => "strade secondarie" 51
tabella degli attributi dei dati vettoriali Tabella aggiornata: 52
tabella degli attributi dei dati vettoriali Visualizzazione ed editing della struttura per cancellare una colonna: tasto dx, poi nel menu drop column per aggiungere una colonna: definire nome e tipo nei rispettivi campi es. rinominare label come classe per rinominare una colonna: 53 indicare la colonna da rinominare con il nuovo nome
definire i colori Definizione dei colori i colori sono definiti utilizzando la codifica RGB (Red, Green, Blue) per definire un qualsiasi colore si assegna a ciascuna delle tre componenti un valore compreso tra 0 e 255, dove zero indica assenza del colore e 255 intensità massima il colore sarà definito dalla combinazione delle tre componenti fondamentali Ad esempio: R=0, G=255, B=0 R=255, G=255, B=0 R=127, G=127, B=127 R=127, G=0, B=127 R=0, G=0, B=0 R=255, G=255, B=255 => => => => => => verde giallo grigio magenta nero bianco 54
definire i colori per una carta raster Per associare i colori ad una carta raster è necessario stabilire una relazione tra valori numerici del raster e colori Questa relazione è definita in un file di testo (directory colr/colr2 del mapset) che chiameremo "tabella dei colori" Per costruire la tabella dei colori si può utilizzare strumento Color rules 55
definire i colori per una carta raster Si possono definire degli intervalli di valori e associare i colori agli estremi di questi intervalli carta elevation.dem i colori per i valori intermedi sono calcolati da GRASS interpolando i tre valori RGB associati agli intervalli 56
definire i colori per una carta raster Es. eliminare l'intervallo 1400 m per definire una nuova scala di colori senza l'arancione il tasto preview permette di vedere una anteprima con la nuova tabella dei colori applicata al dato 57
definire i colori per una carta raster Si può definire un colore per ogni valore diverso del raster carta owner (mapset PERMANENT) 58
definire i colori per una carta raster Esempio, modificare i colori di owner: 1 => 144,238,144 e 2 => 255,192,203 in questo caso non può essere modificato il file in colr del mapset PERMANENT viene quindi creato un file in colr2 nel mapset corrente (user1) 59
definire i colori per una carta raster In alternativa, utilizzare direttamente r.colors per avere accesso a tutte le funzionalità del comando http://path_to_man/r.colors.html 60
definire i colori per una carta vettoriale Es. layer rstrct_areas (mapset PERMANENT) aggiungere il layer nel layer manager aprire la scheda delle proprietà del layer (tasto dx sul nome del layer, properties) 61
definire i colori per una carta vettoriale Definire colore bordo: 160 32 240 colore area: 173 216 230 http://path_to_man/d.vect.html 62
definire i colori per una carta vettoriale Se si vogliono definire colori diversi per i diversi elementi di una stessa carta è necessario creare una nuova colonna nella tabella degli attributi che contenga i valori RGB da associare agli elementi vettoriali creare il nuovo attributo GRASSRGB 63
definire i colori per una carta vettoriale Definire le regole per la costruzione della tabella dei colori con lo strumento Color rules Es. per il layer roads definire i seguenti colori in funzione dell'attributo cat 0 => 0,0,0 1 => 255,0,0 2 => 0,255,0 3 => 255,165,0 4 => 30,144,255 5 => 173,216,230 64
definire i colori per una carta vettoriale I nuovi colori del layer roads i nuovi colori sono memorizzati come attributo del layer vettoriale 65
definire i colori per una carta vettoriale Per visualizzare sul map display il layer con i colori così definiti, modificare le proprietà del layer: tasto destro sul nome del layer, selezionare properties indicare di utilizzare la colonna RGB (per default GRASSRGB) per colorare il vettoriale http://path_to_man/d.vect.html 66
definire i colori per una carta vettoriale In alternativa, utilizzare direttamente v.colors per avere accesso a tutte le funzionalità del comando http://path_to_man/v.colors.html 67
il Workspace L'elenco dei layer aggiunti nel layer manager, con le proprietà di visualizzazione associate, può essere salvato in un file e utilizzato in una successiva sessione di lavoro file con estensione gxw 68
navigare la cartografia cancellare il display puntatore pan zoom in zoom out ritorna allo zoom precedente 69
interrogare la cartografia Selezionare i layer che si vogliono interrogare roads e elevation.dem tasto CTRL per fare la selezione multipla Click sul tasto di interrogazione Click sul punto della carta da interrogare 70
interrogare la cartografia raster: comando e risultato vettoriale: comando e risultato http://path_to_man/r.what.html http://path_to_man/v.what.html 71
legenda e barra di scala Per aggiungere dei contenuti descrittivi sovrapposti alla cartografia visualizzata tasto add map elements Quindi selezionare l'oggetto che si vuole aggiungere barra di scala e punti cardinali legenda testo 72
legenda e barra di scala barra di scala e freccia dei punti cardinali http://path_to_man/d.barscale.html 73
legenda e barra di scala legenda 74
legenda e barra di scala legenda Definire la posizione utilizzando l'opzione at o direttamente sul map display cliccando su set size and position http://path_to_man/d.legend.html 75
legenda e barra di scala Risultato 76
stampa dello schermo Nel Map Display, utilizzare il tasto print display impostazioni pagina anteprima stampa 77
link utili Home page GRASS: Home page GRASS Italia: http://grass.osgeo.org http://grass-italia.como.polimi.it/ Tutorial on-line dell'università di Trento: http://www.ing.unitn.it/~grass/docs/tutorial_642/ 78
http://creativecommons.org/licenses/by-nc-nd/3.0/ Versione utilizzata come riferimento nelle dispense: GRASS 6.4.3 79