[Gfoss] Grafo idrografico

Salve,

qualcuno conosce un metodo per ricostruire la gerarchia di un grafo di un file idrografico?

Vedo di spiegare meglio ( se riesco ).

Il layer SHP di "DBPrior 10k" contiene gli assi idrografici italiani, con una buona ( ma variabile ) rappresentazione planimetrica.
Nelle informazioni associate troviamo un campo, chiamato "sibapo", formato da una stringa di caratteri, separati da punti, che descrivono la gerarchia dei vari rami dei corsi d'acqua. Ad esempio, con "001.002.005.000.000" si individua il quinto ramo del secondo affluente del primo fiume d'Italia.
Ora, il problema e' che il campo "sibapo" non e' stato riempito sempre.

Quindi, torno alla mia domanda iniziale:
Esiste un metodo, in Grass o altro sw open, per ricostruire il "sibapo" ( o altro ) di un grafo gerarchico, come quello idrografico?

Riconoscenza eterna :wink:

Saluti

Rob

Ciao,

2012/7/26 Geodrinx <geodrinx@gmail.com>

Salve,

qualcuno conosce un metodo per ricostruire la gerarchia di un grafo di un file idrografico?

Vedo di spiegare meglio ( se riesco ).

Il layer SHP di “DBPrior 10k” contiene gli assi idrografici italiani, con una buona ( ma variabile ) rappresentazione planimetrica.
Nelle informazioni associate troviamo un campo, chiamato “sibapo”, formato da una stringa di caratteri, separati da punti, che descrivono la gerarchia dei vari rami dei corsi d’acqua. Ad esempio, con “001.002.005.000.000” si individua il quinto ramo del secondo affluente del primo fiume d’Italia.
Ora, il problema e’ che il campo “sibapo” non e’ stato riempito sempre.

Quindi, torno alla mia domanda iniziale:
Esiste un metodo, in Grass o altro sw open, per ricostruire il “sibapo” ( o altro ) di un grafo gerarchico, come quello idrografico?

In idrologia ci sono diversi metodi di gerarchizzazione, per cui dovresti capire innanzi tutto quello che e stato usato. Il piu comune e quello di Strahler. In GRASS puoi ricavare l'ordinamento di Strahler (e anche altri) usando r.stream.order [1] (e un addOn). Il problema e` che r.stream.order non prende in input un reticolo idrografico preesistente, ma l’output di r.watershed o r.stream.extract. In pratica devi tarare la soglia per l’estrazione del reticolo idrografico in modo da avvicinarlo il piu possibile a quello reale.

Ciao
Margherita

[1] http://grass.osgeo.org/wiki/GRASS_AddOns#r.stream.order


Dr. Margherita Di Leo

Ciao Rob, Madi,

[...]

Quindi, torno alla mia domanda iniziale:
Esiste un metodo, in Grass o altro sw open, per ricostruire il "sibapo" (
o altro ) di un grafo gerarchico, come quello idrografico?

