Mehr

Auflösen von Liniensegmenten in QGIS, wenn sie sich berühren und in dieselbe Klasse fallen?

Auflösen von Liniensegmenten in QGIS, wenn sie sich berühren und in dieselbe Klasse fallen?


Ich habe Liniensegmente mit den folgenden 3 Attributen (Class, start_point, end_point). Ich möchte Liniensegmente zusammenführen/auflösen, die in dieselbe Klasse fallen, wenn sie sich schneiden (berühren).

d.h. wenn der end_point eines Liniensegments und der start_point eines anderen Liniensegments gleich sind (ähnliche Werte). (NB. Ich möchte Zeilen mit demselben Klassenwert auflösen. Das Auflösefeld kann auch ein neues Feld sein, das generiert wird, wenn Streams die obige Bedingung erfüllen: dh sie fallen in dieselbe Klasse sowie in den Endpunkt eines Segments = start_point eines anderen Segments)

Die eingekreisten Zahlen repräsentieren die Klasse (Reihenfolge) der Streams. Jedes Segment hat eine entsprechende Klassennummer, wie gezeigt. Die rot eingekreisten Segmente sollten separat aufgelöst werden. Das gleiche sollte für die grün eingekreisten Segmente gemacht werden. Jedes Segment hat einen start_point und einen end_point. Bei den gelb markierten Segmenten fallen beispielsweise der Endpunkt des einen Segments und der Startpunkt des anderen zusammen.

Das rot eingekreiste untere Segment sollte nicht mit dem grün eingekreisten unteren Segment aufgelöst werden, da nur deren Endpunkte zusammenfallen.

Wie kann ich dies in QGIS tun?


Es hängt alles davon ab, wie Ihre Daten aussehen. Eine einfache Möglichkeit besteht darin, zwei Schritte zu verwenden:

  1. Standard-Bild - Geoverarbeitungswerkzeuge - Auflösen (alles mit derselben Klasse auflösen)
  2. Standard-Bild - Geometriewerkzeuge - Multipart zu Singleparts (bremst Linien, die keine einzelnen Linien berühren)

Bitte beachten Sie, dass die Tabellenwerte - start_point und end_point für Linien nach diesen Schritten keinen großen Wert mehr haben. Das Ergebnis sind auch auf diese Weise aufgelöste Linien, wenn sich deren Anfangs- und Endpunkt immer genau 2 Linien berühren. Wenn sie sich außerhalb von Start-/Endpunkten berühren, sich kreuzen oder mehrfach berühren (typischerweise Y-Kreuz), werden diese nach dem zweiten Schritt nicht aufgelöst.


@Miro, ich muss mich nochmal bedanken. Ich habe Ihren Ansatz wieder verwendet und ein anderes Tool gefunden, das hilft, z. B. "Linien mit Linien teilen". Für jede Klasse (Reihenfolge) schneide ich sie mit der nächsthöheren Reihenfolge. Der von mir verwendete Ansatz ist schließlich;

  1. Auflösen (alles mit der gleichen Klasse auflösen)

  2. Multipart zu Singleparts (unterbricht Linien, die keine einzelnen Linien berühren)

  3. Extrahieren Sie jede Klasse (Reihenfolge) von Streams (daher erstellen Sie neue Shapefiles für jede Stream-Reihenfolge)

  4. Verwenden Sie in der Verarbeitungs-Toolbox das Werkzeug "Linien mit Linien teilen" - Schneiden Sie jede Klasse mit einer höheren Klasse.

Die Ergebnisse sind wie erwartet.


Schau das Video: Join attributes by location with QGIS