Konvertiert eine Linie in ein Polygon


13

Ich habe ein Shapefile mit Stadtgebieten, aber leider enthält das Shapefile nur einzelne Zeilen. Das Shapefile sieht folgendermaßen aus:

Bildbeschreibung hier eingeben

Ich möchte diese Linien in QGIS in ein Flächenpolygon-Shapefile konvertieren. Ich habe es mit dem Werkzeug "Linien zu Polygonen" (Vektor> Geometriewerkzeuge> Linien zu Polygonen) versucht, aber es hat nicht richtig funktioniert. Nach Verwendung dieses Tools sieht das Shapefile folgendermaßen aus:

Bildbeschreibung hier eingeben

Gibt es eine andere Möglichkeit, das Linien-Shapefile in ein Flächen-Polygon-Shapefile in QGIS zu konvertieren?

Ich benutze übrigens QGIS 2.14.3 Essen.


2
Das letzte Mal, als ich dieses Tool verwendet habe, habe ich etwas Ähnliches erhalten. Ich konnte mit dem Polygonisierungswerkzeug Polygone erstellen.
Johns

Danke für deine Antwort, wo finde ich das Polygonisierungswerkzeug?
Mark White

Polygonize finden Sie hier - Processing Toolbox, QGIS-Geoalgorithmen, Werkzeuge für Vektorgeometrie.
Klewis

Ich habe es versucht, aber wenn ich den Polygonizer ausführe, erhalte ich eine leere Formdatei :-(
Mark White

Können Sie das Shapefile in Dropbox oder ähnliches hochladen?
AndreJ

Antworten:


16

Das PolygonizeTool aus der Verarbeitungs-Toolbox funktioniert für mich weiterhin in einfachen Zeilen:

Bildbeschreibung hier eingeben

Es ist jedoch erforderlich, dass sich die Linien schneiden oder gemeinsame Eckpunkte haben. Und Linien sollten keine Selbstüberschneidung haben.

Möglicherweise müssen Sie die Eckpunkte ausrichten, damit es funktioniert. Normalerweise setze ich die Fangtoleranz auf 10 Pixel zum Scheitelpunkt.


1
Auch ich hatte das gleiche Problem beim Konvertieren von Linien in Polygone. Das Werkzeug "Polygonisieren" hat das Problem behoben. gis.stackexchange.com/a/211794/62237
Sjs

7

Nur ein Hinweis, wenn Sie das PolygonizeTool nicht finden können . In meiner QGIS 2.18.3-Installation (Windows) konnte ich das PolygonizeTool in Vector geometry toolsder Toolbox nicht finden . Es dauerte einige Zeit, bis mir klar wurde, dass ich die python-shapelyBibliothek mit OSGeo4W installieren musste (danke Nick Hopton: Perfect Polygons in QGIS ).


Vielen Dank! Ich war lange verwirrt, weil QGIS unter Windows ein Werkzeug zum Polygonisieren enthält , das nur für Raster gedacht ist. Ein weiterer Schritt, der möglicherweise erforderlich ist oder nicht, ist die Aktivierung von QGIS-Geoalgorithmen unter "Processing >> Options >> Providers"
matt wilkie

Danke für diese Antwort. Ich dachte, ich würde verrückt werden,
wenn

3

Wenn ich mir dein Bild anschaue, würde ich annehmen, dass jede Linie einen Bereich nicht vollständig einschließt, die Linien nur als Zäune fungieren und sich am Anfang nicht wieder verbinden. Ihre Polygone werden an den Enden der Linien erstellt, sodass das Werkzeug "Linien zu Polygonen" einwandfrei funktioniert. Die Daten sind das Problem.

Ich fürchte, Sie können nur eine neue Schicht von Polygonen digitalisieren. Zum Glück hat QGIS dies mit dem Trace-Digitalisierungs-Tool (einem Magnetsymbol), das in 2.14 verfügbar ist, wirklich einfach gemacht


0

Wenn es keine Löcher gibt, würde ich eine Kratzer-Ebene mit einem einzelnen Polygon erstellen, das groß genug ist, um Ihren gesamten Bereich abzudecken. Dann würde ich es mit Ihrem Ergebnis von Linien zu Polygonen schneiden und es nach Bedarf weiter aufteilen.


0

Getestet auf QGIS 2.18 und QGIS 3.4

Ich kann vorschlagen, ein "Virtual Layer"durch zu verwendenLayer > Add Layer > Add/Edit Virtual Layer... .

Nehmen wir an, wir haben fünf Linien-Features "lines", siehe Bild unten.

Beispiel

Mit der folgenden Abfrage ist es möglich, das Ergebnis zu erzielen.

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

Die Ausgabe der virtuellen Ebene sieht folgendermaßen aus

Ergebnis_1

Wie bereits von @AndreJ erwähnt, sollen die Linien gemeinsame Eckpunkte schneiden oder teilen. Und Linien sollten keine Selbstüberschneidung haben. Im Hinblick auf die Bereinigung der Topologie des Layers kann ich vorschlagen, das v.cleanGRASS-Toolset zu untersuchen.


Für den Fall, dass Linien sich selbst schneiden, können Sie einen ConvexHull mit der folgenden Abfrage verwenden

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

Fall

Ausgabe


Verweise:


0

Wenn sich die Polylinien überlappen, Polygonizekann das Tool nicht wie folgt damit umgehen:

Bildbeschreibung hier eingeben

Das Lines to polygonsTool funktioniert jedoch wie folgt:

Bildbeschreibung hier eingeben

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.