Marco NegrettiPolitecnico di Milano
e-mail: [email protected]://geomatica.como.polimi.it
GRASS 6.41. introduzione
13/12/2013
2
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
3
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/
4
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, 1982-1995), sezione dell'US Army Corp of Engineers, come strumento per la gestione del territorio e la pianificazione ambientale per scopi militari
5
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
6
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)
7
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/
8
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
9
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/
10
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/
11
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
12
introduzione - i moduli di GRASS
Per usare un comando di GRASS: cercarlo nei menu della GUI
help del comando
nome del comando
definizione dei parametri di esecuzione
linea di comando che sarà eseguita premendo sul tasto
run
13
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 senzautilizzare la GUI– dalla command console– dalla shell
13
14
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
15
introduzione - manuali GRASS è ben documentato I manuali delle varie versioni sono on-line:
✔ http://grass.osgeo.org/documentation/manuals/
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/grass64/manuals/d.rast.html
che più semplicemente, in questa dispensa sarà indicata come:✔ http://path_to_man/d.rast.html
16
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
/home/GRASSDB/GISDBASE
17
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
COMO GENOVA MODENALOCATION
18
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
COMO GENOVA MODENALOCATION
PERMANENT utente01 utente02MAPSET
19
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
20
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
21
struttura dell'archivio - dati raster
I dati di ogni carta raster sono distribuiti su più file residenti in sottodirectory tematiche del mapset
COMOLOCATION
PERMANENT utente01 utente02MAPSET
catscolrcell_misccell cellhdfcell histDATI
22
struttura dell'archivio - dati raster
Esempio✔ gisdbase: GRASSDB
✔ location: spearfish60
✔ mapset: user1
✔ carta raster: elevation.dem
23
struttura dell'archivio - dati raster
directory cell - fcell✔ matrice numerica in formato binario con i dati della
carta– cell => valori interi– fcell => valori in virgola mobile
directory cellhd✔ 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
24
struttura dell'archivio - dati raster
directory cats✔ contiene il file con l'elenco
delle categorie, corredate eventualmente da una descrizione
directory colr/colr2✔ Contiene il file con la tavola dei
colori definiti nel formato RGB:cat:r:g:b
directory hist✔ Contiene il file con
le meta informazioni24
25
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
COMOLOCATION
PERMANENT utente01 utente02MAPSET
dbfvectorDATI
26
struttura dell'archivio - dati vettoriali
Esempio✔ gisdbase: GRASSDB
✔ location: spearfish60
✔ mapset: user1
✔ carta vettoriale: roads
27
struttura dell'archivio - dati vettoriali
file coor, cidx, topo✔ file binari con geometria, indici spaziali e topologia
file head✔ intestazione (header)
file dbln✔ tipo di connessione al database
file hist✔ meta informazioni
28
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
29
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 prontada utilizzare con GRASS
29
30
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– grass64 -tcltk– grass64 -wxpython
per windows (dipende...)✔ Es. QGIS-OSGEO4W package:
In queste dispense si utilizzerà la nuova GUI wxpython
http://path_to_man/grass6.html
31
utilizzare GRASS con i dati di demo spearfish
Avviare GRASS e indicare GISDBASE, LOCATION eMAPSET:
GISDBASEdipende da dove si è estratta la location spearfish
LOCATIONscegliere spearfish60
MAPSETscegliere user1
avviare GRASS 31
32
utilizzare GRASS con i dati di demo spearfish
layer manager- proprietà layer- gestione dell'archivio- accesso ai comandi di GRASS- console
map displayfinestra di visualizzazione
http://path_to_man/wxGUI.html
La GUI wxpython:
33
utilizzare GRASS con i dati di demo spearfish
Il terminale:
34
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
35
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
36
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
37
gestione dell'archivio - alcuni esempi
✔ nel mapsetuser1
✔ nel mapsetPERMENENT
Vedere quali dati ci sono nell'archivio
raster
vettoriali
38
gestione dell'archivio - alcuni esempi
Provare da linea di comando a lanciare i seguenti comandi:✔ g.copy rast=slope@PERMANENT,slope
vect=railroads,railroads– copia slope e railroad dal mapset PERMANENT a quello
corrente✔ 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
– 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
39
visualizzare i dati - raster
selezionare elevation.dem
mapset
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
40
visualizzare i dati - raster
Per aggiornare il Map Display con i nuovi layer aggiunti nel Layer Manager
http://path_to_man/d.rast.html
Selezionare render per avere l'aggiornamento
automatico dei contenuti
41
visualizzare i dati - vettoriali
si ottiene l'elenco di tutte le carte vettoriali del mapset corrente e di tutti quelli ai
quali si ha accesso in lettura
per aggiungere un layer di tipo vettoriale
selezionare roads
mapset
42
visualizzare i dati - vettoriali
Per aggiornare il Map Display con i nuovi layer aggiunti nel Layer Manager
http://path_to_man/d.vect.html
43
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
44
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
45
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”
46
tabella degli attributi dei dati vettoriali
Visualizzare i parametri della connessione corrente
– db.connect
http://path_to_man/db.connect.html
47
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
48
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
49
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
50
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...
51
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"
52
tabella degli attributi dei dati vettoriali
Tabella aggiornata:
53
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
per rinominare una colonna:indicare la colonna da rinominare con il nuovo nome
es. rinominare label come classe
54
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 => verde– R=255, G=255, B=0 => giallo– R=127, G=127, B=127 => grigio– R=127, G=0, B=127 => magenta– R=0, G=0, B=0 => nero– R=255, G=255, B=255 => bianco
55
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”
56
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
57
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
58
definire i colori per una carta raster
Si può definire un colore per ogni valore diverso del raster
– carta owner(mapset PERMANENT)
59
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)
60
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
61
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 nomedel layer, properties)
62
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
63
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 elementivettoriali
✔ creare il nuovo attributo GRASSRGB
64
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
65
definire i colori per una carta vettoriale
I nuovi colori del layer roads✔ i nuovi colori sono memorizzati come attributo del
layer vettoriale
66
definire i colori per una carta vettoriale
Per visualizzare sul map display il layer con i colori così definiti, modificare le proprietà del layer:
http://path_to_man/d.vect.html
✔ tasto destro sul nome del layer, selezionare properties
✔ indicare di utilizzare la colonna RGB (per default GRASSRGB) per colorare il vettoriale
67
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
68
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
69
navigare la cartografia
✔ cancellare il display
✔ puntatore
✔ pan
✔ zoom in
✔ zoom out
✔ ritorna allo zoom precedente
70
interrogare la cartografia
Selezionare i layer che si vogliono interrogare✔ roads e elevation.dem
✔ tasto CTRL perfare la selezione multipla
Click sul tasto di interrogazione
Click sul punto della carta da interrogare
71
interrogare la cartografia
raster: comandoe risultato
vettoriale: comandoe risultato
http://path_to_man/r.what.html http://path_to_man/v.what.html
72
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
73
legenda e barra di scala
✔ barra di scala e freccia dei punti cardinali
http://path_to_man/d.barscale.html
74
legenda e barra di scala
✔ legenda
75
legenda e barra di scala
✔ legenda
http://path_to_man/d.legend.html
Definire la posizione utilizzando l'opzione at o direttamente sul map display cliccando su set size and position
76
legenda e barra di scala
Risultato
77
impostazioni pagina
stampa dello schermo
Nel Map Display, utilizzare il tasto“print display”
anteprima
stampa
78
link utili
Home page GRASS:✔ http://grass.osgeo.org
Home page GRASS Italia:✔ http://grass-italia.como.polimi.it/
Tutorial on-line dell'Università di Trento:✔ http://www.ing.unitn.it/~grass/docs/tutorial_642/
79
http://creativecommons.org/licenses/by-nc-nd/3.0/
Versione utilizzata come riferimento nelle dispense:GRASS 6.4.3
Top Related