Polygondatensätze kombinieren

8

Ich muss 2 große Polygon-Datensätze kombinieren. Einer dieser Datensätze enthält neuere Daten, daher müssen die Polygone aus diesem Datensatz in den vorhandenen Datensatz kopiert werden.

Es gibt drei verschiedene Fälle, in denen das vorhandene Dataset geändert werden müsste. Unten finden Sie Screenshots und Erklärungen.

(In allen Screenshots repräsentiert der gestrichelte rote Umriss die vorhandenen Daten. Die grünen Polygone sind neue Daten.)


Situation 1 - Völlig neues Polygon:

Geben Sie hier die Bildbeschreibung ein

Aktion - Dem vorhandenen Datensatz muss ein neues Polygon hinzugefügt werden. Gleich bleibende Polygone können ignoriert werden.


Situation 2 - Ein vorhandenes Polygon hat seine Form geändert:

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

Aktion - Vorhandene Polygone müssen gelöscht werden. Ein neues Polygon muss dann zu einem vorhandenen Datensatz hinzugefügt werden.


Situation 3 - Mehrere neue Polygone innerhalb eines vorhandenen Polygons

Geben Sie hier die Bildbeschreibung ein

Aktion - Vorhandenes enthaltendes / großes Polygon muss gelöscht werden. Ein neues Polygon muss dann zu einem vorhandenen Datensatz hinzugefügt werden.


Meine Frage ist also: Wäre es möglich, diese Datensätze gemäß den oben genannten Regeln entweder in QGIS oder PostGIS zu kombinieren?

Matt
quelle
Sind Sie geneigt, für jede Situation einen anderen Prozess zu verwenden?
Eisvogel
@Kingfisher Ja, ich dachte, das könnte notwendig sein ... Vorschläge sind willkommen!
Matt
Woher wissen wir, ob das Polygon neu ist? Sie stellen Grafiken bereit. Wie wäre es mit einer Tabellendefinition? Fügen Sie die Ausgabe von\d table
Evan Carroll
@Evan Es gibt derzeit nichts in den Tabellen, was auf neue / alte Polygone hinweist, aber es wäre einfach, etwas hinzuzufügen.
Matt

Antworten:

6

Ich glaube, Sie können dies alles in zwei Schritten tun. Löschen Sie zunächst alle vorhandenen Polygone dort, wo die neue Polygontabelle sie schneidet. In Fall 1 werden die vorhandenen Polygone nicht berührt. In den Fällen 2 und 3 werden alle vorhandenen Polygone gelöscht, die entweder gewachsen (und möglicherweise zu einem zusammengeführt) oder geschrumpft (und möglicherweise in kleinere aufgeteilt) sind. Anschließend fügen Sie einfach die neuen Polygone in die vorhandene Tabelle ein, die die Fälle 2 und 3 abdeckt.

DELETE FROM existing_polygons a USING new_polygons b
WHERE ST_Intersects(a.geom, b.geom);

INSERT INTO existing_polygons 
SELECT * FROM new_polygons;
John Powell
quelle
Danke @John, ich denke du könntest damit richtig liegen ... Ich werde es versuchen
Matt
Sie sollten zuerst eine Kopie der vorhandenen Polygontabelle erstellen :-)
John Powell
2
Funktioniert das? Ich bin mir ziemlich sicher, dass die Logik korrekt ist, aber ich würde gerne wissen, ob ich etwas verpasst habe.
John Powell
Es hat gut funktioniert, abgesehen von ein paar gelöschten Polygonen, die beibehalten werden mussten (aber nur aufgrund unordentlicher Daten) und relativ einfach zu reparieren waren. Danke John.
Matt
Ich bin froh. Ich hoffe, Sie hatten eine Sicherungskopie der Daten. Ich hatte das Gefühl, dass so schöne Diagramme eine komplexere Antwort verdienen, aber manchmal sind Dinge, die kompliziert aussehen, nicht so. Leider ist auch das Gegenteil der Fall.
John Powell