In idrologia ci sono diversi metodi di gerarchizzazione, per cui dovresti
capire innanzi tutto quello che e` stato usato. Il piu` comune e` quello di
Strahler. In GRASS puoi ricavare l'ordinamento di Strahler (e anche altri)
usando r.stream.order [1] (e` un addOn). Il problema e` che r.stream.order
non prende in input un reticolo idrografico preesistente, ma l'output di
r.watershed o r.stream.extract. In pratica devi tarare la soglia per
l'estrazione del reticolo idrografico in modo da avvicinarlo il piu
possibile a quello reale.

Madi, non credo che questo sia quello che serve a Rob.
Strahler e' una numerazione della rete, non una gerarchizzazione (non
e' navigabile). Oltre al fatto che estrarre un reticolo "antropizzato"
uguale a quelli forniti senza forzature e' praticamente impossibile.
Puo' essere utile ai fini di una analisi idrologica, ma non per tutta
una serie di altre attivita'.

Rob, nei jgrasstools (quindi Spatial Toolbox di uDig) abbiamo un
modulo di gerarchizzazione della rete secondo la numerazione di
Pfaffstetter (vedi [0]).
Partire da una rete esistente e' un vero macello.
Partendo dal presupposto che tu:
- abbia il DTM che ha generato la rete (di solito non e' cosi') o
almeno un DTM di risoluzione compatibile con la rete,
- che la rete sia digitalizzata da monte verso valle
- le confluenze non abbiano piu' di due corsi entranti nello stesso
punto (diff di almeno un pixel)
- tu stia analizzando un bacino unico (i.e. non potresti farlo per
tutta Italia in un colpo

le operazioni da fare nei jgrasstools sarebbero (piu' o meno, come al
solito dipende dai dati):
- rasterizzazione della tua rete vettoriale creando le direzioni di drenaggio
- creazione della mappa delle direzioni di drenaggio "forzandola" a
seguire la tua rete
- numerazione della rete
- gerarchizzazione con Pfafstetter

Di fatto il tutto non e' semplice e non assicuro nulla, molto dipende
dal dato, da cosa ti serve e come ti serve etc etc etc etc e ancora
etc.

Noi siamo interessati al discorso, se vuoi si puo' proseguire la
discussione nella lista dei jgrasstools [1].

Ciao,
Andrea

[0] http://www.slideshare.net/silli/jhydro-an-implementation-of-the-digital-watershed-presentation
[1] http://groups.google.com/group/jgrasstools

Ciao
Margherita

[1] http://grass.osgeo.org/wiki/GRASS_AddOns#r.stream.order

--
Dr. Margherita Di Leo

_______________________________________________
Gfoss@lists.gfoss.it
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
Non inviate messaggi commerciali.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.
605 iscritti al 10.7.2012

Se puo' essere utile saperlo, il vettoriale dell'idrografia e' caricato in una tabella PostGIS ( ma si potrebbe caricare anche in SpatiaLite, se si ritenesse necessario ).

Domanda: non ci sono funzioni Spatial che ricostruiscono la topologia e quindi il grafo?
Qualcosa del genere non e' stato fatto per i dati OpenStreetMap?
In fondo il grafo idrografico puo' essere considerato come le strade?
E' un'eresia, lo so :slight_smile:
Ma, a parte qualche "dettaglio" come la direzione del flusso, le pendenze, il Dtm, la portata, gli argini, le inondazioni, lo storico meteo, etc etc in fondo si tratta sempre ( semplificando ) di un insieme connesso di linee... :wink:

Quale funzione SpatiaLite posso usare?
Come devo, prima, preparare i dati?

Grazie, comunque, per qualunque idea sull'argomento in oggetto ( anche di tipo "brainstorming" )

Rob

Il giorno 26 luglio 2012 09:56, Geodrinx <geodrinx@gmail.com> ha scritto:

Ma, a parte qualche “dettaglio” come la direzione del flusso, le pendenze, il Dtm, la portata, gli argini, le inondazioni, lo storico meteo, etc etc in fondo si tratta sempre ( semplificando ) di un insieme connesso di linee… :wink:

In questo caso la direzione di flusso non è un dettaglio. L’ordinamanto di Horton-Strahler si basa proprio sulla direzione di flusso e sul concetto di monte valle: si parte dalle zone di testata del bacino e si assegna l’ordine 1 alla prima asta che incontri, quando due aste di ordine 1 confluiscono la successiva sarà di ordine 2 e così via. Per questo i metodi che lo fanno hanno bisogno del dtm e di una rete idrografica congruente con il dem.

Tra l’altro segnalo il recente Tau-dem - plugin sextante di Qgis

C’è un’altro problema…ho avuto a che fare con la classificazione sibapo qualche anno fa e se non ricordo male è completamente invertita rispetto a Horton-Strahler, assegnando l’ordine 1 all’ultima asta del bacino…(es il Tevere)

Andrea Fredduzzi
Department of Civil and Environmental Engineering
University of Perugia
Via G. Duranti 93/a - 06125 Perugia (Italy)
e-mail: fredduzzi@unipg.it - andreafredd@gmail.com
tel: +39(0)755853760 - fax: +39(0)755853756

[...]

Domanda: non ci sono funzioni Spatial che ricostruiscono la topologia e quindi il grafo?
Qualcosa del genere non e' stato fatto per i dati OpenStreetMap?
In fondo il grafo idrografico puo' essere considerato come le strade?
E' un'eresia, lo so :slight_smile:

Ecco, gia' :slight_smile:

Ma, a parte qualche "dettaglio" come la direzione del flusso, le pendenze, il Dtm, la portata, gli argini, le inondazioni, lo storico
meteo, etc etc in fondo si tratta sempre ( semplificando ) di un insieme connesso di linee... :wink:

Ok, mi pare di capire che il tuo utilizzo non sara' di tipo
idrologico/idraulico. Forse conviene che tu ci spieghi un pochino
meglio a cosa vuoi arrivare.

Il fatto e' che senza una visione scientifica, non riesci a
gerarchizzare in modo giusto.
Nel momento in cui ti trovi a una confluenza cosa fai? Il ramo
principale e' quello di destra o quello di sinistra?
Credo questa sia la domanda cruciale. Se devi compilare in modo
"esatto" i codici della gerarchia, devi fare le cose a "modo
idrologico", se invece non ti interessa, ma vuoi solo collegare il
tutto, penso sia piu' facile, anche se non saprei come fare senza
mettere mano al codice.

Ciao,
Andrea

Quale funzione SpatiaLite posso usare?
Come devo, prima, preparare i dati?

Grazie, comunque, per qualunque idea sull'argomento in oggetto ( anche di tipo "brainstorming" )

Rob
_______________________________________________
Gfoss@lists.gfoss.it
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
Non inviate messaggi commerciali.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.
605 iscritti al 10.7.2012

Ciao Andrea,

se non ricordo male è completamente invertita rispetto a Horton-Strahler, assegnando l'ordine 1 all'ultima asta del bacino...(es il Tevere)

Esattamente.
La gerarchia ( anche se e' un reticolo ) parte dalla foce.
Non e' detto che sia un errore concettuale.
:slight_smile:
Non sempre le sorgenti sono note: vedi caso del Nilo ... :wink:
Dovendo battezzare un fiume, comincio dalla costa...
Mi dirai: "... e i laghi?"

A parte questo, direi che il primo step dovrebbe essere quello di numerare le foci dei fiumi e affini, cioe' trovare le polilinee che si intersecano con la linea di costa.

Corretto?

Rob

Ciao,

sempre come brainstorming…

2012/7/26 Geodrinx <geodrinx@gmail.com>

Ciao Andrea,

se non ricordo male è completamente invertita rispetto a Horton-Strahler, assegnando l’ordine 1 all’ultima asta del bacino…(es il Tevere)

Esattamente.
La gerarchia ( anche se e’ un reticolo ) parte dalla foce.

Forse segue l’ordinamento di Hack?
http://grass.osgeo.org/wiki/R.stream.*#r.stream.order (quarta immagine).

Ciao,
madi


Dr. Margherita Di Leo

a cosa vuoi arrivare.

ad un database idrografico in cui ogni ramo "sappia" chi e', a chi appartenga, e dove si pone sequenzialmente nel suo "fiume" ( che prende il "nome" dalla foce ).

Ovvero, vorrei "riempire" il campo "sibapo" ( o qualcosa di simile ) in maniera corretta.

Penso si tratti di "cluster analisys" se non ricordo male dall'universita'.
Altra eresia. :wink:

Rob

sempre come brainstorming…

2012/7/26 Geodrinx <geodrinx@gmail.com>

Ciao Andrea,

se non ricordo male è completamente invertita rispetto a Horton-Strahler, assegnando l’ordine 1 all’ultima asta del bacino…(es il Tevere)

Esattamente.
La gerarchia ( anche se e’ un reticolo ) parte dalla foce.

Forse segue l’ordinamento di Hack?
http://grass.osgeo.org/wiki/R.stream.*#r.stream.order (quarta immagine).

“A occhio” direi proprio di si, però devo ammettere la mia ignoranza…all’epoca per delle analisi geomorfologiche avevamo bisogno di un ordinamento Horton-Strahler e abbiamo abbandonato sibapo. Quindi non ho approfondito molto come avveniva la gerarchizzazione sibapo.
Penso che il fine sia proprio quello di evitare le complicazioni che ci sono nell’individuare le aste di ordine 1 in bacini diversi (threshold, mean stream drop e via dicendo) - cioè come dice rob “di non dovere per forza risalire alla sorgente”


Andrea Fredduzzi
Department of Civil and Environmental Engineering
University of Perugia
Via G. Duranti 93/a - 06125 Perugia (Italy)
e-mail: fredduzzi@unipg.it - andreafredd@gmail.com
tel: +39(0)755853760 - fax: +39(0)755853756

A parte questo, direi che il primo step dovrebbe essere quello di numerare le foci dei fiumi e affini, cioe’ trovare le polilinee che si intersecano con la linea di costa.

Corretto?

Penso sia corretto come punto di partenza, l’ordine 1 dovrebbe essere assegnato ai fiumi che sfociano in mare, cioè ai collettori principali dei vari bacini, però poi devi capire come avviene la gerarchizzazione


Andrea Fredduzzi
Department of Civil and Environmental Engineering
University of Perugia
Via G. Duranti 93/a - 06125 Perugia (Italy)
e-mail: fredduzzi@unipg.it - andreafredd@gmail.com
tel: +39(0)755853760 - fax: +39(0)755853756

Buon pomeriggio,
probabilmente arrivo tardi (rientrata ora dalle ferie),
comunque, il codice sibapo non ha valenza idrogeologica o morfologica, è semplicemente un metodo univoco per codificare i corsi d'acqua a partire dalla foce (sempre individuabile univocamente) su tutto il territorio nazionale, definito originariamente dall'Autorita di Bacino del Po per la codifica univoca di questo fiume e di tutti i sui affluenti, ed in seguito adottato in ambito intesaGIS nella specifica del DBPrior10k. La sua identificazione può essere ricostruita analiticamente anche senza criteri spaziali (ma per ogni affluente occorre conoscere il padre) e tenendo conto che la sequenza degli affluenti di uno stesso ordine, se fatta a più riprese, dipende dal livello di dettaglio del rilievo.

in allegato un estratto della specifica del DBPrior10k in merito (il doc integrale lo trovate al link http://www.centrointerregionale-gis.it/DBPrior/1N1005v1.0.pdf)

per venire al problema in esame la ricostruzione del codice a partire da anagrafiche preesistenti e parziali può avvenire in maniera speditiva ed analitica ma l'attribuzione del codice nazionale ed interregionale e poi regionale deve essere fatta dagli enti preposti (censimento nazionale SINA e Regioni appunto). Ad ogni buon conto dal punto di vista pratico il completamento per quei tratti privi di codice potrebbe essere fatto speditivamente con procedura ad hoc che controlla gli estremi di ogni arco ed attribuisce come padre il codice del tratto di ordine superiore che tali punti intercettano. (criterio analogo fu utilizzato a suo tempo per il completamento del grafo di Regione Toscana, mi dice il collega David Pellegrini). Addirittura l'attribuzione del codice SIBAPO può avvenire, anche se con una forzatura, indipendentemente dal verso, ad esempio sui canali che in alcuni casi cambiano verso nell'arco di una stessa giornata. Spero di sbagliarmi ma dubito che esistano procedure consolidate, soprattutto open, trattandosi di un criterio nostrano.

buona fortuna quindi.
Manuela

Il 26/07/2012 8.08, Geodrinx ha scritto:

Salve,

qualcuno conosce un metodo per ricostruire la gerarchia di un grafo di un file idrografico?

Vedo di spiegare meglio ( se riesco ).

Il layer SHP di "DBPrior 10k" contiene gli assi idrografici italiani, con una buona ( ma variabile ) rappresentazione planimetrica.
Nelle informazioni associate troviamo un campo, chiamato "sibapo", formato da una stringa di caratteri, separati da punti, che descrivono la gerarchia dei vari rami dei corsi d'acqua. Ad esempio, con "001.002.005.000.000" si individua il quinto ramo del secondo affluente del primo fiume d'Italia.
Ora, il problema e' che il campo "sibapo" non e' stato riempito sempre.

Quindi, torno alla mia domanda iniziale:
Esiste un metodo, in Grass o altro sw open, per ricostruire il "sibapo" ( o altro ) di un grafo gerarchico, come quello idrografico?

Riconoscenza eterna :wink:

Saluti

Rob
_______________________________________________
Gfoss@lists.gfoss.it
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
Non inviate messaggi commerciali.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.
605 iscritti al 10.7.2012

--
Dott. Ing. Manuela Corongiu
Researcher

Consorzio LAMMA
LAboratory for Monitoring and Environmental Modelling for the
sustainable development
http://www.lamma.rete.toscana.it
corongiu@lamma.rete.toscana.it
CNR Research Area - Building D, Via Madonna Del Piano, 10
50019 Sesto Fiorentino (Florence) - Italy
TEL +39 055 4483075
FAX +39 055 444083

SIBAPO.txt (3.33 KB)