Universita` degli Studi della Basilicata
 Dipartimento di Ingegneria e Fisica dell'Ambiente (DIFA)




GRASS GIS e l'idrologia




Ing. Margherita Di Leo
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
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”
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.
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).
Percorso di drenaggio
●   La flag -c (copy) copia il valore del DEM nella mappa
    di output:
Percorso di drenaggio
●   La flag -a (accumulate) pone la somma dei valori del
    DEM nella mappa di output:
Percorso di drenaggio
●   La flag -n (number) enumera il percorso delle celle
    nella mappa di output:
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.
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.
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.
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.
Linee di flusso   Linee di flusso




Densita` di
drenaggio



                                         Lunghezza
                                         percorso
Indice topografico

●   r.topidx: Crea
    la mappa
    dell'indice
    topografico,
    [ln(a/tan(beta))]
    utilizzato in
    alcuni modelli
    idrologici.
Indice topografico
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.
Modellazione dei deflussi
Modellazione dei deflussi
                                    Direzioni di
                                    drenaggio MFD




Densita` di
drenaggio MFD
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
Modellazione idrologica
●   r.topmodel :
    Modulo che
    consente di
    applicare il modello
    idrologico
    TOPMODEL
    (Beven, 1995), un
    modello idrologico
    distribuito
    fisicamente basato.
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
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).
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)
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).
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.
Analisi idrologica




r.watershed elevation=elevation@PERMANENT accumulation=accumuli
          drainage=drenaggio streams=fiumi threshold=1000
Analisi idrologica
                                             ●    In “Optional”
                                                 spuntare “use
                                                 positive flow
                                                 accumulation
                                                 even if likely
                                                 underestimated”




r.watershed elevation=elevation@PERMANENT accumulation=accumuli
          drainage=drenaggio streams=fiumi threshold=1000
Analisi idrologica




                                                        fiumi




r.watershed elevation=elevation@PERMANENT accumulation=accumuli
          drainage=drenaggio streams=fiumi threshold=1000
Analisi idrologica


                     drenaggio
Analisi idrologica




                     accumuli
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.
Trasformazione da raster a
        vettoriale


                                            fiumi

                                            fiumi_thin




     r.thin input=fiumi output=fiumi_thin
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
Visualizzazione del vettoriale


Dal Layer
Manager
scegliamo “Add
Vector Layer” e
scegliamo dal
menu a tendina il
file vettoriale
appena creato
(reticolo).
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.
Visualizzazione del vettoriale
Visualizzazione del vettoriale
Visualizzazione del vettoriale
Visualizzazione del vettoriale
Visualizzazione del vettoriale
Visualizzazione del vettoriale
Visualizzazione del vettoriale




         Layers: Lakes, streams
Confronto




Layers: Lakes, streams in blu e reticolo in nero.
Confronto




Layers: Lakes, streams in blu e reticolo in nero, elevation.
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
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
Delimitazione del bacino
●   Carichiamo
    il raster
    cosi`
    ottenuto:
    bacino
Trasformazione da raster a
                   vettoriale
●   Usiamo il
    comando
    r.to.vect
    selezionand
    o la feature
    “area”
Trasformazione da raster a
                   vettoriale
●   Usiamo
    l'opzione
    “smooth
    corners od
    area
    features”
Trasformazione da raster a
                     vettoriale
●   Il risultato finale
    e` la mappa
    vettoriale del
    bacino
    idrografico
    sotteso alla
    sezione di
    chiusura data.
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.
Calcolare il perimetro del bacino
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”.
Calcolare il perimetro del bacino



●   Associamo la
    colonna al layer 1
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.
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”.
Calcolare il perimetro del bacino
Calcolare il perimetro del bacino
Calcolare il perimetro del bacino

●   Nel tab
    “Optional”
    inseriamo l'unita`
    di misura
    “kilometers” e il
    nome della
    colonna da
    popolare:
    “perimetro”.
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.
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”.
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”.
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”.
Calcolare la superficie
Calcolare la superficie
●   Visualizziamo la tabella associata al vettoriale e verifichiamo che il campo
    “superficie” e` stato creato.
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”.
Calcolare la superficie
Calcolare la superficie
Calcolare la superficie

●   Nel tab
    “Optional”
    inseriamo l'unita`
    di misura
    “kilometers” e il
    nome della
    colonna da
    popolare:
    “superficie”.
Calcolare la superficie

●   Consultando
    nuovamente la
    tabella, notiamo
    che la colonna
    della superficie
    e` stata
    aggiornata.
●   La superficie del
    bacino risulta
    essere 60 km2.
License of this document

             This work is licensed under a Creative Commons License.
                         http://creativecommons.org/licenses/by­sa/3.0/
                                       (c) 2011, Margherita Di Leo, Italy
                                      dileomargherita AT gmail DOT com
License details: Attribution­ShareAlike 3.0:
You are free:
  * to Share — to copy, distribute and transmit the work
  * to Remix — to adapt the work
 
Under the following conditions:
  * Attribution — You must attribute the work in the manner specified by the author or licensor (but not 
in any way that suggests that they endorse you or your use of the work).
  *Share Alike — If you alter, transform, or build upon this work, you may distribute the resulting work 
only under the same, similar or a compatible license.

With the understanding that:
  * Waiver — Any of the above conditions can be waived if you get permission from the copyright holder.
  * Other Rights — In no way are any of the following rights affected by the license:
       o Your fair dealing or fair use rights;
       o The author's moral rights;
       o Rights other persons may have either in the work itself or in how the work is used, such as publicity 
or privacy rights.

Lez. 3 - Corso di modelli e GIS per l'ambiente