Verbindung hinzufügen (Datenmanagement)

Zusammenfassung

Verbindet einen Layer mit einem anderen Layer oder einer Tabelle auf Basis eines gemeinsamen Feldes. Feature-Layer, Tabellensichten und Raster-Layer mit einer Raster-Attributtabelle werden unterstützt.

Die Datensätze im Parameterwert für Join-Tabelle werden den Datensätzen im Parameterwert für Eingabetabelle zugeordnet. Eine Übereinstimmung tritt auf, wenn das Join-Feld der Eingabe und das Feld der Join-Tabelle dieselben Werte aufweisen. Diese Verbindung ist temporär.

Abbildung

Abbildung des Werkzeugs "Verbindung hinzufügen"

Verwendung

  • 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 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.

  • Wenn es sich bei der Eingabe um eine Feature-Class oder einen Dataset-Pfad handelt, wird von diesem Werkzeug mit dem Ergebnis des angewendeten Werkzeugs automatisch ein neuer Layer erstellt und 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.

  • 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.

    EingabetabelleJoin-TabelleErgebnis

    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 eine Tabelle über ein Objekt-ID-Feld verfügt

    In der zweiten Tabelle wird eine Join-Tabelle ohne Objekt-ID verwendet und es 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.

    EingabetabelleJoin-TabelleErgebnis

    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 weist die Eingabetabelle mehr Datensätze auf als die Join-Tabelle. Werden alle Datensätze beibehalten, führt dies dazu, dass alle übereinstimmenden Datensätze beibehalten werden und darüber hinaus auch die Datensätze aus der Eingabetabelle, die keine Übereinstimmung aufweisen.

    EingabetabelleJoin-TabelleErgebnis

    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 Ziel-Features 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 Zieltabelle keine Entsprechung in der Join-Tabelle besitzt, erhält dieser Datensatz Nullwerte für alle Felder, die aus der Join-Tabelle an die Zieltabelle angehängt werden.

    EingabetabelleJoin-TabelleErgebnis

    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>

    Wenn der Parameter Alle Ziel-Features beibehalten aktiviert ist, wird ein Datensatz aus der erstellten Zieltabelle entfernt, wenn für diesen Datensatz keine Entsprechung in der Join-Tabelle vorhanden ist. Wenn die Zieltabelle der Attributtabelle eines Layers entspricht, werden Features, die keine verbundenen Daten aufweisen, nicht auf der Karte angezeigt.

    EingabetabelleJoin-TabelleErgebnis

    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

  • Feldeigenschaften, wie Aliasnamen, Sichtbarkeit und Zahlenformatierung, werden beim Hinzufügen oder Entfernen von Verbindungen beibehalten.

  • Eine Eingabetabelle darf nur eine Verbindung aufweisen.

  • Die Verbindung besteht nur solange der Layer vorhanden ist. Ein Layer kann beibehalten werden, indem die 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 zu verbindenden Tabellen denselben Namen haben und sich in verschiedenen Workspaces befinden, wird beim Herstellen der Verbindung ein unzureichend definierter Layer erzeugt.

  • Die Indizierung der Felder in der Eingabetabelle und Join-Tabelle, auf denen die Verbindung basiert, kann zu einer Performance-Steigerung beitragen. Wenn der Parameter Verbundene Felder indizieren aktiviert ist, wird beiden Verbindungsfeldern 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, überprüfen Sie, ob die Werte der Parameter Join-Tabellen-Feld und Eingabe-Join-Feld indiziert sind. Ist dies nicht der Fall, löschen Sie den Index, erstellen Sie ihn erneut, und führen Sie das Werkzeug noch einmal aus.

  • 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. Die Definitionsabfrage kann mit dem Werkzeug Verbindung entfernen oder manuell durch das Entfernen der Definitionsabfrage aus dem Layer entfernt werden.

  • 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.

  • Eine im Layer getroffene Auswahl wird in dem Werkzeug Verbindung hinzufügen nicht verwendet; im Werkzeug Feld verbinden hingegen wird sie verwendet.

Parameter

BeschriftungErläuterungDatentyp
Eingabetabelle

Der Layer oder die Tabellensicht, mit dem bzw. der die Join-Tabelle verbunden wird.

Mosaic Layer; Raster Layer; Table View
Eingabe-Join-Feld

Das Feld im Eingabe-Layer oder der Tabellensicht, auf dem die Verbindung basiert.

Field
Join-Tabelle

Die Tabelle oder Tabellensicht, mit der der Eingabe-Layer oder die Tabellensicht verbunden wird.

Mosaic Layer; Raster Layer; Table View
Join-Tabellen-Feld

Das Feld in der Join-Tabelle, das die Werte enthält, auf denen die Verbindung basiert.

Field
Alle Ziel-Features beibehalten
(optional)

