Ich möchte in der Lage sein, Features in Schicht 1 (Quelle) mit Features in Schicht 2 (Aktualisierungen der Quelle) zu vergleichen, um festzustellen, ob sich die Geometrie und / oder Attribute von Features geändert haben. Ich hätte dann auch gerne einen "Bericht" erstellt, der angibt, was sich geändert hat.
Zur Verdeutlichung bearbeiten: Änderungen in der Geometrie umfassen auch das Suchen von Features, die der neuen Datenebene hinzugefügt wurden. Löschungen mögen interessant sein, aber Ergänzungen sind wichtiger.
Ich habe die PostGIS-Funktionen durchgesehen und kann anscheinend keine Tools finden, mit denen Unterschiede zwischen zwei Ebenen-Features, sowohl Geometrie als auch Attribute, verglichen und gemeldet werden können.
Ich suche etwas Ähnliches wie das ArcGIS- Tool " Feature Compare ".
Wenn es in PostGIS nichts Vergleichbares gibt, gibt es andere Open-Source-Tools, die diese Art von Fragen beantworten? Vielen Dank.
quelle
Antworten:
Sie können in PostgreSQL zeilenweise Vergleiche mit Zeilenkonstruktoren durchführen . Ich vermute, dass dies mit Geometriefeldern funktionieren würde, aber ich habe es nicht versucht.
Bei zwei Tabellen, in denen die übereinstimmenden Funktionen jeweils dasselbe ID-Feld haben, können Sie Folgendes tun:
Update: Dies funktioniert in meinen Tests mit Geometriefeldern.
Update 2: Hier ist ein vollständigeres Beispiel, das auf Ihren Kriterien basiert.
Tabellen: t1 (id, att1, att2, geom) t2 (id, att1, att2, geom)
Das sollte dir das bringen, wonach du suchst. Sie sollten wahrscheinlich die 'not in'-Klausel in' not exist 'ändern, um eine bessere Leistung zu erzielen.
quelle
Die Funktion
ST_Equals(geometryA, geometryB)
gibt TRUE zurück, wenn sie räumlich gleich sind.quelle