1. Universita` degli Studi della Basilicata
Dipartimento di Ingegneria e Fisica dell'Ambiente (DIFA)
GRASS GIS: Primi passi e
operazioni sui raster
Ing. Margherita Di Leo
3. Avvio del programma
● Avviare il
programma dal
launcher;
● Sfogliare la cartella
grass data;
4. Avvio del programma
● Avviare il
programma dal
launcher;
● Sfogliare la cartella
grass data;
● Scegliere la
location North
Carolina;
5. Avvio del programma
● Avviare il
programma dal
launcher;
● Sfogliare la cartella
grass data;
● Scegliere la
location North
Carolina;
● Scegliere il mapset
user1;
6. Avvio del programma
● Avviare il
programma dal
launcher;
● Sfogliare la cartella
grass data;
● Scegliere la
location North
Carolina;
● Scegliere il mapset
user1;
● Avvio.
8. Impostare la regione
● La prima volta che si usa GRASS e`
importante impostare la regione
computazionale.
● Tutte le elaborazioni successive vengono
effettuate sulla regione computazionale
prescelta.
● La regione (estensione e risoluzione) si
imposta con il comando g.region.
9. Impostare la regione
● Digitando g.region
nella command
console e premendo
invio, si manifesta
l'interfaccia grafica del
comando.
●Nel tab Existing e`
possibile impostare la
regione sulla base di
una regione esistente
salvata
precedentemente
oppure su un file
esistente.
10. Impostare la regione
● Nel tab Bounds e`
possibile impostare la
regione indicando i
limiti precisi.
12. Impostare la regione
●Nel tab Effects e`
possibile salvare la
regione corrente
(regione di
visualizzazione) con
un nome, in modo da
poterla
successivamente
richiamare.
13. Impostare la regione
●Nel tab Print e`
possibile spuntare le
varie opzioni di cio`
che desideriamo
venga stampato a
schermo.
14. Impostare la regione
●Per il nostro progetto,
impostiamo come
regione
computazionale la
risoluzione ed
estensione del raster
elevation.
g.region -ap rast=elevation@PERMANENT
15. Visualizzare il contenuto del mapset
● Vogliamo vedere cosa e` contenuto nel
dataset di esempio. Il comando che si usa allo
scopo e` g.list.
● La sintassi e`:
g.list type=tipo1[,tipo2,...]
● Ad esempio:
g.list type=rast,vect
elenchera` tutti i raster e i vettoriali presenti nel
mapset, mentre:
g.list type=rast3d
dira` che non e` presente alcun raster3d.
18. Informazioni su una mappa raster
r.info
r.info –help
r.info rast=elevation@PERMANENT
19. Informazioni su una mappa raster
r.info da informazioni
sulla mappa raster: titolo,
tipo di dato, righe,
colonne, numero di celle,
proiezione, estensione,
risoluzione, intervallo
dei valori, informazioni
sulla provenienza (come
e` stata generata e da
chi).
r.info
r.info –help
r.info rast=elevation@PERMANENT
20. Interrogare una mappa raster
Query raster/vector map(s)
r.what restituisce il valore della mappa nel punto selezionato.
Utile per individuare le coordinate della sezione di chiusura!
21. Interrogare piu` mappe raster
● r.what puo` essere utilizzato da display oppure da linea di
comando, come in generale tutti i comandi di GRASS.
● Utilizzarlo da linea di comando e` utile quando, note le coordinate,
vogliamo conoscere i valori di una o piu` mappe raster in quel
dato punto.
● Per fare un esempio, consideriamo la mappa raster landclass96.
● Interroghiamo con il comando r.what entrambe le mappe
contemporaneamente, per conoscere il valore di entrambe le
mappe nella posizione considerata:
r.what input=elevation,landclass96
east_north=636889.830508,222716.101695
● La risposta e`:
636889.830508|222716.101695||98.26356|5
ovvero: east | north || elevation | landclass96
22. Suggerimenti
● Per interrogare la mappa landclass96, utilizzando
la linea di comando, non e` necessario caricare la
mappa nel layer tree!
● L'uso della linea di comando velocizza il lavoro;
● Per dubbi sulla sintassi dei comandi da riga di
comando e` sempre possibile farli seguire da:
--help
23. Generare report e statistiche
r.report fornisce le seguenti informazioni:
● Location in cui stiamo lavorando;
● Limiti n-s e-o della mappa;
● Risoluzione della mappa n-s e-o;
● Eventuale presenza della mask;
● Descrizione delle categorie presenti nella mappa;
● Estensione delle varie categorie nell'unita` di
misura scelta dall'utente.
24. Generare report e statistiche
r.report map=name[,name,...][units=string[,string,...]]
[output=name][nsteps=value]
● Units: Le unita` possono essere: mi,me,k,a,h,c,p
(mi: miglia, me: metri, k: chilometri, a: acri, h: ettari, c: numero di
celle, p: percentuale);
● Output: Nome del file di output;
● Nsteps: Numero di intervalli (default: 255). Ha senso per
mappe con valori continui, come elevazione, pendenza, ecc.
26. Generare report e statistiche
r.univar serve per riportare le statistiche univariate
dell'intervallo di dati della mappa:
● Numero di celle;
● Minimo e massimo valore delle celle;
● Intervallo;
● Media aritmetica;
● Varianza della popolazione;
● Deviazione standard
● Coefficiente di variazione.
● Con la flag -e vengono calcolati anche: primo quartile,
secondo quartile (mediana), terzo quartile e percentile
dato.
28. Riclassificazione
r.reclass serve per
aggregare delle categorie a
partire da una mappa raster.
Consideriamo ad esempio la
mappa landclass96.
Utilizzando r.report su tale
mappa otteniamo le categorie
riportate a lato.
Procediamo alla
riclassificazione creando un
file di testo sul nostro
Desktop (utilizziamo
WordPad).
Il file di testo, denominato
“regole.txt”, conterra` le
regole per la riclassificazione.
r.report map=landclass96
29. Riclassificazione
Supponiamo di voler aggregare tutte le categorie che rappresentano la
copertura vegetale non di origine agricola.
Per costruire il file delle regole:
vecchio_valore = nuovo_valore etichetta
Il file regole.txt sara` fatto cosi`:
1 = 1 developed
2 = 2 agriculture
3 = 3 vegetazione
4 = 3 vegetazione
5 = 3 vegetazione
6 = 4 water
7 = 5 sediment
Salviamo il file regole.txt sul Desktop.
30. Riclassificazione
Ora siamo pronti a
riclassificare la
mappa landclass96.
Digitiamo nel
command console
r.reclass e diamo
invio. Si aprira`
l'interfaccia grafica.
Inseriamo in input:
landclass96 e in
output
landclass_riclassificata.
33. Riclassificazione
IMPORTANTE: La riclassificazione NON crea una
nuova mappa, ma crea soltanto un file di riclassificazione
che viene conservato in una cartella del mapset di GRASS.
Per generare un file raster riclassificato, e` necessario
ricorrere alla map algebra. Nel terminale, digitiamo:
r.mapcalc “nuova_landclass = landclass_riclassificata”
● NOTA: Osservando bene “landclass_riclassificata” e
“nuova_landclass”, si puo` notare che hanno risoluzione
diversa. Perche`? (Consiglio per la risposta: usare r.info e
ricordare cio` che e` stato detto riguardo la regione
computazionale e g.region!)
34. Esercitazione
Supponiamo di voler creare una mappa di localizzazione
probabile di reperti archeologici appartenenti ad una antica
popolazione.
● Si ipotizza che tale popolazione costruisse i propri villaggi
ad una quota inferiore a 100 m s.l.m., ad una distanza
entro i 200 m dai corsi d'acqua, in territori con
esposizione da sud-est a sud-ovest e pendenza
compresa tra 0 e 25 gradi.
● Solo i terreni con superficie superiore a 1 ettaro saranno
poi selezionati, poiché le aree con superfici inferiori non
possono permettere lo sviluppo di un villaggio.
35. Creazione di un buffer
Ricaviamo prima
di tutto la mappa
dei punti che si
trovano ad una
distanza entro i
200 m dai corsi
d'acqua.
Utilizziamo il
comando
r.buffer.
r.buffer input=streams_derived@PERMANENT
output=fiumi_buffer distances=200 units=meters
36. Creazione di un buffer
Il risultato è una
mappa in cui hanno
valore 1 le celle
contenenti i fiumi,
valore 2 le celle
distanti fino a 200
metri da essi e * le
altre.
[* questo simbolo
indica i null data, e si
gestisce con il
comando r.null]
r.buffer input=streams_derived@PERMANENT
output=fiumi_buffer distances=200 units=meters
37. Map algebra
Vogliamo ricavare la mappa delle aree con quota non superiore a 100 m
s.l.m. Nel TERMINALE inseriamo il comando:
r.mapcalc "fino_a_100=if(elevation<=100,1,0)"
38. Map algebra
Il risultato e` una
mappa binaria,
con valore 1 dove
la quota e` minore
o uguale a 100, e
valore 0 altrove.
r.mapcalc "fino_a_100=if(elevation<=100,1,0)"
39. Map algebra
Cerchiamo ora le aree con esposizione a sud-est, sud e sud-
ovest. La convenzione delle direzioni in GRASS e` la seguente:
I valori della mappa
dell'esposizione (aspect)
che ci interessano sono
dunque:
>=225 & <=315
Tradotto in map algebra, si
scrive:
r.mapcalc
"buona_esposizione=if(aspe
ct>=225&&aspect<=315,1,0)"
42. Map algebra
NOTA: la map algebra ha anche un'interfaccia grafica, per chi la preferisce.
43. Map algebra
Calcoliamo ora la mappa delle aree con pendenza non superiore a 25
gradi, usiamo la mappa slope presente nel dataset, e impostiamo la
condizione con la solita map algebra, scrivendo nel terminale:
r.mapcalc "buona_pendenza=if(slope<=25,1,0)"
44. Map algebra
Mappa delle aree con
pendenza non
superiore a 25
gradi.
r.mapcalc "buona_pendenza=if(slope<=25,1,0)"
45. Map algebra
Calcoliamo infine la mappa di intersezione di tutte le condizioni richieste
(si ricorda che l'intersezione corrisponde all'operatore AND (&),
mentre l'unione corrisponde all'operatore OR(|)):
r.mapcalc "intersezione = if( ( fiumi_buffer == 2 &&
fino_a_100 == 1 && buona_esposizione == 1 && buona_pendenza ==
1 ), 1, null() )"
46. Map algebra
La mappa di intersezione di tutte le condizioni richieste:
r.mapcalc "intersezione = if( ( fiumi_buffer == 2 &&
fino_a_100 == 1 && buona_esposizione == 1 && buona_pendenza ==
1 ), 1, null() )"
47. Riclassificazione in base all'area
Come ultimo step,
dobbiamo eliminare tutte
le aree che risultano
inferiori ad un ettaro. Per
fare cio` utilizziamo il
comando r.reclass.area.
Digitiamolo della
command console, e
nell'interfaccia grafica
inseriamo i parametri
richiesti:
r.reclass.area input=intersezione output=intersezione_max_ettaro
greater=1
48. Riclassificazione in base all'area
Nel tab “Optional”
inseriamo la condizione
che le aree debbano
essere superiori ad 1
ettaro:
r.reclass.area input=intersezione output=intersezione_max_ettaro
greater=1
49. Risultato
Et voila`!
La mappa
intersezione_max_ettaro
rappresenta il risultato
della nostra esercitazione.