Wie kann ich feststellen, welche Zeilen in einem aktualisierten Shapefile geändert wurden?

15

Ich verwende die GIS-Daten meines Landkreises , um die Straßen in OpenStreetMap zu aktualisieren. Ich habe eine Kopie, die sie letztes Jahr veröffentlicht haben, und eine, die gerade veröffentlicht wurde, und ich möchte alle LineStrings finden, deren Attribute oder Geometrie sich geändert haben. Auf diese Weise kann ich sicherstellen, dass alle neuen und geänderten Straßen in OpenStreetMap aktualisiert werden.

Ich möchte dies mit FOSS-Software wie QGIS oder Python / OGR tun. Die Straßensegmente sollten einen eindeutigen Bezeichner haben, daher ist mein einziger Gedanke, ein Python-Skript zu schreiben, das beide Shapefiles öffnet, alle Segmente im Neuen findet, die im Alten nicht vorhanden sind (hinzugefügte Segmente), und das Umgekehrte (entfernte Segmente). und durchlaufen dann übereinstimmende Paare, indem sie ihre Teilkoordinaten vergleichen, um festzustellen, ob sich etwas geändert hat.

Ist das ein guter Ansatz? Gibt es einen einfacheren Weg?

joshdoe
quelle
3
Anscheinend
+1 - wirklich interessante Frage. Ich habe versucht, Shapefiles in QGIS zu vergleichen, indem ich sie in der Attributtabelle auswählte, kopierte (Strg-C / cmd-C) und in einen Texteditor einfügte, um WKT-Text direkt zu vergleichen, aber dies segmentiert sie nicht nach Segment und ist offensichtlich langweilig. Sehr interessiert zu sehen, dass eine gute Lösung aus dieser Frage hervorgeht. Für OSM-Daten können Sie die Historie auch für einzelne Funktionen herunterladen, es wäre jedoch eine generische Lösung wünschenswert .
Simbamangu

Antworten:

8

Sie müssen lediglich eine zeitliche Analyse durchführen. Wie Sie sagten, haben Sie zwei Vektordaten (shp) zu unterschiedlichen Zeiten. Sie können die Änderung mithilfe der Geometrieverarbeitung ermitteln. In QGIS laden Sie zwei Vektoren und GoTo Vector-> GeoProcessing und von dort können Sie die Differenzfunktion verwenden, die als Ergebnis eine andere Form ergibt.

Ich hoffe, das hilft

km
quelle
+1 - Dies funktioniert gut für zwei OSM-Datasets im Abstand von einem Monat, was zu einer Ebene führt, die die Attribute geänderter Objekte beibehält.
Simbamangu
1
Dies würde jedoch nur funktionieren, wenn sich die Geometrie ändern würde. Was ist mit Attributänderung?
sweet.sugar.cola