Zusammenführen von Linien mit leicht unterschiedlichen Endpunkten in QGIS


22

In QGIS habe ich zwei Zeilen. Die Endpunkte sind nahe beieinander, aber nicht ganz ausgerichtet. Ich möchte die beiden Linien in eine verwandeln, wobei die beiden Endpunkte zu Mittelpunkten zusammengeführt werden.

Am nächsten konnte ich mit "Ausgewählte Features zusammenführen" kommen. Das gibt mir ein Feature, aber es besteht aus zwei getrennten Linien - es gibt keine Linie zwischen den Endpunkten.

Ich suche nach etwas, das sich ähnlich wie die Funktion "Verknüpfungspfade" in Illustrator verhält (Objekt> Pfade> Verknüpfen).

Tut QGIS das?

Antworten:


12

Schnelle Antwort: nein! Es gibt kein solches Werkzeug, um diese Operation direkt auf der Ebene durchzuführen (das Plugin "Join Two Lines" erfordert eine Schnittmenge).

Sie können dies für eine sehr einfache Ebene tun, indem Sie die Linien in Punkte umwandeln (Knoten extrahieren) und dann mit points2one (Linienausgabe) verbinden. Dies ist jedoch VIEL langsamer als das bloße Bearbeiten von Hand:

  1. Stellen Sie sicher, dass für Ihre Linienebene das Ausrichten (Einstellungen | Ausrichtungsoptionen ...) aktiviert ist (5 Pixel eignen sich gut für mich).
  2. Erstellen Sie eine neue Linie von einem Endpunkt zum anderen.
  3. Wählen Sie alle drei Linien aus (die beiden ursprünglichen Linien + die neue) und führen Sie sie zusammen (Bearbeiten | Ausgewählte Features zusammenführen oder Symbolleistenschaltfläche).

1
Vielen Dank. Ich musste nur ein paar Zeilen zusammenführen, das war also schnell und einfach. (@Michael Markietas Antwort schien für komplexe Situationen besser geeignet zu sein.)
Evan

14

Sie können dies mit einer Kombination aus QGIS und GRASS erreichen.

  1. Importieren Sie Ihre Vektorebene in ein GRASS-Mapset (Grass | File> Import Vector Data)
  2. Öffne dein Mapset in QGIS (QGIS | Plugins> GRASS> Mapset öffnen)
  3. Fügen Sie Ihrem QGIS-Projekt eine Vektorebene aus Ihrem GRASS-Mapset hinzu (QGIS | Plugins> GRASS> GRASS-Vektorebene hinzufügen).
  4. Verwenden Sie v.clean.snap (QGIS | Plugins> GRASS> GRASS-Tools öffnen> Modulliste> v.clean.snap)

Passen Sie den 'Schwellenwert' für v.clean.snap an, um ein korrektes Vertex-Snapping im gesamten Untersuchungsbereich zu erzielen.


10

Ich gehe davon aus, dass Sie zwei Liniensegmente zu einer Linie verbinden möchten. Bildbeschreibung hier eingeben

So habe ich es gemacht ...

  • Bearbeitung aktivieren.
  • Fang einschalten (Einstellungen -> Fangoptionen ...) Bildbeschreibung hier eingeben
  • Wählen Sie das Knoten-Knoten-Werkzeug aus.Bildbeschreibung hier eingeben
  • Doppelklicken Sie nahe am Ende einer der Zeilen, um einen Knoten hinzuzufügen. Bildbeschreibung hier eingeben
  • Ziehen Sie den Knoten am Ende, um ihn am Ende der anderen Zeile einrasten zu lassen Bildbeschreibung hier eingeben
  • Wählen Sie beide Zeilen aus
  • Füge ihre Attribute zusammen (du kannst keine Zeile machen, wenn sie unterschiedliche Attribute haben)Bildbeschreibung hier eingeben
  • Verbinden Sie die beiden FunktionenBildbeschreibung hier eingeben

Dies sollte zu einer Zeile führen. Bildbeschreibung hier eingeben


Alles gut. Aber wie wäre es mit einem Datensatz von 22.000 Zeilen? Ich kann das nicht manuell machen ...
FaCoffee


3

