Esiste un qualche modo di pre-trattare il layer delle linee per risolvere il
problema, evitando di ridigitalizzare (ricalcare) tutti i poligoni a mano?
* 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?
Esiste un qualche modo di pre-trattare il layer delle linee per risolvere il
problema, evitando di ridigitalizzare (ricalcare) tutti i poligoni a mano?
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).
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.
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:
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
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