[Gfoss] GRASS: linee e poligoni

Salve.
Sto cercando di fare una cosa apparentemente semplice, senza successo: trasformare un
contour da linee a poligoni. Uso questi comandi:

#set the region around contour
v.in.region output=region_line type=line
v.patch input=contour,region_line output=patched
v.clean input=patched@paolo type=line tool=snap thresh=1 output=patched_1
v.clean input=patched@paolo type=line tool=break output=patched_break
v.type input=patched_break@paolo output=patched_break_boundaries type=line,boundary
v.centroids input=patched_break_boundaries output=polygons

Il problema e' che le aree non diventano chiuse, quindi i centroidi non si applicano.
Qualcuno ha idea del perche'?
Grazie.
--
Paolo Cavallini - Faunalia
www.faunalia.eu
Full contact details at www.faunalia.eu/pc

ciao

Il 10 febbraio 2012 07:45, Paolo Cavallini <cavallini@faunalia.it> ha scritto:

Salve.
Sto cercando di fare una cosa apparentemente semplice, senza successo: trasformare un
contour da linee a poligoni. Uso questi comandi:

#set the region around contour
v.in.region output=region_line type=line
v.patch input=contour,region_line output=patched
v.clean input=patched@paolo type=line tool=snap thresh=1 output=patched_1
v.clean input=patched@paolo type=line tool=break output=patched_break
v.type input=patched_break@paolo output=patched_break_boundaries type=line,boundary
v.centroids input=patched_break_boundaries output=polygons

