@Dano wirft zu Recht einige Probleme auf, die am besten in einer vollständigen Antwort behandelt werden.
Eine Schwierigkeit , die bereits von @Celenius festgestellt wurde, besteht darin, dass eine Verknüpfung zwischen B und A (in beide Richtungen) alle Felder dupliziert. es kann mühsam sein, dies zu korrigieren. Ich habe in Kommentaren vorgeschlagen, dass der offensichtlich einfache Weg (Export in eine Tabelle) Fragen der Datenintegrität aufwirft. Eine weitere Schwierigkeit , die bereits in Celenius 'Vorschlag angesprochen wurde, betrifft die Lösung dieses Problems, wenn keine Kombination von Attributen als Schlüssel für A und B dienen kann, da dies einen Datenbank-Join ausschließt. Die räumliche Verknüpfung umgeht dieses Problem.
Was ist dann eine gute Lösung? Ein Ansatz verwendet A, um die entsprechenden Datensätze von B zu identifizieren, die die gewünschten Daten enthalten. Abhängig von den Annahmen über die Konfigurationen der Polygone - ob sie sich überlappen, ob einige andere enthalten können usw. - kann dies auf verschiedene Arten erfolgen: Verwenden einer Ebene zum Auswählen von Objekten in der anderen oder über Verknüpfungen. Der Punkt hier ist, dass wir in diesem Stadium nur die Teilmenge von B auswählen möchten, die A entspricht.
Nachdem Sie diese Auswahl getroffen haben, exportieren Sie die Auswahl und lassen Sie sie A ersetzen. Fertig .
Diese Lösung setzt voraus, dass alle Felder in B ihre Gegenstücke in A ersetzen sollen. Wenn nicht, ist es wirklich notwendig , eine 1-1-Verknüpfung von B (Quelle) mit A (Ziel) durchzuführen. Der auf Bezeichnern basierende Join ist am besten, aber ein Join für die Polygonidentität (Celenius) funktioniert einwandfrei, wenn keine IDs verfügbar sind und die entsprechenden Polygonformen in A und B möglicherweise nicht geringfügig voneinander abweichen . (Dies ist ein subtiler Punkt und die mögliche Ursache für heimtückische Fehler, da frühere Änderungen in B an Polygonen, die nicht A entsprechen, die anderen Polygone in B immer noch unsichtbar modifizieren können, wenn das GIS "schnappt" oder "Topologie beibehält". oder auf andere Weise automatisch globale Änderungen während lokaler Änderungen vornehmen.)
Zu diesem Zeitpunkt gibt es zwei Kopien von jedem Feld: Wenn [Foo] ein gemeinsames Feld für A und B ist, enthält der Join A. [Foo] und B. [Foo]. Kopieren Sie mit einer Feldberechnung B. [Foo] in A. [Foo]. Wiederholen Sie dies für alle benötigten Felder. Entfernen Sie anschließend den Join.
Obwohl dieses Verfahren in vielen Bereichen etwas aufwändig sein kann, gehören zu seinen Vorzügen
- Es ist einfach und schnell zu schreiben.
- Durch die Skripterstellung wird ein Prüfpfad hinterlassen , der die Verarbeitung der Daten dokumentiert. Dies ist entscheidend für den Schutz der Datenintegrität.
- Es verteidigt sich gegen einige Arten von Großhandelsfehlern, z. B. das Beibehalten des falschen Felds nach dem Join (wodurch die alten Daten anstelle der neuen Daten für dieses Feld beibehalten werden) oder das Löschen eines wichtigen Felds.
- Es nutzt die integrierten Schutzfunktionen des Datenbankverwaltungssystems, z. B. die Durchsetzung von Datentypen und die Durchsetzung von Geschäftsregeln, um Fehler zu verhindern und zu identifizieren und die Konsistenz zwischen allen Tabellen und Ebenen in der Datenbank aufrechtzuerhalten.
Einige der Leitprinzipien dieses Vorschlags sind:
- Verwenden Sie ein Datenbankverwaltungssystem, um Daten zu verarbeiten, anstatt Software zu verwenden, die für diese Aufgabe nicht entwickelt oder ungeeignet ist.
- Vermeiden Sie es, Datenbankstrukturen zu ändern (z. B. Felder zu löschen oder hinzuzufügen), wenn dies für Vorgänge nicht unbedingt erforderlich ist.
- Nutzen Sie die Automatisierungsfunktionen der Software, um die Arbeit zu vereinfachen, zu dokumentieren und die Vorgänge reproduzierbar zu machen.
Man könnte einwenden, dass es in vielen Fällen schnellere und einfachere Wege gibt, um das gleiche Ergebnis zu erzielen. Ja, das kann sein, und sie können effektiv sein und funktionieren normalerweise , wenn sie mit Sorgfalt durchgeführt werden. Lösungen, die die Daten gefährden, sind jedoch schwer zu empfehlen und als allgemeine Antworten zu verteidigen. Sie werden am besten in einmaligen Situationen mit kleinen Datenmengen eingesetzt, in denen eine Beschädigung der Daten schnell offensichtlich werden sollte und die Folgen solcher Fehler unerheblich sind.