Converti una linea in poligono


13

Ho uno shapefile con aree della città, ma sfortunatamente lo shapefile contiene solo linee singole. Lo shapefile è simile al seguente:

inserisci qui la descrizione dell'immagine

Voglio convertire quelle linee in un file di forma poligonale in QGIS. L'ho provato con lo strumento "Linee ai poligoni" (Vettore> Strumenti geometria> Linee ai poligoni), ma non ha funzionato correttamente. Dopo aver utilizzato questo strumento, il file di forma è simile al seguente:

inserisci qui la descrizione dell'immagine

Esiste un altro modo per convertire lo shapefile della linea in uno shapefile del poligono dell'area in QGIS?

A proposito, sto usando QGIS 2.14.3 Essen.


2
Ho avuto qualcosa di simile l'ultima volta che ho usato quello strumento. Sono stato in grado di ottenere poligoni usando lo strumento poligonizza.
Giovanni,

Grazie per la tua risposta, dove posso trovare lo strumento poligonale?
Mark White,

Polygonize può essere trovato qui: Toolbox di elaborazione, geoalgoritmi QGIS, strumenti di geometria vettoriale.
Klewis,

L'ho provato, ma quando eseguo il poligonizzatore ottengo un file di forma vuoto :-(
Mark White

Puoi caricare lo shapefile su dropbox o simili?
AndreJ,

Risposte:


16

Lo Polygonizestrumento dalla casella degli strumenti di elaborazione funziona ancora bene per me su linee semplici:

inserisci qui la descrizione dell'immagine

È tuttavia necessario che le linee si intersecino o condividano vertici comuni. E le linee non dovrebbero avere autointersezione.

Potrebbe essere necessario scattare i vertici degli angoli per farlo funzionare. Di solito imposto la tolleranza di aggancio su 10 pixel al vertice.


1
Anch'io ho affrontato lo stesso problema durante la conversione di linee in poligoni. Lo strumento "Poligonizza" ha risolto il problema. gis.stackexchange.com/a/211794/62237
Sjs

7

Solo un suggerimento se non riesci a trovare lo Polygonizestrumento. Nella mia installazione di QGIS 2.18.3 (Windows) non sono riuscito a trovare lo Polygonizestrumento Vector geometry toolsnella Toolbox. Mi ci è voluto del tempo per rendermi conto che dovevo installare la python-shapelylibreria con OSGeo4W (grazie a Nick Hopton: poligoni perfetti in QGIS ).


Grazie! Sono stato confuso a lungo perché QGIS pronto all'uso su Windows ha uno strumento poligonale che è solo per i raster. Un altro passaggio che potrebbe essere necessario o meno necessario è abilitare i geoalgoritmi QGIS in "Elaborazione >> Opzioni >> Fornitori"
matt wilkie,

Grazie per questa risposta Pensavo di impazzire non trovandolo più ...
gisnside,

3

Guardando la tua immagine, suppongo che ogni linea non comprenda completamente un'area, le linee agiscono solo come recinzioni e non si riconnettono all'inizio. I tuoi poligoni vengono creati dalle estremità delle linee in modo che lo strumento "linee a poligoni" funzioni correttamente, è il dato che è il problema.

Temo che l'unico che tu possa fare a cui possa pensare sia digitalizzare un nuovo strato di poligoni. Per fortuna QGIS lo ha reso molto semplice con lo strumento di digitalizzazione della traccia (un'icona a calamita) disponibile in 2.14


0

Se non ci sono buchi, creerei uno strato di graffio con un singolo poligono abbastanza grande da coprire l'intera area. Quindi lo intersecherei con il risultato delle tue linee-poligoni e lo dividerei ulteriormente se necessario.


0

Testato su QGIS 2.18 e QGIS 3.4

Posso suggerire di usare un "Virtual Layer"through Layer > Add Layer > Add/Edit Virtual Layer....

Supponiamo di avere cinque funzioni lineari "lines", vedi immagine sotto.

Esempio

Con la seguente query, è possibile ottenere il risultato.

SELECT l.id, l.NAME, MakePolygon(AddPoint(l.geometry,StartPoint(l.geometry)))
FROM lines AS l
GROUP BY l.id

Il livello virtuale di output sarà simile

result_1

Come già accennato da @AndreJ le linee devono intersecarsi o condividere vertici comuni. E le linee non dovrebbero avere autointersezione. In termini di pulizia della topologia del livello, posso suggerire di esplorare il v.cleanset di strumenti GRASS.


Nel caso in cui le linee abbiano autointersezione, è possibile utilizzare un ConvexHull con la seguente query

SELECT l.id, l.NAME, ConvexHull(AddPoint(l.geometry,StartPoint(l.geometry)))
FROM lines AS l
GROUP BY l.id

Astuccio

Produzione


Riferimenti:


0

Se le polilinee si sovrappongono, lo Polygonizestrumento non può gestirlo come segue:

inserisci qui la descrizione dell'immagine

Tuttavia lo Lines to polygonsstrumento funziona come previsto come segue:

inserisci qui la descrizione dell'immagine

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.