Le forme allotropiche del C-Palestini e Pancia.docx
Lez. 3 - Corso di modelli e GIS per l'ambiente
1. Universita` degli Studi della Basilicata
Dipartimento di Ingegneria e Fisica dell'Ambiente (DIFA)
GRASS GIS e l'idrologia
Ing. Margherita Di Leo
2. Introduzione
● In GRASS GIS sono implementati numerosi
moduli utili alla modellazione idrologica.
● Qui [1] sono riportati alcuni esempi.
[1] http://grass.osgeo.org/wiki/Hydrological_Sciences
3. Carving
● r.carve: Prende in input i fiumi digitalizzati e li utilizza per
“correggere” il DEM abbassando la quota nei punti in cui il
reticolo di calcolo non coincide con quello naturale.
Input: DEM
Input: fiumi (vettoriale)
Output: DEM “corretto”
4. Carving
● Opzione “no flat areas”:
Elimina le aree piane
nella direzione del
flusso.
● Opzione “points”:
l'output generato e` in
formato vettoriale. I
punti possono essere
utilizzati per
reinterpolare il DEM per
correggere gli errori.
● E` possibile indicare
inoltre la larghezza e la
profondita` del corso
d'acqua.
5. Percorso di drenaggio
● r.drain: Traccia il percorso del flusso attraverso il DEM utilizzando un
algoritmo di least-cost path (ovvero ricerca il percorso di “costo” inferiore).
La mappa di input puo` essere una mappa dei costi cumulativi generata da
r.cost. L'output e` un raster che mostra uno o piu` percorsi che
minimizzano il costo. Di default l'output e` una mappa che riporta 1 lungo il
percorso e null data altrove.
● In pratica cerca il percorso con i valori minimi a partire da un punto dato
dall'utente (nell'esempio e` 19).
7. Percorso di drenaggio
● La flag -a (accumulate) pone la somma dei valori del
DEM nella mappa di output:
8. Percorso di drenaggio
● La flag -n (number) enumera il percorso delle celle
nella mappa di output:
9. Percorso di drenaggio
● NOTA: r.drain non trova TUTTI i valori piu` bassi
del DEM, ma solo quelli collegati al punto di
partenza indicato dall'utente.
● In pratica indica i “pits” che si incontrano lungo il
percorso, non trova invece tutti i “buchi” del DEM.
● Per correggere i “buchi” del DEM si possono usare
invece:
r.fill.dir, r.terraflow, e r.basins.fill.
10. Filling
● r.fillnulls: Colma le aree in cui sono presenti dati
nulli (no data) interpolando i valori mancanti con un
algoritmo RST (Regularized Splines with Tension).
● E` possibile
controllare il
risultato
modificando i
parametri smooth
e tension, che
vengono utilizzati
nell'interpolazione.
11. Filling
● r.fill.dir: Applica
un filtro e genera
una mappa di
elevazione priva
di depressioni
(sinks), e inoltre
genera la mappa
delle direzioni di
drenaggio a
partire dal DEM.
12. Linee di flusso
● r.flow: Costruisce
le linee di flusso
(flowlines), le
lunghezze delle
linee di flusso
(flowpath
lengths), e la
densita` di
drenaggio
(upslope areas)
a partire da un
DEM.
13. Linee di flusso Linee di flusso
Densita` di
drenaggio
Lunghezza
percorso
14. Indice topografico
● r.topidx: Crea
la mappa
dell'indice
topografico,
[ln(a/tan(beta))]
utilizzato in
alcuni modelli
idrologici.
16. Modellazione dei deflussi
● r.terraflow: Calcola il DEM filled (privo di
depressioni), la mappa delle direzioni di drenaggio, la
densita` di drenaggio, l'indice topografico. Puo`
utilizzare l'algoritmo D8 (single flow direction, SFD) o
l'algoritmo MFD (multiple flow direction), che e`
impostato di default.
19. Deflussi profondi
● r.gwflow : Modulo per il calcolo numerico del flusso
transiente in acquiferi confinati e non confinati,
bidimensionale.
● r3.gwflow :
Modulo per il
calcolo
numerico del
flusso
transiente in
acquiferi
confinati e
non confinati,
in 3D
Immagine tratta dal manuale online di GRASS
20. Modellazione idrologica
● r.topmodel :
Modulo che
consente di
applicare il modello
idrologico
TOPMODEL
(Beven, 1995), un
modello idrologico
distribuito
fisicamente basato.
21. Erosione
● r.sim.sediment: Simulazione del trasporto dei
sedimenti e dell'erosione/deposito;
● r.sim.water: Simulazione idrologica dell'overland
flow.
7.7
Nella figura e` riportata una 5.5
mappa della portata
generata con il modulo
r.sim.water, che simula 3.7
l'overland flow utilizzando il
path sampling method
(SIMWE) con un rainfall 1.8
excess rate di 50 mm/hr.
0.0
22. Analisi di bacino
● r.basin.fill: Genera una mappa raster con
l'individuazione dei sottobacini.
● r.water.outlet: Delimita il bacino idrografico sotteso ad
una determinata sezione di chiusura (vedi esercitazione).
● r.watershed: Analisi di bacino (vedi esercitazione).
● r.lake: “Allaga” un
DEM a partire da un
determinato punto.
(vedi figura a lato).
23. Esercitazione
● L'obiettivo di questa esercitazione e` di estrarre il
reticolo idrografico di una certa regione, e inoltre di
voler delimitare il bacino idrografico sotteso alla
sezione di chiusura di coordinate:
easting=643677.87 northing=222800.246
(Lambert Conformal Conic)
24. Analisi idrologica
● r.watershed
permette di ricavare a
partire dal DEM la
mappa della direzione
Input: elevation@PERMANENT
di drenaggio, la mappa
di densita` drenaggio,
la mappa raster del
reticolo idrografico,
data una certa
SOGLIA.
● Possiamo scegliere di
usare MFD o SFD. Di
default e` impostato
SFD (D8).
25. Analisi idrologica
● La soglia e` il
numero di celle
della mappa
della densita` di
drenaggio, che
discrimina fra
Soglia
versante e
canale.
● In questo caso
mettiamo 1000.
31. Trasformazione da raster a
vettoriale
● Per trasformare un raster in vettoriale (linee)
dobbiamo innanzitutto correggere il raster di
partenza.
● Infatti gli elementi lineari presenti nel raster devono
avere spessore di una sola cella, eventuali spessori
diversi provocherebbero errori nella generazione del
file vettoriale.
● Questa operazione si esegue con il comando r.thin.
33. Trasformazione da raster a
vettoriale
La trasformazione fiumi_thin
da raster a reticolo
vettoriale si
esegue con il
comando Feature: line
r.to.vect.
r.to.vect input=fiumi_thin output=reticolo feature=line
34. Visualizzazione del vettoriale
Dal Layer
Manager
scegliamo “Add
Vector Layer” e
scegliamo dal
menu a tendina il
file vettoriale
appena creato
(reticolo).
35. Visualizzazione del vettoriale
Possiamo confrontare il reticolo cosi` ottenuto con i fiumi
digitalizzati.
Dal Layer Manager scegliamo “Add Vector Layer” e
scegliamo dal menu a tendina il file vettoriale streams.
Aggiungiamo anche il file verroriale lakes, che
rappresenta i laghi, con la stessa procedura.
Caricando le due mappe, assegnamo loro un colore
differente dal nero per distinguerle, dal tab “colors”
scegliamo il colore blu.
45. Delimitazione del bacino
● Per delimitare il
bacino
idrografico,
utilizziamo il
comando
r.water.outlet,
che apriamo
come al solito
dalla command
console.
r.water.outlet drainage=drenaggio basin=bacino easting=643677.87
northing=222800.246
46. Delimitazione del bacino
● r.water.outlet
prende in iput la
mappa delle direzioni
di drenaggio (che
abbiamo chiamato
drenaggio), il nome
della mappa che
vogliamo creare
(bacino), e le
coordinate
easting=643677.87
northing=222800.246
r.water.outlet drainage=drenaggio basin=bacino easting=643677.87
northing=222800.246
50. Trasformazione da raster a
vettoriale
● Il risultato finale
e` la mappa
vettoriale del
bacino
idrografico
sotteso alla
sezione di
chiusura data.
51. Calcolare il perimetro del bacino
● Per calcolare il
perimetro,
aggiungiamo una
colonna alla
tabella associata
al vettoriale.
● Per consultare la
tabella, cliccare:
Show attribute
table.
53. Calcolare il perimetro del bacino
● Per aggiungere una
colonna alla tabella
associata al
vettoriale “bacino”,
usiamo
v.db.addcol.
● Indichiamo il nome
della nuova colonna
“perimetro” e il tipo
di dato che
conterra` “double
precision”.
55. Calcolare il perimetro del bacino
● Controlliamo la
tabella: la
colonna
“perimetro” e`
stata aggiunta.
● Ora dobbiamo
popolare la
nuova colonna
con i valori del
perimetro.
56. Calcolare il perimetro del bacino
● Per popolare la
colonna, usiamo
v.to.db.
● Nel tab
“Required”
inseriamo il
nome della
mappa cui e`
associata la
tabella: “bacino”,
e scegliamo il
valore da
aggiornare:
“perimeter”.
59. Calcolare il perimetro del bacino
● Nel tab
“Optional”
inseriamo l'unita`
di misura
“kilometers” e il
nome della
colonna da
popolare:
“perimetro”.
60. Calcolare il perimetro del bacino
● Consultando
nuovamente la
tabella, notiamo
che la colonna
del perimetro e`
stata aggiornata.
● Il perimetro del
bacino risulta
essere 54 km.
61. Misurare la distanza
● Per verificare che il valore ottenuto e` giusto, possiamo verificarne
almeno l'ordine di grandezza misurandolo direttamente sulla mappa.
● Da “Analyze map” selezioniamo “Measure distance”.
62. Misurare la distanza
● Per verificare che il valore ottenuto e` giusto, possiamo verificarne
almeno l'ordine di grandezza misurandolo direttamente sulla mappa.
● Da “Analyze map” selezioniamo “Measure distance”.
63. Calcolare la superficie
● Similmente al calcolo del perimetro, per il calcolo dell'area usiamo di
nuovo v.db.addcol e poi v.to.db.
● v.db.addcol.
● Indichiamo il nome
della nuova colonna
“superficie” e il tipo
di dato che
conterra` “double
precision”.
65. Calcolare la superficie
● Visualizziamo la tabella associata al vettoriale e verifichiamo che il campo
“superficie” e` stato creato.
66. Calcolare la superficie
● Per popolare la
colonna, usiamo
v.to.db.
● Nel tab
“Required”
inseriamo il
nome della
mappa cui e`
associata la
tabella: “bacino”,
e scegliamo il
valore da
aggiornare:
“area”.
69. Calcolare la superficie
● Nel tab
“Optional”
inseriamo l'unita`
di misura
“kilometers” e il
nome della
colonna da
popolare:
“superficie”.
70. Calcolare la superficie
● Consultando
nuovamente la
tabella, notiamo
che la colonna
della superficie
e` stata
aggiornata.
● La superficie del
bacino risulta
essere 60 km2.