La seconda guerra mondiale per licei e scuole medie
P horton machine - Slides usate a lezione
1. Analisi Idro-Geomorfologica con i
JGrasstools e le Horton Machine
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
2. “Free Software . . . you should
think of ‘free’ as in ‘free speech’,
not as in ‘free beer’. ”
Richard Stallman
1
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
3. Le Horton Machine
Le Horton Machine sono un pacchetto sviluppato con l’obbiettivo di
fornire degli strumenti quantitativi e qualitativi per indagare la
morfologia di un bacino idrografico.
¯ Analisi Geomorfologica
L’obbiettivo è analizzare i processi di erosione dei canali fluviali e la
possibilità di innesco di frane superficiali.
Questo viene fatto considerando che i processi geomorfologici principali
in un bacino siano:
Erosione diffusiva dei pendii
Processi di incisione da parte dei canali
Trasporto dei sedimenti nei canali
Frane
2
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
4. Le Horton Machine
Le Horton Machine sono un pacchetto sviluppato con l’obbiettivo di
fornire degli strumenti quantitativi e qualitativi per indagare la
morfologia di un bacino idrografico.
¯ Analisi Geomorfologica
L’obbiettivo è analizzare i processi di erosione dei canali fluviali e la
possibilità di innesco di frane superficiali.
Questo viene fatto considerando che i processi geomorfologici principali
in un bacino siano:
Erosione diffusiva dei pendii
Processi di incisione da parte dei canali
Trasporto dei sedimenti nei canali
Frane
2
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
5. Le Horton Machine
I comandi delle Horton
Machine sono stati
suddisi in 7 categorie:
Analisi del reticolo idrografico
¯ Network
Analisi relative al bacino
¯ Hydro-Geomorphology
Indici idro-geomorfologici
¯ Basin
Attributi del bacino
¯ Geomorphology
Analisi dei versanti
¯ Hillslope
Manipolazione dei DEM
¯ DEM Manipulation
Statistiche
¯ Statistics 3
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
6. Le Horton Machine
Analisi del reticolo
idrografico
¯ Network
Comandi che permettono di
determinare alcune
proprietà del reticolo
idrografico.
4
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
7. Le Horton Machine
Analisi relative al bacino
¯ Hydro-Geomorphology
Comandi che permettono di svolgere
analisi di un bacino idrografico.
Indici idro-geomorfologici
¯ Basin
Comandi che permettono di determinare
alcuni indici relativi al bacino idrografico.
5
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
8. Le Horton Machine
Attributi del bacino
¯ Geomorphology
Comandi che permettono di calcolare
alcuni attributi del bacino quali pendenza,
direzioni di drenaggio, aree contribuenti.
Analisi dei versanti
¯ Hillslope
Comandi che permettono di calcolare
alcune caratteristiche dei versanti del
bacino e di determinare una classificazione
in base alle loro proprietà morfologiche.
6
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
9. Le Horton Machine
Manipolazione dei DEM
¯ DEM Manipulation
Comandi che permettono di svolgere
analisi preliminari sui modelli digitali del
terreno.
Statistiche
¯ Statistics
Comandi che permettono di condurre
alcune analisi statistiche sui bacini.
7
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
10. La morfologia
La topografia è rappresentata mediante una funzione continua
bivariata z = f (x, y) e con le sue derivate fino al secondo ordine.
8
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
11. Modelli Digitali del Terreno
La forma più comune ed efficiente di
rappresentare un Modello Digitale del
Terreno (D.T.M.) è mediante una griglia
quadrata di dati.
Ipotesi:
valori significativi
griglia quadrata regolare
topografia ad 8 direzioni
I dati in questa forma,
chiamata raster,
rappresentano la coordinata
verticale z per una serie di
punti successivi lungo un
determinato profilo spaziale.
9
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
12. Operazioni preliminari
Prima di poter operare sul DTM con i comandi delle Horton Machine
è necessario:
1 creare l’ambiente di lavoro location
2 assicurarsi di lavorare di lavorare all’interno della location in
formato GRASS,
¯ generalmente il DTM è in formato raster ascii, come un .asc
¯ assicurarsi di trattarlo in modo da prendere in input il file
.asc (con associato .prj) e settare l’output
all’interno della location (cartella cell)
Dopodichè l’obbiettivo principale è quello di estrarre il bacino
d’interesse, sono necessarie alcune elaborazioni del dtm di partenza:
5 Riempimento delle depressioni Pitfiller
6 Calcolo delle direzioni di drenaggio Flowdirection/Draindir
7 Estrazione del reticolo idrografico ExtractNetwork
8 Estrazione del bacino idrografico Wateroutlet
10
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
13. Operazioni preliminari
Prima di poter operare sul DTM con i comandi delle Horton Machine
è necessario:
1 creare l’ambiente di lavoro location
2 assicurarsi di lavorare di lavorare all’interno della location in
formato GRASS,
¯ generalmente il DTM è in formato raster ascii, come un .asc
¯ assicurarsi di trattarlo in modo da prendere in input il file
.asc (con associato .prj) e settare l’output
all’interno della location (cartella cell)
Dopodichè l’obbiettivo principale è quello di estrarre il bacino
d’interesse, sono necessarie alcune elaborazioni del dtm di partenza:
5 Riempimento delle depressioni Pitfiller
6 Calcolo delle direzioni di drenaggio Flowdirection/Draindir
7 Estrazione del reticolo idrografico ExtractNetwork
8 Estrazione del bacino idrografico Wateroutlet
10
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
14. Operazioni preliminari: Pitfiller
La prima operazione da fare è riempire i punti di depressione presenti
nel dtm in modo da poter poi definire univocamente le direzioni di
drenaggio in ogni punto.
Il comando che si utilizza per questo sfrutta l’algoritmo di Tarboton.
¯ Dem Manipulation -> Pitfiller
Analisi a riguardo di questo argomento hanno dimostrato che questa
elaborazione riguarda meno dell’1% dei punti e
generalmente questi punti di depressione
provengono da errori di calcolo nella fase di creazione del dtm.
¯ Generalmente non si tratta di reali depressioni
11
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
15. Operazioni preliminari: Pitfiller
La prima operazione da fare è riempire i punti di depressione presenti
nel dtm in modo da poter poi definire univocamente le direzioni di
drenaggio in ogni punto.
Il comando che si utilizza per questo sfrutta l’algoritmo di Tarboton.
¯ Dem Manipulation -> Pitfiller
Analisi a riguardo di questo argomento hanno dimostrato che questa
elaborazione riguarda meno dell’1% dei punti e
generalmente questi punti di depressione
provengono da errori di calcolo nella fase di creazione del dtm.
¯ Generalmente non si tratta di reali depressioni
11
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
16. Operazioni preliminari: Pitfiller
La prima operazione da fare è riempire i punti di depressione presenti
nel dtm in modo da poter poi definire univocamente le direzioni di
drenaggio in ogni punto.
Il comando che si utilizza per questo sfrutta l’algoritmo di Tarboton.
¯ Dem Manipulation -> Pitfiller
Analisi a riguardo di questo argomento hanno dimostrato che questa
elaborazione riguarda meno dell’1% dei punti e
generalmente questi punti di depressione
provengono da errori di calcolo nella fase di creazione del dtm.
¯ Generalmente non si tratta di reali depressioni
11
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
17. Pitfiller: utilizzo del comando
Per far girare questo comando,
come tutti gli altri comandi, è
necessario definire gli inputs e gli
outputs negli appositi tab posti in
fondo alla finestra degli Spatial
Toolbox.
Si può vedere che è inoltre presente
un terzo tab contenente una rapida
descrizione del comando, degli
inputs necessari, degli outputs
forniti e delle sintassi per utilizzare
il comando in uno script.
12
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
18. Pitfiller: utilizzo del comando
Per far girare questo comando,
come tutti gli altri comandi, è
necessario definire gli inputs e gli
outputs negli appositi tab posti in
fondo alla finestra degli Spatial
Toolbox.
Si può vedere che è inoltre presente
un terzo tab contenente una rapida
descrizione del comando, degli
inputs necessari, degli outputs
forniti e delle sintassi per utilizzare
il comando in uno script.
12
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
19. Pitfiller: inputs
L’input necessario per questo
comando è il dtm stesso.
Per fornire una mappa bisogna
cliccare sull’apposito bottone ...
accanto al nome della mappa
richiesta nel tab inputs.
Si aprirà così una finestra di input
per indicare dove è collocata la
mappa, quindi il suo path.
13
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
20. Pitfiller: inputs
L’input necessario per questo
comando è il dtm stesso.
Per fornire una mappa bisogna
cliccare sull’apposito bottone ...
accanto al nome della mappa
richiesta nel tab inputs.
Si aprirà così una finestra di input
per indicare dove è collocata la
mappa, quindi il suo path.
13
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
21. Pitfiller: inputs
L’input necessario per questo
comando è il dtm stesso.
Per fornire una mappa bisogna
cliccare sull’apposito bottone ...
accanto al nome della mappa
richiesta nel tab inputs.
Si aprirà così una finestra di input
per indicare dove è collocata la
mappa, quindi il suo path.
13
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
22. Pitfiller: inputs
Lavorando all’interno di una
location GRASS/JGrass per fornire
in input una mappa è necessario
indicare il percorso del file
corrispondente alla mappa nella
cartella cell contenuta nella
location.
Questo si può agevolmente
identificare mediante la finestra di
navigazione dei files che compare
cliccando sul pulsante ... accanto
al campo dedicato al path.
14
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
23. Pitfiller: output
Successivamente è necessario
indicare le opzioni di output da
inserire nel tab output.
L’output di questo comando, co-
me di molti comandi dei JGras-
stools, è la mappa
elaborata dal comando stesso.
‘E quindi necessario indicare nella
finestra di output che si apre
cliccando sul bottone ... il nome
della mappa di output ed il
percorso dove salvarla.
15
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
24. Pitfiller: output
Inoltre lavorando all’interno di una
location il percorso di salvataggio
da indicare dovrà essere sempre la
cartella cell all’interno della
location stessa.
Questo percorso può essere sempre
agevolmente identificato mediante
la finestra di navigazione dei files
che compare cliccando sul pulsante
... accanto al campo dedicato al
path.
Il nome con cui salvare la mappa di
output del comando può invece
essere inserito nell’apposito campo
senza scrivere nessuna estensione.
16
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
25. Pitfiller: ASCII input & output
Se invece che lavorare in una location GRASS/JGrass si vuole lavorare
in formato ESRI ASCII le mappe sono dei semplici file .asc.
Nella selezione dell’input è
sufficiente selezionare il file .asc
corrispondente alla mappa, mentre
nell’indicare l’output si può indicare
un percorso di salvataggio a
piacere: è però necessario indicare
l’estensione .asc nel nome del file.
Questo formato raster ha però alcuni svantaggi nella gestione della
“cartella di lavoro”, dei Sistemi di Riferimento delle mappe e nel
“trasferire l’intero lavoro” tra diversi programmi GIS
17
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
26. Pitfiller: proiezione (.prj file) & ASCII format
Un file raster in formato ascii non può
contenere nessuna informazione relativa al
Sistema di Riferimento della mappa.
Ogni mappa in formato .asc deve essere
accompagnato dal file .prj contenete le
infiormazioni del SdR.
Il file .prj deve avere lo stesso nome
del file .asc (ovviamente ad eccezione
dell’estensione)
Se non si dispone di tale file lo si può
scaricare da http://spatialreference.org
(ricercando l’opportuno SdR) e rinominare
N.B. anche quando si lavora in una lo-
cation gli eventuali imput .asc devono
essere accompagnati dal corretto file .prj
18
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
27. Pitfiller: esecuzione del comando
Inserite tutte le opzioni necessarie è
possibile eseguire il comando
cliccando sul bottone Run the
selected module in alto a destra
nella finestra degli Spatial Toolbox.
Il comando viene quindi eseguito
mostrando in Console la
progressione; terminata
l’esecuzione, la nuova mappa viene
salvata nella location (oppure i file
.asc e .prj).
T.W.: il salvataggio della prima
mappa nella location (specificando
la creazione della cartella cell)
creerà nella location un serie di altre
cartelle accessorie necessarie.
19
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
28. Pitfiller: esecuzione del comando
¯ poi imortarla e visualizzarla in un GIS spetterà a noi!
Visualizzazione della mappa output di Pitfiller in QGIS
20
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
29. Analisi dei valori di una mappa: RasterSummary
Ora che abbiamo visto come si utilizza un comando attraverso gli
Spatial Toolbox e creata la nostra prima mappa vediamo un utile
comando che fornisce le statistiche riassuntive relative ad una mappa.
Questo comando non appartiene alle Horton Mchine ma
semplicemente ai moduli generici di Raster Processing
il comando RasterSummary calcola le statistiche dei valori di una
mappa raster
Nello specifico il comado calcola
alcune grandezze riassuntive dell’intera mappa: valore minimo,
valore massimo, valore media, deviazione standard, somma di tutti
i valori, la quantità di no data
oltre a fornire tutti i dati per costruire l’istogramma della
distribuzione dei valori contenuti nella mappa
21
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
30. Analisi dei valori di una mappa: RasterSummary
Ora che abbiamo visto come si utilizza un comando attraverso gli
Spatial Toolbox e creata la nostra prima mappa vediamo un utile
comando che fornisce le statistiche riassuntive relative ad una mappa.
Questo comando non appartiene alle Horton Mchine ma
semplicemente ai moduli generici di Raster Processing
il comando RasterSummary calcola le statistiche dei valori di una
mappa raster
Nello specifico il comado calcola
alcune grandezze riassuntive dell’intera mappa: valore minimo,
valore massimo, valore media, deviazione standard, somma di tutti
i valori, la quantità di no data
oltre a fornire tutti i dati per costruire l’istogramma della
distribuzione dei valori contenuti nella mappa
21
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
31. RasterSummary: input
Questo particolare comando
richiede in input:
la mappa su cui calcolare le
statistiche
numero di intervalli in cui
dividere il range di valori
della mappa per calcolare
l’istogramma
il check per indicare di
calcolare tutti i dati
dell’istogramma
22
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
32. RasterSummary: output
I valori in output vengono stampati
nella vista Console, possono quindi
essere facilmente salvati in un file
di testo puro (mediante un copia &
incolla) in formato ASCII (ad
esempio: disth.txt), che un
qualsiasi foglio elettronico, o R (!),
può leggere facilmente.
Stampa, in ordine da sx a dx:
la media nell’intervallo dei
valori della mappa mappa
il numero di pixel della mappa
nell’intervallo
la percentuale di pixel della
mappa nell’intervallo
23
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
33. Esempio di plot dei risultati
Questo è un esempio di plot con R della distribuzione delle quote dei
punti del dtm in esame, prima con ordinata i pixel, poi la percentuale.
read.table(“disth.txt”)->dh
plot(dh[,1],dh[,2],type=“l”,ylab=“Area [pixel]”,
xlab=“Quote [m]”,main=“Distribuzione delle quote”)
24
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
34. Le direzioni di drenaggio
Le direzioni di drenaggio definiscono come l’acqua si muove sulla
superficie del terreno in relazione alla topografia della regione in analisi.
Ipotesi
Ogni cella del dtm può drenare
solo in una delle sue 8 celle
adiacenti, quelle adiacenti,
soprastanti, sottostanti o diagonali,
nella direzione di massima pendenza
discendente.
Solo 8 possibili direzioni per il flusso
¯ Questo è un limite nella
modellazione del flusso naturale
25
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
35. FlowDirection
Questo comando calcola le direzioni
di drenaggio nella direzione della
massima pendenza discendente
identificando per ogni cella del dtm
una delle 8 vicine.
L’input necessario è la mappa
del dtm depittato.
I numeri convenzionali che
rappresentano le direzioni di
drenaggio nella mappa di output
sono dall’1 all’8, dove 1 corrisponde
alla direzione est.
26
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
36. FlowDirection
Mappa di output dove ogni colore rappresenta una delle 8 direzioni.
27
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
37. FlowDirection
Corrispondenza tra colori della mappa, numeri convenzionali e direzioni
1//
2??
3OO
4 __
5 oo
6
7
8
28
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
38. Correzione alle direzioni di drenaggio
Il metodo finora descritto e utilizzato prende il nome D8. L’utilizzo di
questo metodo per la determinazione delle direzioni di drenaggio genera
un effetto di deviazione dalla reale direzione identificata dal gradiente
Questo metodo può essere corretto con un algoritmo che calcola le
direzioni di drenaggio minimizzando la deviazione della direzione del
flusso determinato da quella del flusso reale. Questa deviazione viene
calcolata partendo dal punto a quote maggiori, procedendo verso quote
minori.
La deviazione è calcolata mediante una costruzione triangolare e può
quindi essere espressa come:
Deviazione Angolare metodo D8-LAD
Distanza Trasversale metodo D8-LTD
Questo metodo utilizza un parametro λ per pesare la correzione.
Metodo sviluppato da S. Orlandi
29
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
39. Correzione alle direzioni di drenaggio
Metodo D8-LAD Deviazione Angolare valutata con α
Metodo D8-LTD Distanza Trasversale valutata con δ
La deviazione è calcolata
cumulandola dal punto a quota
maggiore, discendendo; la direzione
D8 viene corretta indirizzandola
verso la direzione reale quando il
valore supera una certa soglia.
Questa soglia viene assegnata
mediante il parametro λ; se λ = 0 il
contatore non ha memoria e quindi
i punti precedenti non influenzano
la correzione.
30
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
40. DrainDir: input
I minimi input necessari sono:
la mappa del dtm depittato
la mappa delle direzioni di
drenaggio precedentemente
creata con FlowDirection
È inoltre possibile modificare il
parametro λ e la modalità LAD
o LTD.
Lavorando in modalità standard,
quindi senza fissare la rete
idrografica, non è necessario fornire
la mappa delle direzioni di
drenaggio lungo la rete.
31
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
41. DrainDir: output
Questo comando restituisce in
output la mappa delle aree
contribuenti, oltre alla mappa
rappresentante le direzioni di
drenaggio corrette.
La mappa che rappresenta le aree
contribuenti può essere
alternativamente ottenuta con il
comando Geomorphology - Tca
Nella prossima slide si illustrerà
cosa rappresentano le aree
contribuenti e la loro utilità.
32
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
42. Aree contribuenti
L’ Area Contribuente Totale -tca- rappresenta l’area che contribuisce
all’afflusso in un punto del bacino.
È una quantità molto importante nell’analisi geomorfologica ed
idrologica di un bacino idrografico: è strettamente collegata al flusso in
uscita attraverso i differenti punti del bacino in condizioni di
precipitazione uniforme.
La maggior parte di metodi diffusivi utilizzati per estrarre la rete
idrografica a partire dal dtm sono basati su questa quantità.
Ai = Aj × Wj ; dove Wj =
1 se il j-esimo pixel drena nell’i-esimo
0 negli altri casi
33
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
43. Aree contribuenti
Zoom della mappa delle tca, visualizzata dopo un opporuna
trasformazione in scala di colori logaritmica. Visto l’ordine di
grandezza dei valori si consiglia di visualizzare le tca in scala
logaritmica; invece per visualizzare la sola asta principale dalla mappa
non logaritmica accertarsi che i limiti della scala colori siano impostati
ai valori estermi min/max.
34
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
44. MapCalc: un’applicazione alle direzioni di drenaggio
Per trasformare i valori della mappa tca in scala logaritmica
utilizziamol o strumento:
Raster Processing - MapCalc,
utile per eseguire operazioni logico-aritmetiche su mappe raster
per applicare il logaritmo (base 10) al valore di ciascun pixel
useremo (come mostrato nel box di destra) la funzione:
log(mapname,base)
images {
map_tca = read;
result = write;
}
result =log(map_tca,10); }
35
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
45. MapCalc: un’applicazione alle direzioni di drenaggio
Per trasformare i valori della mappa tca in scala logaritmica
utilizziamol o strumento:
Raster Processing - MapCalc,
utile per eseguire operazioni logico-aritmetiche su mappe raster
per applicare il logaritmo (base 10) al valore di ciascun pixel
useremo (come mostrato nel box di destra) la funzione:
log(mapname,base)
images {
map_tca = read;
result = write;
}
result =log(map_tca,10); }
35
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
46. MapCalc: un’applicazione alle direzioni di drenaggio
Attualmente il Map Calculator, strumento che permette di eseguire
operazioni aritmetiche e logiche sulle mappe, utilizza il linguaggio Jiffle.
1 per prima cosa bisogna selezionare come sempre le mappe di input
e la mappa di output), cioè tutte le mappe coinvolte nei calcoli
2 successivamente bisogna anche scrivere il codice per definire queste
mappe come variabili
3 quindi va scritta la sintassi per eseguire le operazioni desiderate su
queste mappe, ad es. alcune comuni sono:
assegnazioni
operazioni aritmetiche
controllo di flusso if
gestione dei punti senza valori: NaN/null
4 in Jiffle sono presenti molte funzioni e sintassi non visibili
dall’interfaccia di STAGE, si veda questa guida introduttiva:
http://jaitools.org/docs/jiffle/latest/userguide/html/
36
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
47. MapCalc: definizione delle variabili
Gli input (i.e. ciascuna mappa coinvolta nei calcoli) devono essere
prima inserite come in qualunque altro comando (e anche l’output),
ma devono essere poi dichiarati anche nella sintassi del MapCalc
images {
foce_drain = read;
result = write;
}
Sintassi per definire le mappe di input
come variabili.
Per gli input, cioè le mappe da leggere, il
nome della variabile deve essere uguale a
quello della mappa.
È inoltre necessario definire la variabile di
output, cioè la mappa da scrivere. Questo
nome non deve necessariamente essere
uguale a quello della mappa di output;
quest’ultimo va come al solito, inserito
nell’apposito tab outputs insieme al path.
37
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
48. MapCalc: assegnazione operazioni aritmetiche
Questi sono tre
esempi di
assegnazione della
variabile di output,
chiamata out:
result = null;
result = 91;
result=foce_drain;
Un’assegnazione si esegue sempre con una
sintassi composta, in ordine:
1 dal nome della variabile in cui
assegnare
2 dall’operatore di assegnazione =
3 dalla quantità da assegnare alla
variabile.
Negli esempi si vedono tre diversi tipi di
quantità da assegnare alla variabile out:
1 nessun valore null
2 un valore costante
3 i valori presenti in un’altra mappa
¯ questi tipi di quantità si possono
combinare con gli operatori + - * /
38
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
49. MapCalc: controllo di flusso if
if (test) {
operazioni da
eseguire se il
test è vero;
} else {
operazioni da
eseguire se il
test è falso;
};
Il test deve essere un’equazione logica che
restituisca Vero o Falso.
Può quindi essere imposto come
uguaglianza (Attenzione: ==),
disuguaglianza o con appositi comandi che
restituiscano Vero o Falso che vedremo
dopo.
Le operazioni da eseguire possono essere
una o più istruzioni, analoghe a quelle che
si scriverebbero al di fuori dell’ambiente
if.
¯ come operazioni da eseguire possono
anche essere annidati altri controlli if
39
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
50. MapCalc: gestione dei punti senza valori: NaN/null
Questi sono degli
esempi di utilizzo di
specifici comandi per
gestire i punti a cui
non è assegnato alcun
valore.
isnan(foce_drain)
out = null
Nei primi si vede l’uso del comando
isnan{}, che restituisce Vero quando il
suo argomento non contiene valori.
Più precisamente quando ha valore
Not A Number, valore assegnato di default
dai JGrasstools nei punti in cui non è
presente alcun dato.
Restituendo un valore booleano risulta
particolarmente comodo da usare come
test in un controllo if.
Nel secondo si vede invece l’assegnazione
ad una variabile (quindi ad una mappa) di
”nessun valore” grazie all’apposito
comando null che assegna valore null.
40
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
51. MapCalc: un’applicazione alle direzioni di drenaggio
Ritorniamo a trasformare mappa tca in scala logaritmica
utilizziamol o strumento:
Raster Processing - MapCalc,
utile per eseguire operazioni logico-aritmetiche su mappe raster
per applicare il logaritmo (base 10) al valore di ciascun pixel
useremo (come mostrato nel box di destra) la funzione:
log(mapname,base)
images {
map_tca = read;
result = write;
}
result =log(map_tca,10); }
41
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
52. MapCalc: un’applicazione alle direzioni di drenaggio
Ritorniamo a trasformare mappa tca in scala logaritmica
utilizziamol o strumento:
Raster Processing - MapCalc,
utile per eseguire operazioni logico-aritmetiche su mappe raster
per applicare il logaritmo (base 10) al valore di ciascun pixel
useremo (come mostrato nel box di destra) la funzione:
log(mapname,base)
images {
map_tca = read;
result = write;
}
result =log(map_tca,10); }
41
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
53. MapCalc: un’applicazione alle direzioni di drenaggio
Zoom della mappa delle tca, visualizzata opportunamente dopo la
trasformazione logarirtmica dei valori.
42
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
54. Markoutlets
L’applicazione di molti comandi
per essere eseguita correttamente
richiede che la mappa delle
direzioni di drenaggio abbia un
ulteriore valore.
Questo nuovo valore rappresenta la
classe dei punti che rappresentano
gli outlets del bacino: questi sono i
punti che drenano all’esterno del
bacino in analisi.
Il comando Dem Manipulation
- Markoutlets marca gli
outlets con un valore
convenzionale 10, e richiede in
input le direzioni di drenaggio,
meglio se calcolate con DrainDir
43
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
55. Estrazione della rete idrografica
Nel comando Network - ExtractNetwork sono implementati 3
metodi per estrarre i canali che compongono la rete idrografica:
0 mediante una soglia sulle aree contribuenti (solo i punti con area
contribuente maggiore della soglia danno luogo alla formazione di
canali)
1 mediante soglia sul prodotto tra aree contribuenti e pendenza
(questa quantità stima lo sforzo tangenziale)
2 mediante soglia analoga alla precedente considerando solo i punti
convergenti
Dopo aver individuato i punti di formazione dei canali, con una di
queste tre soglie, la rete viene costruita considerando tutti gli altri
punti posti a quote minori.
44
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
56. ExtractNetwork: modo 1
Si potrebbe ora procedere con
l’estrazione utilizzando il primo
metodo: soglia sulle sole aree
contribuenti, preferiamo però
andare oltre nell’analisi al fine di
ottenere una rete più accurata.
Sarebbero necessari in input la
mappa delle direzioni di dre-
naggio, meglio se calcolate con
DrainDir, e delle TCA.
È inoltre necessario impostare il
valore di soglia e specificare il
metodo da utilizzare: tca.
45
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
57. Pendenze: Slope
Il comando Geomorphology - Slope calcola la pendenza della
superficie topografica in ogni punto lungo le direzioni di drenaggio.
Questo comando calcola la differenza di quota tra ogni pixel e quello
adiacente immediatamente a valle. Successivamente divide questa
grandezza per la dimensione del pixel, oppure della sua diagonale, a
seconda della posizione reciproca dei due pixel considerati.
Il valore restituito rappresenta quindi la tangente dell’angolo
rappresentante la pendenza. Si può ottenere il valore dell’angolo
operando con MapCalc, il cui funzionamento verrà illustrato più avanti.
46
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
58. Slope
Richiede in input le mappe:
del dtm depittato
delle direzioni di drenaggio,
meglio se calcolate con
DrainDir
47
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
59. ExtractNetwork: modo 2
Avremmo già ora le mappe
necessarie ad estrarre le rete
idrografica con il secondo tipo di
soglia, basata su tca e pendenze;
proseguiamo invece nell’analisi al
fine di estarre la rete con l’ultimo, e
più raffinato, metodo.
Sarebbe quindi necessario fornire
un ulteriore input oltre a quelli
già visti, ovvero la mappa delle
pendenze appena calcolata.
Bisogna specificare il metodo
corretto: tca and slope.
48
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
60. Curvature
Le curvature rappresentano la deviazione del vettore gradiente per
unità di lunghezza lungo particolari curve tracciate sulla superficie in
esame f(x,y).
La Curvatura Longitudinale rappresenta la deviazione del
gradiente andando da valle verso monte seguendo l’inviluppo dei
gradienti. È negativa se il gradiente aumenta.
La Curvatura Piana si ottiene sezionando la superficie con un piano
parallelo al piano (x,y) ed è la variazione dei vettori tangenti alle linee
di livello passanti per il punto in esame. Misura la convergenza (se
0) o la divergenza (se 0) del flusso.
La Curvatura Tangenziale è determinata sulla curva di
intersezione tra un piano perpendicolare alla direzione del gradiente e
tangente alle linee di livello nel punto considerato.
Curvatura tangente e piana sono tra loro proporzionali e la loro
distribuzione spaziale è la stessa.
49
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
61. Curvatura tangenziale (o normale)
Curvatura negativa - convessa:
questo caso è tipico di zone di
versante dove il flusso viene
suddiviso sui pixel vicini di quota
inferiore secondo il metodo della
massima pendenza.
Topografia localmente divergente
50
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
62. Curvature
Il comando Geomorfology -
Curvatures permette di calcolare
questi 3 tipi di curvature come 3
diverse mappe di output.
Longitudinale
¯ Profile o Longitudinal
Piana
¯ Planar
Tangenziale
¯ Tangential o Normal
Questo comando richiede in input
la sola mappa del dtm depittato
51
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
63. Curvature
Curvatura Longitudinale e suo zoom Curvatura Tangenziale e suo zoom
52
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
64. Classi Topografiche
Permettono di attribuire ad ogni
pixel una delle 9 classi topografiche,
ottenute con l’intersezione dei tre
tipi di curvature longitudinali e dei
tre di curvature planari.
È anche possibile aggregare queste
classi in tre categorie fondamentali:
siti concavi
siti convessi
siti piani
53
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
65. Classi Topografiche
Nomi identificativi e
corrispondenti valori per le
9 classi (a lato) e per le 3
classi aggregate (sotto) con
specificate le riclassificazioni.
10 planare parallelo
20 convesso parallelo
30 concavo parallelo
40 planare divergente
50 convesso divergente
60 concavo divergente
70 planare convergente
80 convesso convergente
90 concavo convergente
15 concavo, unione delle classi 30, 70 e 90
25 planare, corrispondente alla classe 10
35 convesso, unione delle restanti classi
54
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
66. Tc
Il comando che permette di creare
le due mappe contenenti queste
classificazioni è Hillslope - Tc.
Richiede in input le due mappe
delle:
curvature longitudinali
curvature normali
È inoltre necessario definire due
soglie che definiscono la condizio-
ne di planarità.
Restituisce in output le due mappe
con 9 e 3 classi.
55
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
67. Tc
Mappa 9 classi morfologiche Mappa 3 classi fondamentali
56
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
68. ExtractNetwork: modo 3
Abbiamo ora tutte le mappe
necessarie ad estrarre le rete
idrografica con il terzo tipo di
soglia, cioè sullo sforzo tangenziale
solo sui siti convergenti.
È quindi necessaria in input una
ulteriore mappa, oltre alle pri-
me due, delle classi topografiche
aggregate (con sole 3 classi).
È inoltre necessario indicare il
metodo corretto, l’ultimo.
La soglia dipende sempre, come per
gli altri metodi, dalla dimensione
dei pixel e dagli attributi
topografici del bacino.
57
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
69. ExtractNetwork: output
Mappa di output rappresentante i canali della rete idrografica
Ai punti
appartenenti
ai canali è
assegnato
valore 2,
mentre a tutti
gli altri punti
è assegnato
no value, cioè
nessun valore.
58
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
70. Estrazione del bacino di interesse: chiusura
A questo punto abbiamo tutto quello che ci occorre per estrarre il
bacino idrografico d’interesse. Manca solo un’informazione: l’outlet,
cioè il punto di chiusura di questo bacino.
Tale punto deve appartenere alla rete idrografica, quindi bisognerà che
sulla mappa restituita da ExtractNetwork abbia valore 2.
1 Individuare il punto sulla mappa, se si dispone di uno shapefile
contenente tale punto è comodo importarlo per individuarlo con
facilità.
2 Interrogare il valore della mappa utilizzando lo strumento info di
QGIS, cliccando sul punto in esame (strumento info
contrassegnato dall’icona i nella barra degli strumenti)
3 Nella finestra info verifcare che il valore (Band 1) sia 2 e copiare le
coordinate del punto:
click dx su (clicked coordinates) - Copy attribute value
59
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
71. Estrazione del bacino di interesse: chiusura
Zoom della rete dei canali e vista informazioni per individuare l’outlet
60
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
72. Estrazione del bacino di interesse: Wateroutlet
Ora possiamo estrarre il bacino di
interesse con il comando Dem
Manipulation - Wateroutlet.
In input sono necessari:
le coordinate del punto di
chiusura appena individuate
la mappa delle direzioni di
drenaggio, meglio se
calcolata con DrainDir
Copiate le coordinate nei due
rispettivi campi
NB: la prima cooridnata in QGIS
è la coordinate est (x)
61
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
73. Estrazione del bacino di interesse: Wateroutlet
Restituisce in output una maschera
del bacino estratto con valore 1
all’interno e no value all’esterno.
Si può verificare come il confine del
bacino estratto passi effettivamente
per il punto di chiusura.
62
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
74. Ritaglio delle mappe sul bacino di interesse
Ora dobbiamo ritagliare sul bacino estratto anche tutte le altre mappe
fino ad ora elaborate.
Le opzioni di lavoro sarebbero due:
calcolare di nuovo le grandezze sul DTM del bacino estratto
ritagliare le mappe sulla maschera del bacino estratto
La prima opzione prevede di ricalcolare la mappa delle
elevazioni depittata e le direzioni di drenaggio. Questo può
comportare incompatibilità con il dato di partenza.
Per ottenere correttamente tutte le mappe relative al bacino ritagliato
sarà necessaria anche un’ulteriore operazione successiva: rilanciare il
comando Dem Manipulation - Markoutlets
sulla mappa delle direzioni di drenaggio ritagliata, in quanto gli outlets
del bacino ritagliato saranno differenti.
63
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
75. Ritaglio delle mappe sul bacino di interesse
Ora dobbiamo ritagliare sul bacino estratto anche tutte le altre mappe
fino ad ora elaborate.
Le opzioni di lavoro sarebbero due:
calcolare di nuovo le grandezze sul DTM del bacino estratto
ritagliare le mappe sulla maschera del bacino estratto
La prima opzione prevede di ricalcolare la mappa delle
elevazioni depittata e le direzioni di drenaggio. Questo può
comportare incompatibilità con il dato di partenza.
Per ottenere correttamente tutte le mappe relative al bacino ritagliato
sarà necessaria anche un’ulteriore operazione successiva: rilanciare il
comando Dem Manipulation - Markoutlets
sulla mappa delle direzioni di drenaggio ritagliata, in quanto gli outlets
del bacino ritagliato saranno differenti.
63
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
76. Ritaglio delle mappe sul bacino di interesse
Ora dobbiamo ritagliare sul bacino estratto anche tutte le altre mappe
fino ad ora elaborate.
Le opzioni di lavoro sarebbero due:
calcolare di nuovo le grandezze sul DTM del bacino estratto
ritagliare le mappe sulla maschera del bacino estratto
La prima opzione prevede di ricalcolare la mappa delle
elevazioni depittata e le direzioni di drenaggio. Questo può
comportare incompatibilità con il dato di partenza.
Per ottenere correttamente tutte le mappe relative al bacino ritagliato
sarà necessaria anche un’ulteriore operazione successiva: rilanciare il
comando Dem Manipulation - Markoutlets
sulla mappa delle direzioni di drenaggio ritagliata, in quanto gli outlets
del bacino ritagliato saranno differenti.
63
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
77. CutOut
Utilizzando il comando CutOut
scegliamo quindi di ritagliare le
mappe già create:
dtm depittato
direzioni di drenaggio
tca
reticolo idrografico
(pendenze)
(curvature)
(classi topografiche)
Gli input necessari sono la mappa
da usare come maschera e quella da
ritagliare, senza soglie.
64
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
78. Struttura di drenaggio e sottobacini
Ora che abbiamo estratto il bacino d’interesse e ritagliato le mappe di
base su questo, possiamo eseguire alcuni altri comandi al fine di
ottenere la struttura della rete di drenaggio e dei sottobacini relativi al
bacino di interesse.
In particolare si vogliono ottenere le mappe dei sottobacini e della rete di
drenaggio, quest’ultima anche in formato vettoriali in quanto da questa è
possibile estrarre (e poi interrogare) informazioni geometriche utili.
Lo strumento fondamentale sarà il comando che permette di numerare
la rete di drenaggio ed estrarre i corrispondenti sottobacini
¯ Network - NetNumbering
Utilizzeremo inoltre alcuni altri utili strumenti per le mappe vettoriali:
Network - NetworkAttributesBuilder vettorializzazione
della rete
Vector Processing - VectorReshaper manipolazione di
mappe vettoriali
65
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
79. Struttura di drenaggio e sottobacini
Ora che abbiamo estratto il bacino d’interesse e ritagliato le mappe di
base su questo, possiamo eseguire alcuni altri comandi al fine di
ottenere la struttura della rete di drenaggio e dei sottobacini relativi al
bacino di interesse.
In particolare si vogliono ottenere le mappe dei sottobacini e della rete di
drenaggio, quest’ultima anche in formato vettoriali in quanto da questa è
possibile estrarre (e poi interrogare) informazioni geometriche utili.
Lo strumento fondamentale sarà il comando che permette di numerare
la rete di drenaggio ed estrarre i corrispondenti sottobacini
¯ Network - NetNumbering
Utilizzeremo inoltre alcuni altri utili strumenti per le mappe vettoriali:
Network - NetworkAttributesBuilder vettorializzazione
della rete
Vector Processing - VectorReshaper manipolazione di
mappe vettoriali
65
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
80. Struttura di drenaggio e sottobacini
Ora che abbiamo estratto il bacino d’interesse e ritagliato le mappe di
base su questo, possiamo eseguire alcuni altri comandi al fine di
ottenere la struttura della rete di drenaggio e dei sottobacini relativi al
bacino di interesse.
In particolare si vogliono ottenere le mappe dei sottobacini e della rete di
drenaggio, quest’ultima anche in formato vettoriali in quanto da questa è
possibile estrarre (e poi interrogare) informazioni geometriche utili.
Lo strumento fondamentale sarà il comando che permette di numerare
la rete di drenaggio ed estrarre i corrispondenti sottobacini
¯ Network - NetNumbering
Utilizzeremo inoltre alcuni altri utili strumenti per le mappe vettoriali:
Network - NetworkAttributesBuilder vettorializzazione
della rete
Vector Processing - VectorReshaper manipolazione di
mappe vettoriali
65
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
81. Rete di drenaggio del bacino di interesse
Per prima cosa estraiamo la rete di
drenaggio relativa al solo bacino di
interesse, analogamente a come già
fatto per l’intero dtm.
Questo in modo da utilizzare
sempre il metodo più raffinato e
settare accuratamente la soglia.
Gli input sono quelli già visti,
ovviamente utilizzando tutte le
mappe ritagliate.
È ora molto importante scegliere
accuratamente il valore della soglia,
da questo dipende quanto sarà fitta
e quindi quanti rami e conseguenti
sottobacini si otterranno.
66
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
82. NetworkAttributesBuilder: mappa vettoriale .shp della rete
Se desideriamo ora possiamo
ottenere la mappa vettoriale della
rete nel nostro bacino di interersse.
Per questo usiamo il comando
NetworkAttributesBuilder, che
ne estrae anche una serie di utili
attributi.
Gli input si indicano come di
consueto.
Invece l’output vettoriale .shp va
indicato diversamente. Si de-
ve indicare il nome della map-
pa, l’estensione -che deve essere
shp- e un percorso a piacere do-
ve salvarlo (non all’interno della
location). 67
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
83. Mappa vettoriale .shp della rete idrografica
Mappa vettoriale
della rete, e attributi
di ogni feature
contenuti nella
tabella attributi
(visualizzabile in
QGIS).
Come si vede è molto
utile per distinguere i
singoli rami e capire
quanti sono
esattamente, perchè
coincideranno con i
sottobacini che
estrarremo.
68
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
84. VectorReshaper: estrazione delle lunghezze dei rami
Sfruttiamo ora le potenzialità della mappa vettoriale della rete per
estarrre le lunghezze di ogni singolo ramo.
Per fare questo useremo il comando generico per analisi vettoriali
VectorReshaper, non appartenente quindi alla categoria delle
Horton Machine ma ai Vector Processing.
Questo comando vuole in input una mappa vettoriale e restituisce
un’altra mappa vettoriale derivata grazie a funzioni ecql (una
sintassi ampliata del cql, semplificazione del linquaggio sql) con:
1 nuovi campi di attributi
2 attributi derivati dalle caratteristiche geometriche delle feature
3 nuove feature geometriche derivate da quelle originali
Si inserisce il vettoriale in input intuitivamente andando a selezionare il
file con estensione .shp su cui si desidera lavorare.
La sintassi per estrarre le lunghezze è: len=geomLength(the_geom)
Documentazione sull’ecql [1] e una buona lista di funzioni cql [2]:
[1] http://docs.geotools.org/latest/userguide/library/cql/ecql.html
[2] http://udig.github.io/docs/user/concepts/Constraint%20Query%20Language.html
69
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
85. VectorReshaper: estrazione delle lunghezze dei rami
Sfruttiamo ora le potenzialità della mappa vettoriale della rete per
estarrre le lunghezze di ogni singolo ramo.
Per fare questo useremo il comando generico per analisi vettoriali
VectorReshaper, non appartenente quindi alla categoria delle
Horton Machine ma ai Vector Processing.
Questo comando vuole in input una mappa vettoriale e restituisce
un’altra mappa vettoriale derivata grazie a funzioni ecql (una
sintassi ampliata del cql, semplificazione del linquaggio sql) con:
1 nuovi campi di attributi
2 attributi derivati dalle caratteristiche geometriche delle feature
3 nuove feature geometriche derivate da quelle originali
Si inserisce il vettoriale in input intuitivamente andando a selezionare il
file con estensione .shp su cui si desidera lavorare.
La sintassi per estrarre le lunghezze è: len=geomLength(the_geom)
Documentazione sull’ecql [1] e una buona lista di funzioni cql [2]:
[1] http://docs.geotools.org/latest/userguide/library/cql/ecql.html
[2] http://udig.github.io/docs/user/concepts/Constraint%20Query%20Language.html
69
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
86. VectorReshaper: estrazione delle lunghezze dei rami
Sfruttiamo ora le potenzialità della mappa vettoriale della rete per
estarrre le lunghezze di ogni singolo ramo.
Per fare questo useremo il comando generico per analisi vettoriali
VectorReshaper, non appartenente quindi alla categoria delle
Horton Machine ma ai Vector Processing.
Questo comando vuole in input una mappa vettoriale e restituisce
un’altra mappa vettoriale derivata grazie a funzioni ecql (una
sintassi ampliata del cql, semplificazione del linquaggio sql) con:
1 nuovi campi di attributi
2 attributi derivati dalle caratteristiche geometriche delle feature
3 nuove feature geometriche derivate da quelle originali
Si inserisce il vettoriale in input intuitivamente andando a selezionare il
file con estensione .shp su cui si desidera lavorare.
La sintassi per estrarre le lunghezze è: len=geomLength(the_geom)
Documentazione sull’ecql [1] e una buona lista di funzioni cql [2]:
[1] http://docs.geotools.org/latest/userguide/library/cql/ecql.html
[2] http://udig.github.io/docs/user/concepts/Constraint%20Query%20Language.html
69
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
87. VectorReshaper: estrazione delle lunghezze dei rami
Interfaccia del comando (stage) settato per caloclare le lunghezze
(sinistra) e il nuovo vettoriale della rete con il nuovo campo delle
lunghezze: len
70
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
88. NetNumbering: numerazione della rete ed estazione sottobacini
Utilizziamo ora il comando
Network - NetNumbering al fine
di estrarre i sottobacini, oltre alla
mappa della rete numerata.
I primi 3 inputs sono quelli
necessari, a questo punto
dovrebbero essere tutti di
immediata comprensione.
Nella modalità in cui utilizzere-
mo il comando non è necessario
inserire la quarta mappa in
input.
Gli outputs sono tutti mappe ra-
ster, dovremo inserirli entrambi.
71
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
89. NetNumbering: settaggio della soglia
(Se) Il comando lavora in modalità
soglia sulle TCA (threshold on
TCA), bisonerà quindi inserire un
opportuno valore nel campo soglia
È sempre e comunque necessa-
rio utilizzare in input una mappa
della rete con un adeguato livello
di ramificazioni, quindi preceden-
temente estratta con una soglia
adeguata (ad es: TCA=1000)
Inoltre è necessario settare anche
qua la soglia sulle TCA, per
coerenza alemno uguale o maggiore
a quella con cui era stata estratta
la rete (ad es: TCA=10000)
72
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
90. NetNumberin: output del comando
Le due mappe output di NetNumbering: rete numerata e sottobacini
73
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
91. Mappa vettoriale dei sottobacini
analogamente a quanto detto per la rete idrografica è altrettanto
comoda una mappa vettoriale dei contorni dei sottobacini
questa operazione è fatta egregiamente dal comando BasinShape,
purtroppo questo non è presente nell’attuale versione di STAGE
un operazione simile può essere fatta con il classico modulo di
conversione da raster a vettoriale che è presente in
Vector Processing - Vectorizer
questo comando ha però alcuni problemi (come in GRASS) alle
congiunzioni tra due sottobacini, dove vengono erroneamente
creati sottobacini (feature) di pochi pixel non presenti
il comando ha però un utile opzione di soglia sulla dimensione
minima (in pixel) che devono avere le feature per essere create
¯ si può quindi giocare con il valore di questa soglia per cercare
di ottenere una mappa vettoriale dei sottobacini corretta
Le 4 slide seguenti sono comunque riportate per completezza o per centroidi da Vectorizer
74
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
92. BasinShape: vettorializzazione dei contorni dei sottobacini
Vogliamo ora ottenere la mappa
vettoriale .shp dei contorni dei
sottobacini, che sarà comoda per
estrarre varie informazioni, come
già visto per la mappa della rete.
Questo comando vuole in input
due mappe raster:
la mappa del dtm depittato
e quella dei sottobacini
ottenuta con NetNumbering
. . . e restituisce in output la
mappa vettoriale dei sottobacini.
Gli input raster si inseriscono come
già visto in precedenza e l’output
vettoriale come visto per la rete.
75
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
93. Mappa vettoriale .shp dei sottobacini
Mappa vettoriale dei
sottobacini, si può
vedere che il
comando ha gia
calcolato molti
attributi utili per
ogni sottobacino:
area
perimetro
numerazione
quota massima
quota minima
quota media
quota dell’uscita
76
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
94. VectorReshaper: centroidi dei sottobacini
Sfruttiamo ancora il comando
VectorReshaper per ottenere una
nuova mappa contenente i centroidi
di ogni singolo bacino.
Le mappe vettoriali in input e
output si inseriscono come visto
prima per lo stesso comando.
La nuova mappa deve contenere
delle nuove features geometriche
derivate, i centroidi.
La sintassi ecql dovrà riscrivere
il campo the_geom, sarà quindi:
the_geom=centroid(the_geom)
77
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
95. VectorReshaper: Mappa vettoriale .shp dei centroidi
Mappa vettoriale dei
centroidi di ogni
sottobacino.
È ben evidente come
questo comando
abbia creato una
nuova mappa con
feature geometriche
di tipo differente,
ovvero i punti
rappresentanti i
centroidi, derivati
dalle feature originali
(aree dei
sottobacini).
78
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
96. Attributi derivati
Ora che abbiamo concluso l’analisi idrologica di base, estraendo il
bacino d’interesse, la rete di drenaggio ed i sottobacini, possiamo
eseguire una serie di altri comandi delle Horton Machine al fine di
ottenere alcune mappe utili per una analisi idro-geomorfologica più
completa del bacino. Ne vedremo ora un paio a titolo di esempio.
Esposizione Geomorphology - Aspect
Modulo del vettore gradiente Geomorphology - Gradient
(Pendenza lungo la rete Geomorphology -Slope)
(Curvature Geomorphology - Curvatures)
Area di drenaggio Geomorphology - Ab
(Classi topografiche Hillslope - Tc)
Distanza dalla chiusura Basin - RescaledDistance
Indice topografico Basin - TopIndex
79
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
97. Attributi derivati
Ora che abbiamo concluso l’analisi idrologica di base, estraendo il
bacino d’interesse, la rete di drenaggio ed i sottobacini, possiamo
eseguire una serie di altri comandi delle Horton Machine al fine di
ottenere alcune mappe utili per una analisi idro-geomorfologica più
completa del bacino. Ne vedremo ora un paio a titolo di esempio.
Esposizione Geomorphology - Aspect
Modulo del vettore gradiente Geomorphology - Gradient
(Pendenza lungo la rete Geomorphology -Slope)
(Curvature Geomorphology - Curvatures)
Area di drenaggio Geomorphology - Ab
(Classi topografiche Hillslope - Tc)
Distanza dalla chiusura Basin - RescaledDistance
Indice topografico Basin - TopIndex
79
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
98. Indice topografico
TI = log
A
b | z|
esprime la tendenza di un pixel a saturarsi
¯ aree con valori elevati di indice topografico si saturano
prima di aree a basso indice topografico
dipende solo dalla morfologia
è proporzionale al rapporto tra area cumulata nel pixel e pendenza
Si calcola con il comando Basin - TopIndex che richiede in input:
la mappa delle tca
la mappa delle pendenze calcolata con Slope
80
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
99. Indice topografico
TI = log
A
b | z|
esprime la tendenza di un pixel a saturarsi
¯ aree con valori elevati di indice topografico si saturano
prima di aree a basso indice topografico
dipende solo dalla morfologia
è proporzionale al rapporto tra area cumulata nel pixel e pendenza
Si calcola con il comando Basin - TopIndex che richiede in input:
la mappa delle tca
la mappa delle pendenze calcolata con Slope
80
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
102. Calcolo dell’indice topografico: MapCalc
Pixel con pendenza bassa hanno elevata propensione alla
saturazione a parità di area cumulata
ci sono zone all’interno del bacino
dove non è definito l’indice topografico
¯ sono quelle con pendenza pari a zero per cui il rapporto
area cumulata su pendenza tende ad infinito
Si assegna ai pixel con
valore nullo di indice
topografico il valore
massimo caratteristico
della mappa utilizzando
Raster Processing -
MapCalc, sfruttando,
con le modalità già viste,
la seguente sintassi:
images{ pass_mytop=read;
pass_mybas=read; out=write;}
if (isnan( pass_mybas )) {
out = null;
} else { if (isnan( pass_mytop )) {
out = 25;
} else {
out = pass_mytop; } ; };
83
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
104. Distanze riscalate: RescaledDistance
Il comando RescaledDistance permette di calcolare le distanze
dall’uscita del bacino (outlet), calcolate lungo le direzioni di drenaggio.
Queste distanze possono essere riscalate, cioè calcolate considerando
velocità diverse nei versanti e nella rete idrografica.
Per calcolare queste distanze viene quindi introdotto il parametro r,
definito come il rapporto tra la velocità nei canali e nei versanti:
r =
uc
uh
con uc : velocità nei canali e uh : velocità nei versanti
Questo comando richiede in input le mappe:
delle direzioni di drenaggio, calcolate con DrainDir e con gli
outlets marcati con MarkOutlets
della rete idrografica, calcolata con ExtractNetwork scegliendo
uno dei tre tipi di soglie (sempre meglio se il tipo 2)
Richiede inoltre il parametro r (se r = 1 le distanze saranno semplici)
85
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
105. Distanze riscalate: RescaledDistance
Il comando RescaledDistance permette di calcolare le distanze
dall’uscita del bacino (outlet), calcolate lungo le direzioni di drenaggio.
Queste distanze possono essere riscalate, cioè calcolate considerando
velocità diverse nei versanti e nella rete idrografica.
Per calcolare queste distanze viene quindi introdotto il parametro r,
definito come il rapporto tra la velocità nei canali e nei versanti:
r =
uc
uh
con uc : velocità nei canali e uh : velocità nei versanti
Questo comando richiede in input le mappe:
delle direzioni di drenaggio, calcolate con DrainDir e con gli
outlets marcati con MarkOutlets
della rete idrografica, calcolata con ExtractNetwork scegliendo
uno dei tre tipi di soglie (sempre meglio se il tipo 2)
Richiede inoltre il parametro r (se r = 1 le distanze saranno semplici)
85
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
106. Distanze riscalate: RescaledDistance
Il comando RescaledDistance permette di calcolare le distanze
dall’uscita del bacino (outlet), calcolate lungo le direzioni di drenaggio.
Queste distanze possono essere riscalate, cioè calcolate considerando
velocità diverse nei versanti e nella rete idrografica.
Per calcolare queste distanze viene quindi introdotto il parametro r,
definito come il rapporto tra la velocità nei canali e nei versanti:
r =
uc
uh
con uc : velocità nei canali e uh : velocità nei versanti
Questo comando richiede in input le mappe:
delle direzioni di drenaggio, calcolate con DrainDir e con gli
outlets marcati con MarkOutlets
della rete idrografica, calcolata con ExtractNetwork scegliendo
uno dei tre tipi di soglie (sempre meglio se il tipo 2)
Richiede inoltre il parametro r (se r = 1 le distanze saranno semplici)
85
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
109. Funzione di ampiezza del bacino idrografico
Ora che abbiamo calcolato le mappe delle distanze e distanze riscalate
vogliamo ottenere la distribuzione di questi valori sulle mappe, il grafico
di queste rappresenterà la funzione d’ampiezza semplice e riscalata.
La distribuzione dei valori su una mappa potrebbe essere
ugualmente ottenuta con il comando RasterSummary, che
abbiamo già visto all’inizio di questa trattazione.
Preferiamo invece ora utilizzare il più evoluto comando
Statistics - Cb (delle Horton Machine).
In questa applicazione fornisce un analogo risultato, però può
essere sfruttato per ottenere più complesse statistiche
incrociate tra due mappe.
Per ottenere comunque la semplice distribuzione dei valori di una
mappa è sufficiente utilizzarlo fornendo la stessa mappa in input per
entrambe le mappe.
88
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
110. Funzione di ampiezza del bacino idrografico
Ora che abbiamo calcolato le mappe delle distanze e distanze riscalate
vogliamo ottenere la distribuzione di questi valori sulle mappe, il grafico
di queste rappresenterà la funzione d’ampiezza semplice e riscalata.
La distribuzione dei valori su una mappa potrebbe essere
ugualmente ottenuta con il comando RasterSummary, che
abbiamo già visto all’inizio di questa trattazione.
Preferiamo invece ora utilizzare il più evoluto comando
Statistics - Cb (delle Horton Machine).
In questa applicazione fornisce un analogo risultato, però può
essere sfruttato per ottenere più complesse statistiche
incrociate tra due mappe.
Per ottenere comunque la semplice distribuzione dei valori di una
mappa è sufficiente utilizzarlo fornendo la stessa mappa in input per
entrambe le mappe.
88
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
111. Funzione di ampiezza del bacino idrografico
Ora che abbiamo calcolato le mappe delle distanze e distanze riscalate
vogliamo ottenere la distribuzione di questi valori sulle mappe, il grafico
di queste rappresenterà la funzione d’ampiezza semplice e riscalata.
La distribuzione dei valori su una mappa potrebbe essere
ugualmente ottenuta con il comando RasterSummary, che
abbiamo già visto all’inizio di questa trattazione.
Preferiamo invece ora utilizzare il più evoluto comando
Statistics - Cb (delle Horton Machine).
In questa applicazione fornisce un analogo risultato, però può
essere sfruttato per ottenere più complesse statistiche
incrociate tra due mappe.
Per ottenere comunque la semplice distribuzione dei valori di una
mappa è sufficiente utilizzarlo fornendo la stessa mappa in input per
entrambe le mappe.
88
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
112. Analisi dei valori di una mappa: Cb
Il comando Statistics - Cb calcola le statistiche dei valori di
una mappa rispetto a quelli contenuti in un’altra mappa
i dati della prima mappa vengono raggruppati in un numero
prefissato di intervalli e viene calcolato il valore medio della
variabile indipendente in ciascun intervallo
ad ogni intervallo corrisponde un set di valori nella seconda
mappa, dei quali viene calcolata la media e gli altri momenti
richiesti dall’utente
il comando restituisce nella vista Console tutti questi valori per
ogni intervallo, associati al numero di pixel contenuti nell’intervallo
I valori stampati in output possono essere facilmente salvati in un file di
testo puro (mediante un copia incolla) in formato ASCII che un
qualsiasi foglio elettronico o R può leggere facilmente.
89
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
113. Cb: input
Questo particolare comando
richiede in input:
le due mappe su cui
calcolare le statistiche
numero di intervalli in cui
dividere il range di valori
della prima mappa
il primo e l’ultimo ordine dei
momenti da calcolare
Le due mappe possono anche essere
la stessa mappa se si vuole ottenere
la distribuzione dei valori contenuti
nella mappa sul bacino (va sempre
inserita in entrambe i campi).
90
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
114. Cb: output
Questo particolare comando
stampa, in ordine da sx a dx:
la media nell’intervallo dei
valori della prima mappa
il numero di pixel della prima
mappa nell’intervallo
il momento di primo ordine
(media) dei valori della
seconda mappa
il momento di secondo ordine
(varianza) dei valori della
seconda mappa
se richiesti, i momenti di
ordine superiore dei valori
della seconda mappa
91
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
115. Esempio di plot dei risultati
Questo è un esempio di plot con R della distribuzione delle distanze dei
punti del bacino: rappresenta la funzione d’ampiezza del bacino.
read.table(“filename.txt”)-rd1
plot(rd1[,1],rd1[,2],type=“l”,ylab=“Area [pixel]”,
xlab=“Distanza [m]”,main=“Distanze Riscalate”)
92
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
116. Scriptare i JGrasstools
Se lanciare tutti questi comandi in successione e dover inserire ogni
volta tutti gli input e gli output vi è sembrato molto noioso, vi
suggerisco di provare a scriptare!
Tutte le operazioni che abbiamo fatto da interfaccia grafica si
possono completamente implementare in semplici codici che
eseguono in successione una serie di comandi.
I JGrasstools si possono scriptare con linguaggio Geoscript,
pensato per scrivere codici con sintassi groovy su moduli Java
Uno script può essere scritto e lanciato in vari modi,
agevolmente all’interno di STAGE, ma anche attraverso shell
script completamente da riga di comando (termianle)!
Un pò di documentazione (spesso riferita al vecchio uDig, ma non cambia):
jgrasstechtips.blogspot.it/2013/01/proposal-geoscript-console-in-udig.html
jgrasstechtips.blogspot.it/2013/01/course-java-open-source-gis-development.html
jgrasstechtips.blogspot.it/2013/03/course-geographic-scripting-in-udig.html
93
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
117. Indice dei simboli
Simbolo Nome udm
TI Indice topografico -
A Area totale al di sopra di ogni punto L2
b Lunghezza della parte di pixel
interessata dal drenaggio L
z Pendenza -
x Distanza di un punto del bacino dall’uscita
misurata lungo le direzioni di drenaggio L
x Distanza dall’uscita riscalata L
xc Distanza di un punto del canale dall’uscita L
xh Distanza di un punto dal canale
a cui afferisce (lungo le linee di drenaggio) L
r Rapporto tra celerità dell’onda di piena
nei canali e nei versanti -
uc Celerità del deflusso nei canali L T−1
uh Celerità del deflusso superficiale L T−1
94
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
118. Indice dei comandi
Comando Breve Descrizione
Cb Calcola le le statistiche delle mappe
Curvature Calcola le curvature longitudinali e trasversali
CutOut Ritaglia una mappa raster
DrainDir Stima le direzioni di drenaggio corrette
ExtractNetwork Estrae il reticolo idrografico
FlowDirection Stima le direzioni di drenaggio con D8 puro
MapCalc Esegue calcoli sui raster
MarkOutlet Marca l’uscita del bacino in esame
Pitfiller Riempie le depressioni di un DEM
RescaledDistance Calcola la funzione di ampiezza riscalata
Slope Calcola il modulo della pendenza
Tc Calcola le classi topografiche
Tca Calcola le aree contribuenti
TopIndex Calcola l’indice topografico
WaterOutlet Estrae il bacino idrografico
95
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
119. Credits
La Horton Machine è il frutto del lavoro di ricerca
congiunto di cudam ed Hydrologis s.r.l.
96
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015
120. Credits
Questa presentazione è stata scritta da:
Silvia Franceschi (Hydrologis and Ispra)
Leonardo Perathoner (Università di Trento)
Matteo Toro (Università di Trento)
Giuseppe Formetta (Università di Trento)
La redazione di questa presentazione è stata supportata da Ispra
nell’ambito del progetto Danube Flood Risk e dalla Provincia
Autonoma di Bolzano, nell’ambito del progetto HydroAlp.
Per quanto possibile, questa presentazione è stata redatta con l’uso di
software libero. LATEX per a scrittura, per il quale Leonardo Perathoner
ha approntato un apposito stile. Il programma statistico R
(http://cran.r-project.org/) per l’elaborazione delle figure non
prodotte da STAGE e QGIS.
97
S. Franceschi, L. Perathoner, M. Toro, G. Formetta
30 marzo 2015