Ich habe ein Shapefile von Linien und ein anderes von Polygonen. Wenn zwei oder mehr Linien ein Polygon schneiden, sollten sie verbunden (eingerastet) werden, aber manchmal tritt dies während der manuellen Digitalisierung nicht auf. Ich muss all diese Fehler finden und korrigieren. Ich habe v.clean
GRASS GIS verwendet und es hat automatisch viele Scheitelpunkte gefangen, was gut war, aber einige dieser getrennten Linien sind weiter von der Toleranz entfernt, und wenn ich die Toleranz zu stark erhöhe, entstehen andere Arten von Fehlern.
Irgendwelche Ideen?
Antworten:
Mein Verständnis des Problems ist wie folgt:
Wenn ein Polylinienendpunkt ein Polygon schneidet, muss die Polylinie (durch Hinzufügen oder Anpassen von Scheitelpunkten) mit allen zusätzlichen Polylinienendpunkten verbunden werden, die dasselbe Polygon schneiden.
Einige Polylinien-Endpunkte schneiden kein Polygon, da es sich um Unterschwinger handelt. Diese sollten jedoch wie oben beschrieben verbunden werden.
Diese Antwort baut auf einigen bereits gegebenen auf, ist aber nicht vollständig, da mir nicht alle QGIS-Befehle bekannt sind. Vielleicht kann noch jemand etwas hinzufügen?
Extrahieren Sie für jede Polylinie die Endpunktkoordinaten ( Vektor> Geometriewerkzeuge> Knoten extrahieren und dann aufräumen) und berechnen Sie, ob sie sich innerhalb eines Polygons befinden oder nicht ( Vektor> Forschungswerkzeuge> Nach Position auswählen ).
Für Linienzug Endpunkte , die innerhalb eines Polygons sind, dass Ende der Polylinie in der Mitte des Polygons erstrecken (Extrahieren Sie das Polygon - Zentrum mit Vector> Geometrie Tool> Polygon centroid , nicht sicher über die Linie Modifikation, wenn Sie zur Arbeit der Lage sein könnten , mit die Polylinienscheitelpunkte als Punkte und fügen Sie weitere mit der entsprechenden Nummerierung hinzu, bevor Sie die geänderte Polylinie mit dem Plugin "Punkte zu Pfaden" rekonstruieren.)
Sie erwähnen, dass es Situationen geben kann, in denen einige oder alle Linien korrekt verbunden wurden. In diesen Situationen (erkennbar an übereinstimmenden Polylinienendpunkten) können Sie statt des Polygonschwerpunkts die übereinstimmende Endpunktposition als zu verlängernden Punkt verwenden Alle zusätzlichen nicht verbundenen Polylinien für dieses Polygon.
Verlängern Sie bei Polylinienendpunkten, die außerhalb eines Polygons liegen, dieses Ende der Polylinie bis zur Mitte des nächsten Polygons. Auch hier bin ich mir nicht sicher, ob ich das nächste Polygon berechnen soll, obwohl das Modul GRASS v.distance den Trick zu tun scheint.
quelle
Ich denke, dass ich es mit einem benutzerdefinierten Algorithmus tun könnte ... Beachten Sie, wie Sie es implementieren möchten, aber ich denke, es würde funktionieren.
Erstellen Sie für jede Linie und für jeden Endpunkt einen Punkt im Polygon für den Scheitelpunkt am Endpunkt und verknüpfen Sie ihn mit dem Polygon.
Wenn dann für jedes Polygon mehr als ein Linienendpunkt verknüpft ist, verschiebe ich sie alle zur Durchschnittskoordinate oder zum Schwerpunkt des Polygons.
Das ist ziemlich einfach. Bei Standardoperatoren jedoch nicht verfügbar. Ich denke, es könnte in ArcGIS mit einer Codierungszeit von Tagen durchgeführt werden.
Ein weiterer Hinweis: In dem von Ihnen geposteten Bild befindet sich eine der Linien außerhalb des Polygons. Sie können dies einfacher handhaben, indem Sie einfach den nächsten Scheitelpunkt zu jedem Endscheitelpunkt finden und sicherstellen, dass die Nähe zueinander besteht (ich denke, das ist notwendig, damit Sie Eckpunkte nur in einer Richtung fangen), dann können Sie sie an die durchschnittliche Position der Eckpunkte verschieben.
quelle
Interessantes Problem! Ich kann mir keine Möglichkeit vorstellen, das Einrasten automatisch durchzuführen, aber hier ist ein Schritt, um Bereiche zu identifizieren, in denen zumindest eine manuelle Korrektur erforderlich ist:
Abhängig von der Situation (Anzahl der Funktionen, Anzahl der in dieser Situation befindlichen Funktionen im Vergleich zu den nicht vorhandenen Funktionen usw.) kann dies einige Zeit sparen.
BEARBEITEN: Möglicherweise möchten Sie auch die Polygone mit einer Summe von 2 verwenden, um eine Teilmenge Ihrer Linienebenen zu erstellen. Führen Sie dann die Bereinigung für diejenigen mit einer größeren Toleranz durch, um die anderen Features nicht zu ändern.
quelle
Sobald Sie die Endpunkte haben, würde ich ein Spinnen-Diagramm erstellen, in dem Polygon-Zentroide als Einrichtungen und Endpunkte von Linien in der Nähe als Ziele verwendet werden. Sie führen die Spinnendiagrammanalyse durch und als Ergebnis hätten Sie ein Segment für jede Polylinie.
Dies würde sogar für diejenigen funktionieren, die außerhalb der Polygone enden. Wie man das in QGIS macht Ich weiß es nicht, sorry, aber ich würde es in ESRI-Produkten machen, die ich gut kenne. Das habe ich verstanden, als whuber in der ersten Antwort vorschlug, einen "Stern" zu bauen.
Ich bin mir ziemlich sicher, dass es hier Leute gibt, die wissen, wie man solche Analysen in QGIS durchführt
quelle