non so se sia corretto, ma con un problema più o meno analogo (dovevo
anche rimuovere i... ''piccoli angoli tra geometrie') avevo risolto
con un'unica istruzione v.clean

v.clean input=patched@paolo out=patched_1 type=line \
      tool=break,snap,rmdangle,rmline,rmsa,rmdupl \
      thresh=0,0.4,0.45,0,0,0 --overwrite

l'ordine dei tools è rilevante non solo perchè è accoppiato con i
valori di thresh (da scegliere ad hoc in funzione delle proprie
esigenze e dei dati), ma anche perchè cambia completamente il tipo di
lavoro che v.clean svolge sulle geometrie.

ciao

--
--
Paolo C.

Il 10/02/2012 08:41, Paolo Craveri ha scritto:

v.patch input=contour,region_line output=patched
v.clean input=patched@paolo type=line tool=snap thresh=1 output=patched_1
v.clean input=patched@paolo type=line tool=break output=patched_break
v.type input=patched_break@paolo output=patched_break_boundaries type=line,boundary
v.centroids input=patched_break_boundaries output=polygons

non so se sia corretto, ma con un problema più o meno analogo (dovevo
anche rimuovere i... ''piccoli angoli tra geometrie') avevo risolto
con un'unica istruzione v.clean

v.clean input=patched@paolo out=patched_1 type=line \
      tool=break,snap,rmdangle,rmline,rmsa,rmdupl \
      thresh=0,0.4,0.45,0,0,0 --overwrite

l'ordine dei tools è rilevante non solo perchè è accoppiato con i
valori di thresh (da scegliere ad hoc in funzione delle proprie
esigenze e dei dati), ma anche perchè cambia completamente il tipo di
lavoro che v.clean svolge sulle geometrie.

Grazie.
Ho dato comandi singoli perche' voglio trovare una procedura usabile anche con il
plugin grass-qgis, senza obbligare all'uso della temutissima CLI.
Nel mio caso, mi pare che rmdangle,rmline,rmsa,rmdupl non servano, quindi l'unica
differenza e' che tu applichi contemporaneamente break e snap (ma esegue prima l'uno
o l'altro?). In ogni caso, ho riprovato col tuo comando "unificato", e non ho trovato
differenze.
L'output e' sospetto:
Numero di nodi: 87
Numero di primitive:52
Numero di punti:0
Numero di linee:0
Numero di confini:52
Numero di centroidi:0
Numero di aree:17
Numero di isole:17
Numero di confini non corretti:35
Numero di aree senza centroide:17
Mah?
Saluti.
--
Paolo Cavallini - Faunalia
www.faunalia.eu
Full contact details at www.faunalia.eu/pc

2012/2/11 Paolo Cavallini <cavallini@faunalia.it>:
...

Ho dato comandi singoli perche' voglio trovare una procedura usabile anche con il
plugin grass-qgis,

Vi prego di poi espandere
http://grass.osgeo.org/wiki/Vector_topology_cleaning

grazie
Markus

Il 11/02/2012 10:46, Markus Neteler ha scritto:

Vi prego di poi espandere
http://grass.osgeo.org/wiki/Vector_topology_cleaning

se arrivo in fondo, volentieri.
francamente sono molto sorpreso che una cosa apparentemente semplice non riesca al volo.
saluti, e grazie.

--
Paolo Cavallini - Faunalia
www.faunalia.eu
Full contact details at www.faunalia.eu/pc

2012/2/11 Paolo Cavallini <cavallini@faunalia.it>:

Il 11/02/2012 10:46, Markus Neteler ha scritto:

Vi prego di poi espandere
http://grass.osgeo.org/wiki/Vector_topology_cleaning

se arrivo in fondo, volentieri.
francamente sono molto sorpreso che una cosa apparentemente semplice non riesca al volo.

Non sto seguendo in dettaglio ma magari sulla lista in
inglese ricevi un suggerimento?

ciao
Markus

Il 11/02/2012 16:18, Markus Neteler ha scritto:

Non sto seguendo in dettaglio ma magari sulla lista in
inglese ricevi un suggerimento?

gia' provato, non ho risolto, acc! :slight_smile:
grazie.
--
Paolo Cavallini - Faunalia
www.faunalia.eu
Full contact details at www.faunalia.eu/pc

2012/2/11 Paolo Cavallini <cavallini@faunalia.it>:

Il 11/02/2012 16:18, Markus Neteler ha scritto:

Non sto seguendo in dettaglio ma magari sulla lista in
inglese ricevi un suggerimento?

gia' provato, non ho risolto, acc! :slight_smile:

Cmq, c'erano dei suggerimenti...

ciao
markus

Il 12/02/2012 09:19, Markus Neteler ha scritto:

2012/2/11 Paolo Cavallini <cavallini@faunalia.it>:

Il 11/02/2012 16:18, Markus Neteler ha scritto:

Non sto seguendo in dettaglio ma magari sulla lista in
inglese ricevi un suggerimento?

gia' provato, non ho risolto, acc! :slight_smile:

Cmq, c'erano dei suggerimenti...

i suggerimenti erano, mi pare, gli stessi di Paolo Craveri, ovvero di aggiungere
tool=snap,break,rmdupl,rmsa
Provato nuovamente, il risultato non cambia.
Nessun altro puo' provare e dirmi dove sbaglio?
Giuro che se si trova la soluzione lo documento tutto perbenino sul wiki.
Grazie.
--
Paolo Cavallini - Faunalia
www.faunalia.eu
Full contact details at www.faunalia.eu/pc

Il 12/02/2012 11:26, Luca Sigfrido Percich ha scritto:

se usi l'opzione -error di v.clean hai la possibilità di salvare in un
layer gli errori e di andare a vedere dove stanno quei 35 confini non
corretti. Se hai intersecato le curve di livello con un boundary
rettangolare, dovresti avere dei dangling arcs da rimuovere con
rmdangle, a meno che le isolinee non fossero già tagliate. O potresti
avere degli "undershot" (punti in cui le isolinee non arrivano al
boundary).

Verificato, non ci sono ne' gli uni ne' gli altri (d'altronde, v.clean dovrebbe
proprio ripulire questo).
Qualcuno ci riesce a chiudere queste aree? Se volete posso mettere a disposizione una
location di esempio.
NB: non lo faccio per risolvere un problema mio, ma per trovare una soluzione ad un
problema, per tutti.
Saluti, e grazie.
--
Paolo Cavallini - Faunalia
www.faunalia.eu
Full contact details at www.faunalia.eu/pc

Ciao Paolo,

Il giorno dom, 12/02/2012 alle 16.35 +0100, Paolo Cavallini ha scritto:

Verificato, non ci sono ne' gli uni ne' gli altri (d'altronde, v.clean dovrebbe
proprio ripulire questo).

Non se non glielo chiedi tu (rmdangle). E anche se glielo chiedi, in
funzione della tolleranza che imposti, non è detto che elimini tutti gli
sporchi. E anche eliminati gli sporchi, non è detto che il risultato sia
topologicamente corretto.

Qualcuno ci riesce a chiudere queste aree? Se volete posso mettere a disposizione una
location di esempio.

Metti i dati a disposizione, provo a dargli un occhio appena ho tempo.

Sig

Il 12/02/2012 17:12, Luca Sigfrido Percich ha scritto:

Metti i dati a disposizione, provo a dargli un occhio appena ho tempo.

Grazie mille:
https://int.faunalia.it/~paolo/tast.tar.gz
Saluti.
--
Paolo Cavallini - Faunalia
www.faunalia.eu
Full contact details at www.faunalia.eu/pc

Paolo Cavallini wrote

Salve.
Sto cercando di fare una cosa apparentemente semplice, senza successo:
trasformare un
contour da linee a poligoni. Uso questi comandi:

#set the region around contour
v.in.region output=region_line type=line
v.patch input=contour,region_line output=patched
v.clean input=patched@paolo type=line tool=snap thresh=1 output=patched_1
v.clean input=patched@paolo type=line tool=break output=patched_break
v.type input=patched_break@paolo output=patched_break_boundaries
type=line,boundary
v.centroids input=patched_break_boundaries output=polygons

Il problema e' che le aree non diventano chiuse, quindi i centroidi non si
applicano.

Ciao Paolo.
Ho provato dal plugin GRASS in QGIS a simulare la chiusura di una linea
perfettamente snappata e funziona.
Poi ho spezzato la linea ed ho spostato a mano due vertici; quindi con
v.clean l'ho snappata e poi lho chiusa chiusa come poligono e pure ha
funzionato.

*v.clean input=limite_linee type=line =0 tool=snap thresh=1
output=linee_clean
v.type input=lineee_clean =line =0 output=linee_polig_2 type=line,boundary*

cmq non ho capito un tuo passaggio
con *v.patch input=contour,region_line output=patched* hai messo insiem
contour (che è poligono?) con region_line (che è linea?).......se è così,
potrebbe esser qua il problema?

Ciao

Gabriele

--
View this message in context: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/GRASS-linee-e-poligoni-tp7271773p7278084.html
Sent from the Gfoss -- Geographic Free and Open Source Software - Italian mailing list mailing list archive at Nabble.com.

Ciao Paolo,

ho provato con i tuoi dati e i tuoi comandi, stesso problema. Vengono
chiusi solo alcuni dei poligoni ad isola, e rimane la segnalazione dei
35 confini non corretti. Penso che il problema stia li.

Ad occhio sembra che le linee tocchino il rettangolo esterno, ma la cosa
strana è che se diamo:

v.clean --overwrite input=patched output=patched_brk tool=break
type=line,boundary thresh=0 error=cln_error

il vettoriale cln_error rimanga vuoto, mentre in teoria dovrebbe
riportare i punti di intersezione trovati, ovvero tutti i punti di
intersezione fra le parti terminali delle isolinee e il rettangolo
esterno.

Prova a ridurre di un metro il rettangolo in modo da essere sicuro che
intersechi le linee.

Sig

Il giorno dom, 12/02/2012 alle 17.24 +0100, Paolo Cavallini ha scritto:

Il 12/02/2012 17:12, Luca Sigfrido Percich ha scritto:

> Metti i dati a disposizione, provo a dargli un occhio appena ho tempo.

Grazie mille:
https://int.faunalia.it/~paolo/tast.tar.gz
Saluti.

2012/2/12 Paolo Cavallini <cavallini@faunalia.it>:

Il 12/02/2012 17:12, Luca Sigfrido Percich ha scritto:

Metti i dati a disposizione, provo a dargli un occhio appena ho tempo.

Grazie mille:
https://int.faunalia.it/~paolo/tast.tar.gz

Magari mi è sfuggito ma mi pare che questo link non c'era
nel tuo email alla lista in inglese. Potresti pubblicare il link
anche lì?

Cmq:
The requested URL /~paolo/tast.tar.gz was not found on this server.

ciao
Markus

Il 12/02/2012 19:56, Markus Neteler ha scritto:

Magari mi è sfuggito ma mi pare che questo link non c'era
nel tuo email alla lista in inglese. Potresti pubblicare il link
anche lì?

L'ho preparato ora; lo mando.

Cmq:
The requested URL /~paolo/tast.tar.gz was not found on this server.

sorry, typo:
http://int.faunalia.it/~paolo/test.tar.gz
(la domenica *sarebbe* fatta per il riposo :wink: ).
--
Paolo Cavallini - Faunalia
www.faunalia.eu
Full contact details at www.faunalia.eu/pc

Il 12/02/2012 19:05, Luca Sigfrido Percich ha scritto:

Prova a ridurre di un metro il rettangolo in modo da essere sicuro che
intersechi le linee.

Provero', ma in questo caso vuol dire che lo snap non funziona.
Ho guardato, e anche zoommando non pare ci sia un gap.
Grazie.
--
Paolo Cavallini - Faunalia
www.faunalia.eu
Full contact details at www.faunalia.eu/pc

ciao
penso che qualche gap ci sia;
con la location test se creo una spezzata chiusa completamente
contenuta in region_line i poligoni (63) vengono creati correttamente:

echo "VERTI:
L 5 1
1663637.23402825 4876196.01742494
1672839.35615377 4876112.17120967
1672713.58683087 4869635.05108032
1663595.31092062 4869802.74351086
1663637.23402825 4876196.01742494
1 1" | v.in.ascii output=border format=standard --overwrite
v.patch input=contour,border output=arcs --overwrite
v.out.ogr input=arcs type=line dsn=lines.shp
v.in.ogr dsn=lines.shp output=arcsfromshp --overwrite
v.clean input=arcsfromshp tool=break,rmdupl,snap,rmdangle
thresh=0,0,0.1,-1 out=patched_snapped --overwrite
v.type input=patched_snapped out=bound type=line,boundary --overwrite
v.centroids input=bound output=polygons --overwrite

Se non passo attraverso lo shapefile v.clean non spezza gli archi
(break); non ho capito perchè...

ciao

--
--
Paolo C.

2012/2/12 Paolo Craveri <pcraveri@gmail.com>:

ciao
penso che qualche gap ci sia;
con la location test se creo una spezzata chiusa completamente
contenuta in region_line i poligoni (63) vengono creati correttamente:

Ottimo.

...

Se non passo attraverso lo shapefile v.clean non spezza gli archi
(break); non ho capito perchè...

Un caso per Markus Metz. Sicuramente non è necessario. "Basta" capire
il pezzo mancante - un caso per la lista in inglese con il link ai dati.

curioso,
MarkusN

Il 12/02/2012 17:26, Gabriele N. ha scritto:

con *v.patch input=contour,region_line output=patched* hai messo insiem
contour (che è poligono?) con region_line (che è linea?).......se è così,
potrebbe esser qua il problema?

No: ho messo insieme contour (linea) e region (linea). Poi ho cercato di trasformare il tutto in poligoni, ed e' li' che fallisce.
Grazie.

--
Paolo Cavallini
See: http://www.faunalia.it/pc