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.