Hier gibt es zwei Ebenen mit der Darstellung der Straßen und die Idee ist: Wir möchten die neueste Ebene (mit der roten Linie) mit einigen der Daten aktualisieren, die in der anderen (der hellblauen) gespeichert sind, aber diese Ebenen sind Ähnlich in der geografischen Position, die abhängig von der Position auf der Karte sehr nahe und etwas weiter entfernt sein kann. In Fällen, in denen eine Linie mit der anderen identisch ist (codlog x codlog5), stimmt nur ein Attribut überein.
Beispiel: In der Mitte des Bildes befindet sich in beiden Ebenen ein Quadrat. Wie kann ich in der Karte feststellen, dass die blaue und die grüne Ebene identisch sind und die aktuelle Ebene aktualisieren?
Wie kann ich es tun? Gibt es ein Plugin oder Tool, das dabei hilft?
quelle
Antworten:
Dies ist eine großartige Frage. Ich musste in letzter Zeit etwas Ähnliches tun, allerdings mit einem viel kleineren Datensatz. Daher konnte ich eine einfache Kreuzung mit zusätzlichen visuellen Qualitätsprüfungen verwenden und es war in Ordnung.
Aber hier ist eine Idee dafür, obwohl ich keinen Code habe, und es ist eine Art heftiger Prozess. Testen Sie auf jeden Fall zuerst mit einer Probe aus dem vollständigen Datensatz. Hier können Sie wahrscheinlich nützlichen Code finden. (Die Einrückung wurde unten etwas seltsam.):
nimm den guten Geometriesatz (wo die Attribute enden sollen) und erstelle einen Puffer davon *
Durchlaufen Sie alle Pufferfunktionen:
2a. Berechnen Sie die allgemeine Ausrichtung des Features (max_y - min_y / max_x - min_x oder ähnliches)
2b. Treffen Sie mit dieser Funktion eine Auswahl nach Standortabfrage auf der anderen Ebene
Sie haben mehr als eine Funktion, die mit der Abfrage "Auswahl nach Standort" übereinstimmt. Durchlaufen Sie diese ausgewählten Funktionen und berechnen Sie die Ausrichtung der einzelnen Funktionen
Abrufen der Attribute von jedem Feature, dessen Ausrichtung der des Puffer-Features am nächsten kommt.
* Ich würde mit einer sehr kleinen Entfernung beginnen (eine Karteneinheit oder so) und diesen Vorgang dann mit zunehmender Entfernung ausführen, wobei ich darauf achten sollte, keine Attribute zu überschreiben, die Sie bereits übertragen haben.
** Sie könnten wahrscheinlich sogar auf die Erstellung der Pufferfunktionen verzichten und nur die Abfrage nach Speicherort mit einem Pufferabstand durchführen. Ich bin nicht sehr vertraut mit QGIS, aber ich bin mir sicher, dass Sie dazu in der Lage sind.
Es gibt keine Möglichkeit, dass dies für alle Ihre Funktionen perfekt funktioniert, aber es ist ein Anfang, und dann kommt es nur darauf an, eine gute QA / QC-Strategie zum Überprüfen und Abschließen der Übertragung zu entwickeln.
BEARBEITEN Wenn Sie mehr darüber nachdenken , ist hier ein grundlegendes Beispiel, das das System komplett zerstören würde, wenn Sie mit einem sehr kleinen Pufferabstand beginnen und die Funktion mit der von mir empfohlenen besten Ausrichtung auswählen:
Die Attribute von der falschen roten Linie würden genommen. Um dies zu vermeiden, möchten Sie möglicherweise eine Art Toleranz erstellen und die Attribute des Features nur dann übernehmen, wenn seine Ausrichtung (im Vergleich zur Ausrichtung des ursprünglichen blauen Features) innerhalb dieser Toleranz liegt.
EDIT 2 Ups, sind das Polygone? Ich nehme an, dass es sich nur um Linien auf grauem Hintergrund handelt. Wenn es sich um Polygone handelt, weiß ich nicht genau, ob dieses Orientierungskonzept gut ist. Sie können jedoch alle sich überschneidenden Features auswählen und herausfinden, welche die meisten Überlappungen aufweisen (führen Sie ein Werkzeug vom Typ Union aus und verwenden Sie dann das Polygon mit der größten Fläche ...).
quelle
Wenn Sie einige Attribute von der roten zur blauen Ebene hinzufügen möchten und ein Attribut in beiden Ebenen gemeinsam ist, müssen Sie die Option "Vektorverbindung hinzufügen" verwenden .
Darüber habe ich hier geschrieben .
Das ist es.
Hier haben Sie ein Beispiel mit Screenshots.
quelle
Ich bevorzuge die Antwort von @ dmh126, da seine Methode es ermöglicht, Ihre red_line- Ebene ganz einfach zu aktualisieren.
Um eine Alternative hinzuzufügen, können Sie das Tabellenwerkzeug Verbindungsattribute aus der Verarbeitungs-Toolbox verwenden und Ihre Ebenen mit dem gemeinsamen Feld auswählen. Beachten Sie, dass diese Methode erstellt eine neue Shape - Datei stattdessen einen vorhandenen zu aktualisieren:
quelle
Wenn Sie in beiden Layern eine eindeutige ID haben, mit der Sie Werte auf einfache Weise mit neuen Layern aus alten verbinden können, ist dies ein Kinderspiel. Dies scheint jedoch nicht der Fall zu sein.
Wenn nicht, ist es ein ziemlich schwieriges Problem. Ich frage mich, warum der Kommentar von User30184, der OpenJUMP und das Plugin http://www.vividsolutions.com/products.asp?catg=spaapp&code=roadmatcher vorschlägt, nicht als Antwort gepostet wurde, da er in diesem Fall für mich völlig legitim klingt.
Ansonsten glaube ich nicht, dass Sie dies ohne ein bisschen Codierung tun können. Mit QGIS können Sie Shapely verwenden und beim Kombinieren von Pufferung und Überschneidung sollten Sie in der Lage sein, eine signifikante automatische Überprüfung durchzuführen.
Ein Ansatz könnte darin bestehen, einige einigermaßen große Puffer roter Linien mit blauen Linien zu vergleichen und übereinstimmende Attribute und Verhältnisse zu erhalten, um wie viel es sich handelt. Im Pseudocode:
quelle