Wenn Sie meinen, dass Ihr einzelnes Feature aus einem MULTILINESTRING anstelle eines einzelnen LINESTRING besteht, können Sie dies problemlos beheben, wenn Sie eine Postgis-Datenbank verwenden:

update your_table set your_geo_column = ST_LineMerge(your_geo_column);

Wenn Sie möchten, dass nur die Zeile 1 dies tut, sollten Sie natürlich WHERE id = your_row_id hinzufügen.


2

Auch könnte jemand versuchen:

  1. Speichern Sie .shp als .dxf
  2. öffne .dxf mit DraftSight
  3. Polylinienteile verbinden
  4. öffne .dxf mit qgis und speichere es als .shp
  5. aus dem Vektor-Menü -> Geometrie-Werkzeuge -> Linien zu Polygonen

2

Ich habe dies gerade mit QGIS 3.4.0 gemacht, indem ich das Plugin Join Multiple Lines verwendet habe, das von tnagel oben erwähnt wurde (wird unter Vector menu> Join Multiple Lines installiert). Es hat gut funktioniert, um ungefähr 60 Spurlinienfragmente in ungefähr 20 Spurlinien zu verbinden. Je mehr Fragmente Sie haben und je größer der Bereich, den sie abdecken, desto weniger praktisch ist dies, da Sie die Ergebnisse auf Probleme untersuchen müssen (möglicherweise hatte tnagel eines der von mir beschriebenen Probleme).

Sie wählen die Linien aus, die Sie verbinden möchten, klicken auf das Menüelement und es verbindet sie (Sie können so viele Linien auswählen, wie Sie möchten, aber ...). Auch wenn die Enden einen Kilometer voneinander entfernt sind, erhalten Sie eine gerade Linie vom Stellen Sie also sicher, dass Ihre Enden nah genug sind, damit Sie mit den Ergebnissen zufrieden sind (ich habe den Tipp in einem anderen Beitrag verwendet, um die Enden meiner Linien mit Markierungen zu markieren, damit sie einfach waren um zu sehen (Eigenschaften> Symbologie> eine Markierungslinie hinzufügen und das Symbol so groß machen, dass es leicht zu sehen ist> das Optionsfeld "nur am letzten Scheitelpunkt" auswählen (und wenn Sie möchten, eine weitere Markierungslinie mit einem anderen Symbol hinzufügen und zuerst "auswählen" nur Eckpunkt ")).

Außerdem können Linien anscheinend gerichtet sein. Sie müssen also (zum Beispiel) darauf achten, dass das südlichste Ende der Linie A nicht mit dem südlichsten Ende der Linie B darunter verbunden ist (eine weitere lange gerade Linie, bei der Sie dies nicht möchten).

Als dies passierte, konnte ich "rückgängig machen" und "Linie umkehren" in der Advanced Processing Toolbar verwenden, um die Richtung einer Linie von einem Ende zum anderen zu ändern (ändert nichts an der Position der Linie, kippt nur den Zeilenanfang) mit dem Ende der Linie), dann verbinden Sie die Linien wieder.

Eine gute Sache dabei ist, dass Ihre Änderungen / Bearbeitungen auf Ihrer vorhandenen Ebene gespeichert werden, sodass Sie die Ergebnisse nicht als neues Shapefile speichern müssen (erstellen Sie zuerst ein Backup).

Ich bin immer wieder erstaunt über die Arbeit der QGIS Core- und Plugin-Entwickler. Zeigt, was intelligente, konstruktive Menschen tun können, wenn sie sich für eine Zusammenarbeit entscheiden. Vielen Dank!


0

Verwenden von OpenJUMP (Plus Edition):

  1. Datei> Datei öffnen
  2. Plugins> Topologie> Reinigung der Netzwerktopologie ...
  3. Rechtsklick auf die neue Ebene (behoben): Datensatz speichern unter ....

Das ist das Ergebnis: Bildbeschreibung hier eingeben


0

In meinem Fall waren die Linien in verschiedenen Ebenen und mit verschiedenen Attributen. Ich habe die Ebenen mit mmqgis zusammengeführt und im nächsten Schritt die Linien mit der Technik des Ausrichtens und Zusammenführens von Linien zusammengeführt.

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.