[Gfoss] Da linee di confine a poligoni

Salve,
non ricordo se questo problema, credo abbastanza comune, sia mai stato
proposto e quindi ecco qua.
Volendo passare da dalle poli-linee, che rappresentano i confini di aree
limitrofe, ai corrispondenti poligoni, l'algoritmo di "poligonizzazione",
per come esso opera, produce un risultato scorretto (vd. per esempio
immagine allegata).
<http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/file/t395630/confini_poligoni.png&gt;

Esiste un qualche modo di pre-trattare il layer delle linee per risolvere il
problema, evitando di ridigitalizzare (ricalcare) tutti i poligoni a mano?

Saluti
Nino

--
Sent from: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/

Ciao Nino,

per aiutare a contestualizzare il problema:

  * qual è l'algoritmo di poligonalizzazione che hai applicato? (gdal,
    grass, qgis)
  * in che software l'hai applicato e che versione? (es. QGIS 2.18)
  * come sono fatte le linee? Sono tratti spezzati a ogni intersezione?
    Hai un dataset di esempio?

Grazie,

Ale

On 06/09/2018 13:33, nformica wrote:

Salve,
non ricordo se questo problema, credo abbastanza comune, sia mai stato
proposto e quindi ecco qua.
Volendo passare da dalle poli-linee, che rappresentano i confini di aree
limitrofe, ai corrispondenti poligoni, l'algoritmo di "poligonizzazione",
per come esso opera, produce un risultato scorretto (vd. per esempio
immagine allegata).
<http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/file/t395630/confini_poligoni.png&gt;

Esiste un qualche modo di pre-trattare il layer delle linee per risolvere il
problema, evitando di ridigitalizzare (ricalcare) tutti i poligoni a mano?

Saluti
Nino

--
Sent from: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/
_______________________________________________
Gfoss@lists.gfoss.it
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
796 iscritti al 28/12/2017

--

Alessandro Sarretta

skype/twitter: alesarrett
Web: ilsarrett.wordpress.com <http://ilsarrett.wordpress.com>

Research information:

  * Google scholar profile
    <http://scholar.google.it/citations?user=IsyXargAAAAJ&hl=it&gt;
  * ORCID <http://orcid.org/0000-0002-1475-8686&gt;
  * Research Gate <https://www.researchgate.net/profile/Alessandro_Sarretta&gt;
  * Impactstory <https://impactstory.org/AlessandroSarretta&gt;

Ciao Ale,

ho provato l'algoritmo di QGIS (QGIS 2.18) che credo si basi su quello di
GDAL.
Per quanto riguarda GRASS, ho provato la sequenza: v.type (per passare da
lines a boundaries), v.centroids; ma anche questa non funziona.

Certo le linee sono delle spezzate in tutti i punti di incrocio e infatti è
per questo che il "poligonize" genera dei poligoni sbagliati. D'altra parte
modificare una per una le linee, perchè il poligonize possa funzionare è
improponibile (tranne nei casi semplici).

Ne parlano anche in questa discussione:
https://gis.stackexchange.com/questions/207463/convert-a-line-to-polygon

Per eventuali prove, questo è un semplice layer di linee di esempio:
https://drive.google.com/open?id=1Zp1Qq69c6WD4knFmmlTvGBiIIfm3Dbjo

ma ovviamente mi interessa una soluzione che vada bene in generale anche in
casi più complessi.

Cari saluti
Nino

--
Sent from: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/

Ciao Nino,
che file strano con EPSG:3004 e con coordinate immaginarie.

In ogni casi l'ho guardato rapidamente a riga di comando con l'eccezionale
mapshaper e se poligonizzo ottengo un risultato che mi sembra corretto. Non
ho QGIS adesso disponibile, quindi non posso fare il tuo test.

<http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/file/t185083/yvhDYzV.png&gt;

-----
Andrea Borruso

----------------------------------------------------
twitter: https://twitter.com/aborruso
website: https://medium.com/tantotanto
38° 7' 48" N, 13° 21' 9" E
----------------------------------------------------
--
Sent from: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/

On Thu, 6 Sep 2018 06:40:15 -0700 (MST), nformica wrote:

Per eventuali prove, questo è un semplice layer di linee di esempio:
https://drive.google.com/open?id=1Zp1Qq69c6WD4knFmmlTvGBiIIfm3Dbjo

ma ovviamente mi interessa una soluzione che vada bene in generale anche in
casi più complessi.

ciao Nino,

con SpatiaLite sembra facilissimo risolvere il problema, ma
suppongo che PostGIS dovrebbe dare piu' o meno gli stessi
identici risultati visto che entrambi usano le solite
librerie di base (GEOS etc).

1) ho importato il tuo SHP "siciliano" nella tavola "ambiti_reg"

2) poi ho eseguito la Polygonize in forma aggregata:

CREATE TABLE aggr_polyg (id INTEGER PRIMARY KEY);

SELECT AddGeometryColumn('aggr_polyg', 'geom', 3004, 'MULTIPOLYGON', 'XY');

INSERT INTO aggr_polyg
SELECT NULL, ST_Polygonize(geometry) FROM ambiti_reg;

a questo punto ho ottenuto un singolo MultiPolygon con
tutti i poligoni elementari correttamente ricostruiti.

3) ultimo passaggio: ho usato la ElementaryGeometries
    per "sciogliere" tutti i poligoni elementari. stop.

ciao Sandro

p.s.: spesso fatico a capire ... usare uno Spatial DBMS
dovrebbe essere _SEMPRE_ la prima soluzione ovvia e
scontata da prendere in esame per affrontare qualsiasi
problema di spatial processing.
noto che invece gli approcci Spatial SQL tendono
sistematicamente ad essere ignorati ... boh
non capisco ma mi adeguo :smiley:

nformica wrote

Salve,
non ricordo se questo problema, credo abbastanza comune, sia mai stato
proposto e quindi ecco qua.
Volendo passare da dalle poli-linee, che rappresentano i confini di aree
limitrofe, ai corrispondenti poligoni, l'algoritmo di "poligonizzazione",
per come esso opera, produce un risultato scorretto (vd. per esempio
immagine allegata).
&lt;http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/file/t395630/confini_poligoni.png&gt;

Esiste un qualche modo di pre-trattare il layer delle linee per risolvere
il
problema, evitando di ridigitalizzare (ricalcare) tutti i poligoni a mano?

Nino,
in QGIS 3 funziona bene, guarda qui [0]
basta usare gli strumenti di prosessing - poligonizza

[0]
<http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/file/t395773/poligonize.png&gt;

-----
https://pigrecoinfinito.wordpress.com/
--
Sent from: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/

E lo sapevo io che i "big" hanno sempre una soluzione facile pronta !!
Grazie a tutti: Andrea, Totò e Sandro.

In particolare Andrea, mi hai fatto conoscere "mapshaper" un altro tool che
può essere molto molto utile, anche perchè ha una comoda interfaccia web.

Grazie di nuovo !
Nino

--
Sent from: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/