Der Parameterwert für die Eingabetabelle kann ein Feature-Layer, eine Tabellensicht oder ein Raster-Layer mit einer Attributtabelle sein. Wenn ein Datenpfad verwendet wird, wird der Layer mit der Verbindung erstellt. Die Verbindung verbleibt immer beim Layer, nicht in den Daten.
Verwenden Sie zum Erstellen einer permanenten Verbindung das Werkzeug Feld verbinden. Sie können auch den verbundenen Layer als Eingabe für eines der folgenden Werkzeuge verwenden: Features kopieren, Zeilen kopieren, Features exportieren oder Tabelle exportieren. Beim Speichern der Ergebnisse in einer neuen Feature-Class oder Tabelle kann die Umgebungseinstellung Vollständig qualifizierte Feldnamen beibehalten verwendet werden, um zu steuern, ob die verbundenen Ausgabe-Feldnamen durch den Namen der Tabelle qualifiziert werden, aus der das Feld stammt. Feld-Aliasnamen werden vom Layer in die Ausgabe übernommen, es sei denn, die Ausgabe ist ein Shapefile.
Verwenden Sie die Werkzeuge Abfrage-Layer erstellen, Datenbanksicht erstellen oder Aggregations-Abfrage-Layer erstellen, um die Performance einer Verbindung zu optimieren und mehr Funktionen nutzen zu können, wenn Sie die Daten in einer Enterprise-Geodatabase oder SQLite-Datenbank verbinden möchten.
Wenn es sich bei der Eingabe um eine Feature-Class oder einen Dataset-Pfad handelt, wird von diesem Werkzeug ein neuer Layer erstellt und mit dem Ergebnis des angewendeten Werkzeugs zurückgegeben.
Wenn von der Verbindung eine Eins-zu-Viele-Verbindung erzeugt wird, kann das Ergebnis der Verbindung in der Attributtabelle angezeigt werden. Dort gibt eine Warnmeldung an, ob die Tabelle doppelte Objekt-IDs enthält. Da viele Geoverarbeitungswerkzeuge Daten mit doppelten Objekt-IDs nicht unterstützen und das Verarbeiten solcher Daten zu unerwarteten Ergebnissen führen kann, sollten Sie den verbundenen Layer zuerst mit dem Werkzeug Features exportieren in eine neue Feature-Class kopieren. Verwenden Sie dann die neue Feature-Class als Eingabe für andere Geoverarbeitungswerkzeuge.
Zusätzlich können Sie den Parameter Verbindungsvorgang auf Eins-zu-Erster-Verbindung festlegen, um zu verhindern, dass Objekt-IDs doppelt vorhanden sind.
Der Parameter Verbindungsvorgang verfügt über drei Statusoptionen zum Anpassen der Beziehungsart. Der Standardwert ist leer. Damit kann die Datenquelle versuchen, eine Eins-zu-Viele-Verbindung herzustellen. Die Option Eins-zu-Viele-Verbindung funktioniert nur bei bestimmten Datenquellen, die über ein Objekt-ID-Feld verfügen. Bei der Option Eins-zu-Erster-Verbindung wird die erste Übereinstimmung in der Tabelle verwendet, was zu unterschiedlichen Ausgaben führen kann, wenn das Objekt-ID-Feld geändert wurde oder der Workspace, in den die Tabelle kopiert wird, geändert wird. Bei Eins-zu-Erster-Verbindungen wird die Groß-/Kleinschreibung nicht beachtet. Bei Eins-zu-Viele-Verbindungen muss die Groß-/Kleinschreibung beachtet werden.
In den folgenden Tabellen sind mögliche Ergebnisse von Verbindungen mit verschiedenen Eingaben dargestellt.
Die erste Tabelle zeigt eine Verbindung des Typs "Eins-zu-Viele". Das Beibehalten von nur übereinstimmenden Datensätzen hat keine Wirkung, da alle Datensätze Übereinstimmungen aufweisen.
Eingabetabelle | Join-Tabelle | Ergebnis |
---|
Eingabefeld | Typ | Join-Feld | Wert | Eingabefeld | Typ | Join-Feld | Wert |
1 | A | 1 | 100 | 1 | A | 1 | 100 |
2 | B | 2 | 200 | 2 | B | 2 | 200 |
| 1 | 300 | 1 | A | 1 | 300 |
2 | 400 | 2 | B | 2 | 400 |
Verbindung hinzufügen – Beispiel: Eins-zu-Viele-Verbindung, wenn jede Tabelle über ein Objekt-ID-Feld verfügt
In der zweiten Tabelle wird eine Join-Tabelle ohne Objekt-ID-Feld verwendet. Dabei ist nur eine Eins-zu-Erster-Verbindung möglich. Eine Eins-zu-Erster-Verbindung ist auch nur möglich, wenn jede Tabelle aus einem anderen Workspace stammt. Bei einer Eins-zu-Erster-Verbindung wird nicht zwischen Groß- und Kleinschreibung unterschieden.
Eingabetabelle | Join-Tabelle | Ergebnis |
---|
Eingabefeld | Typ | Join-Feld | Wert | Eingabefeld | Typ | Join-Feld | Wert |
1 | A | 1 | 100 | 1 | A | 1 | 100 |
2 | B | 2 | 200 | 2 | B | 2 | 200 |
| 3 | 300 | |
4 | 400 |
Verbindung hinzufügen – Beispiel: Eins-zu-Erster-Verbindung, wenn keine Tabelle über ein Objekt-ID-Feld verfügt.
In der letzten Tabelle enthält die Eingabetabelle mehr Datensätze als die Join-Tabelle. Beim Beibehalten aller Datensätze werden alle übereinstimmenden Datensätze zuzüglich der Datensätze aus der Eingabetabelle beibehalten, die keine Übereinstimmungen aufweisen.
Eingabetabelle | Join-Tabelle | Ergebnis |
---|
Eingabefeld | Typ | Join-Feld | Wert | Eingabefeld | Typ | Join-Feld | Wert |
1 | A | 1 | 100 | 1 | A | 1 | 100 |
2 | B | 2 | 200 | 2 | B | 2 | 200 |
3 | C | 1 | 300 | 1 | A | 1 | 300 |
4 | D | 2 | 400 | 2 | B | 2 | 400 |
| 3 | C | <NULL> | <NULL> |
4 | D | <NULL> | <NULL> |
Verbindung hinzufügen (Beispiel): Eins-zu-Viele-Verbindung, wenn jede Tabelle ein Objekt-ID-Feld aufweist und der Parameter Alle Eingabedatensätze beibehalten aktiviert ist.
Die Eingabetabelle muss ein Objekt-ID-Feld aufweisen, um eine Eins-zu-Viele-Verbindung durchzuführen, und sie muss im selben Workspace vorliegen.
Datensätze aus der Join-Tabelle können mehreren Datensätzen zugewiesen werden, wenn in der Join-Tabelle ein Objekt-ID-Feld vorliegt. Andernfalls wird eine Eins-zu-Erster-Verbindung durchgeführt.
Beim Verbinden von Tabellen werden mit der Standardoption alle Datensätze beibehalten. Wenn ein Datensatz der Eingabetabelle keine Entsprechung in der Join-Tabelle besitzt, erhält dieser Datensatz NULL-Werte für alle Felder, die aus der Join-Tabelle an die Eingabetabelle angehängt werden.
Eingabetabelle | Join-Tabelle | Ergebnis |
---|
Eingabefeld | Typ | Join-Feld | Wert | Eingabefeld | Typ | Join-Feld | Wert |
1 | A | 1 | 100 | 1 | A | 1 | 100 |
2 | B | 2 | 200 | 2 | B | 2 | 200 |
3 | C | 1 | 300 | 1 | A | 1 | 300 |
4 | D | 2 | 400 | 2 | B | 2 | 400 |
| 3 | C | <NULL> | <NULL> |
4 | D | <NULL> | <NULL> |
Bei deaktiviertem Parameter Alle Eingabedatensätze beibehalten wird ein Datensatz aus der erstellten Ausgabe entfernt, wenn für diesen Datensatz in der Eingabetabelle keine Entsprechung in der Join-Tabelle enthalten ist. Wenn die Eingabetabelle der Attributtabelle eines Layers entspricht, werden Features, die keine verbundenen Daten aufweisen, nicht auf der Karte angezeigt.
Eingabetabelle | Join-Tabelle | Ergebnis |
---|
Eingabefeld | Typ | Join-Feld | Wert | Eingabefeld | Typ | Join-Feld | Wert |
1 | A | 1 | 100 | 1 | A | 1 | 100 |
2 | B | 2 | 200 | 2 | B | 2 | 200 |
| 3 | 300 | |
4 | 400 |
Wenn ein Eins-zu-Viele-Layer verwendet wird, dann aktualisiert das Werkzeug Feld berechnen den ersten gefundenen Datensatz und überspringt die restlichen doppelt vorhandenen Datensätzen. Wenn die Werte der verbundenen Layer-Felder manuell in der Tabellensicht bearbeitet werden, dann bleibt die zuletzt vorgenommene Änderung erhalten.
Feldeigenschaften, wie Aliasnamen, Sichtbarkeit und Zahlenformatierung, werden beim Hinzufügen oder Entfernen von Verbindungen beibehalten.
Die Verbindung besteht nur solange der Layer vorhanden ist. Ein Layer kann beibehalten werden, indem die ArcGIS AllSource-Sitzung gespeichert wird oder indem er unter Verwendung des Werkzeugs In Layer-Datei speichern in eine Layer-Datei gespeichert wird.
Damit die Ergebnisse einer in einem Skriptwerkzeug erstellten Verbindung angezeigt werden können, muss das Werkzeug den Layer als abgeleiteten Ausgabeparameter enthalten. Dementsprechend muss der Parameter Aktualisierte Eingabe-Layer oder -Tabellensicht als abgeleiteter Ausgabeparameter in einem Modellwerkzeug festgelegt werden, um die verbundenen Ergebnisse anzuzeigen.
In der resultierenden Tabelle erhalten die Felder ein Präfix, das aus dem Namen der Eingabe und einem Punkt (.) besteht. Alle Felder aus der Join-Tabelle erhalten standardmäßig ein Präfix bestehend aus dem Namen der Join-Tabelle und einem Punkt.
Beispiel: Sie verbinden den Layer "landuse", der die Felder A und B enthält, mit der Tabellensicht "lookup_tab", die die Felder C und D enthält. Der resultierende Layer bzw. die resultierende Tabellensicht enthält die Felder landuse.A, landuse.B, lookup_tab.C und lookup_tab.D.
Layer müssen eindeutige Feldnamen aufweisen. Wenn die Eingabe- und die Join-Tabelle denselben Namen haben und sich in verschiedenen Workspaces befinden, wird beim Herstellen der Verbindung ein unzureichend definierter Layer erzeugt.
Durch Indizieren des Eingabefeldes und Join-Feldes kann die Performance verbessert werden. Wenn der Parameter Join-Felder indizieren aktiviert ist, wird beiden Feldern ein Attributindex hinzugefügt. Alternativ können die einzelnen Verbindungsfelder mit dem Werkzeug Attributindex hinzufügen indiziert werden.
Wenn die Verbindungsergebnisse unerwartet oder unvollständig sind, dann überprüfen Sie, ob das Eingabefeld und das Join-Feld indiziert sind. Wenn die Felder nicht indiziert sind, dann versuchen Sie, einen Index hinzuzufügen. Wenn die Felder indiziert sind, dann versuchen Sie, den Index zu löschen und erneut hinzuzufügen, um Probleme mit dem Index zu beheben. Sie können aber auch den Parameter Indizes für Join-Felder neu erstellen aktivieren, um vorhandene Indizes zu entfernen und neu zu erstellen.
-
Wenn die Felder des Eingabe-Layers oder der Tabellensicht mit dem Parameter Feld-Info im Werkzeug Feature-Layer erstellen oder Tabellensicht erstellen geändert (umbenannt oder ausgeblendet) wurden, werden die Feldänderungen nicht in die Ausgabe des verbundenen Layers oder der verbundenen Tabellensicht eingebunden.
Die Definitionsabfrage der Join-Tabelle wird auf den Eingabe-Layer oder die Tabellensicht angewendet, indem eine neue aktive Abfrage hinzugefügt wird. Die vorherige Abfrage wird beibehalten und auf inaktiv gesetzt, sodass die Abfrage bei Bedarf von der verbundenen Tabelle aus deaktiviert werden kann. Die Definitionsabfrage kann mit dem Werkzeug Verbindung entfernen entfernt werden.
Wenn die Join-Tabelle eine Definitionsabfrage aufweist, hat der Parameter Alle Eingabedatensätze beibehalten keine Wirkung. Dies lässt sich möglicherweise korrigieren, indem durch manuelles Anhängen von or OBJECTID is null die Definitionsabfrage aktualisiert wird.
Mit dem Werkzeug Verbindung überprüfen kann eine Verbindung zwischen zwei Layern oder Tabellen überprüft werden, um zu bestimmen, ob die Layer oder Tabellen gültige Feldnamen und Objekt-ID-Felder enthalten, ob die Verbindung übereinstimmende Datensätze generiert, ob die Verbindung eine Eins-zu-Eins- oder Eins-zu-Viele-Verbindung ist, und um weitere Eigenschaften der Verbindung zu bestimmen.
Aus Gründen der Benutzerfreundlichkeit ist im Dialogfeld des Werkzeugs eine Schaltfläche zum Überprüfen der Verbindung verfügbar.
Auswahlen in der Eingabe- oder der Join-Tabelle werden im Werkzeug Verbindung hinzufügen ignoriert. Das Werkzeug Feld verbinden unterstützt Auswahlen. Wenn die Verbindung nur mit einer ausgewählten Teilmenge erstellt werden soll, erstellen Sie einen Auswahl-Layer, und verwenden Sie ihn als Eingabe für das Werkzeug Verbindung hinzufügen. Die Eigenschaften eines Join-Layers werden kopiert, wenn Sie einen Auswahl-Layer erstellen.