Gibt an, ob nur die Datensätze der Eingabe, die einer Zeile in der Join-Tabelle entsprechen, in die Ausgabe übernommen werden.

  • Aktiviert – Alle Datensätze im Eingabe-Layer oder der Tabellensicht werden in die Ausgabe übernommen. Dies wird auch als "Outer Join" bezeichnet. Dies ist die Standardeinstellung.
  • Deaktiviert: Es werden nur die Datensätze der Eingabe, die einer Zeile in der Join-Tabelle entsprechen, in die Ausgabe übernommen. Dies wird auch als "Inner Join" bezeichnet.
Boolean
Verbundene Felder indizieren
(optional)

Gibt an, ob beiden Verbindungsfeldern Indizes der Tabellenattribute hinzugefügt werden.

  • Aktiviert: Beide Verbindungsfelder werden indiziert. Wenn ein Index für die Tabelle bereits vorhanden ist, wird kein neuer Index hinzugefügt.
  • Deaktiviert: Es werden keine Indizes hinzugefügt. Dies ist die Standardeinstellung.
Boolean

Abgeleitete Ausgabe

BeschriftungErläuterungDatentyp
Aktualisierte Eingabe-Layer oder -Tabellensicht

Das aktualisierte Eingabe-Dataset.

Table View; Raster Layer; Mosaic Layer

arcpy.management.AddJoin(in_layer_or_view, in_field, join_table, join_field, {join_type}, {index_join_fields})
NameErläuterungDatentyp
in_layer_or_view

Der Layer oder die Tabellensicht, mit dem bzw. der die Join-Tabelle verbunden wird.

Mosaic Layer; Raster Layer; Table View
in_field

Das Feld im Eingabe-Layer oder der Tabellensicht, auf dem die Verbindung basiert.

Field
join_table

Die Tabelle oder Tabellensicht, mit der der Eingabe-Layer oder die Tabellensicht verbunden wird.

Mosaic Layer; Raster Layer; Table View
join_field

Das Feld in der Join-Tabelle, das die Werte enthält, auf denen die Verbindung basiert.

Field
join_type
(optional)

Gibt an, ob nur die Datensätze der Eingabe, die einer Zeile in der Join-Tabelle entsprechen, in die Ausgabe übernommen werden.

  • KEEP_ALLAlle Datensätze im Eingabe-Layer oder der Tabellensicht werden in die Ausgabe übernommen. Dies wird auch als "Outer Join" bezeichnet. Dies ist die Standardeinstellung.
  • KEEP_COMMONEs werden nur die Datensätze der Eingabe, die einer Zeile in der Join-Tabelle entsprechen, in die Ausgabe übernommen. Dies wird auch als "Inner Join" bezeichnet.
Boolean
index_join_fields
(optional)

Gibt an, ob beiden Verbindungsfeldern Indizes der Tabellenattribute hinzugefügt werden.

  • INDEX_JOIN_FIELDSBeide Verbindungsfelder werden indiziert. Wenn ein Index für die Tabelle bereits vorhanden ist, wird kein neuer Index hinzugefügt.
  • NO_INDEX_JOIN_FIELDSEs werden keine Indizes hinzugefügt. Dies ist die Standardeinstellung.
Boolean

Abgeleitete Ausgabe

NameErläuterungDatentyp
out_layer_or_view

Das aktualisierte Eingabe-Dataset.

Table View; Raster Layer; Mosaic Layer

Codebeispiel

AddJoin – Beispiel 1 (Python-Fenster)

Das folgende Skript für das Python-Fenster veranschaulicht, wie die Funktion AddJoin im unmittelbaren Modus verwendet wird.

import arcpy
arcpy.env.workspace = "C:/data/Habitat_Analysis.gdb"
veg_joined_table = arcpy.management.AddJoin("vegetation", "HOLLAND95", 
                                            "vegtable", "HOLLAND95")
arcpy.management.CopyFeatures(veg_joined_table, "vegjoin")
AddJoin – Beispiel 2 (eigenständiges Skript)

Dieses eigenständige Skript zeigt die Funktion AddJoin als Teil eines Workflow, um eine Tabelle mit einer Feature-Class zu verbinden und die angegebenen Features zu extrahieren.

# Name: AttributeSelection.py
# Purpose: Join a table to a featureclass and select the desired attributes

# Import system modules
import arcpy

# Set environment settings
arcpy.env.workspace = "C:/data/Habitat_Analysis.gdb"
# The qualifiedFieldNames environment is used by Copy Features when persisting 
# the join field names.
arcpy.env.qualifiedFieldNames = False

# Set local variables
inFeatures = "vegtype"
joinTable = "vegtable"
joinField = "HOLLAND95"
expression = "vegtable.HABITAT = 1"
outFeature = "vegjoin"

# Join the feature layer to a table
veg_joined_table = arcpy.management.AddJoin(inFeatures, joinField, joinTable, 
                                            joinField)

# Select desired features from veg_layer
arcpy.management.SelectLayerByAttribute(veg_joined_table, "NEW_SELECTION", 
                                        expression)

# Copy the layer to a new permanent feature class
result = arcpy.management.CopyFeatures(veg_joined_table, outFeature)

# See field names and aliases
resultFields = arcpy.ListFields(result)
print([field.name for field in resultFields])
print([field.aliasName for field in resultFields])