Verbindung hinzufügen (Data Management)

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 Parameter Join-Tabelle werden den Datensätzen im Parameter 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.

  • Um eine dauerhafte Verbindung zu erstellen, verwenden Sie entweder das Werkzeug Feld verbinden oder verwenden Sie den verbundenen Layer als Eingabe für eines der folgenden Werkzeuge: Features kopieren, Zeilen kopieren, Feature-Class in Feature-Class oder Tabelle in Tabelle.Wenn die Ergebnisse in einer neuen Feature-Class oder Tabelle gespeichert werden, kann die Umgebung Qualifizierte Feldnamen verwendet werden, um zu steuern, ob die Feldnamen in der verbundenen Ausgabe durch den Namen der Tabelle, aus der das Feld stammt, spezifiziert werden sollen.

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

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

    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.

    Schließlich die Eingabetabelle, die mehr Datensätze aufweist als die Join-Tabelle. Alle Datensätze behalten alle übereinstimmen Datensätze bei zuzüglich der Datensätze aus der Eingabetabelle, die keine Übereinstimmung aufweist.

    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.

  • Datensätze aus der Join-Tabelle können mehreren Datensätzen zugewiesen werden, wenn 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 die Option "Nur passende Datensätze 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 gespeichert werden, indem die ArcGIS Pro-Sitzung gespeichert wird oder indem er unter Verwendung des Werkzeugs In Layer-Datei speichern in eine Layer-Datei gespeichert wird.

  • In der resultierenden Eingabetabelle 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 folgenden Felder: landuse.A, landuse.B, lookup_tab.C und lookup_tab.D.

  • Die Indizierung der Felder in der Eingabetabelle und Join-Tabelle, auf denen die Verbindung basiert, kann zu einer Performance-Steigerung beitragen. Felder können mit dem Werkzeug Attributindex hinzufügen indiziert werden.

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

  • 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 dieses Werkzeugs eine Schaltfläche zum Überprüfen der Verbindung verfügbar.

  • Die Auswahlen in Bezug auf den Layer werden in dem Werkzeug Verbindung hinzufügen nicht verwendet; im Werkzeug Feld verbinden werden sie jedoch verwendet.

Syntax

arcpy.management.AddJoin(in_layer_or_view, in_field, join_table, join_field, {join_type})
ParameterErklärungDatentyp
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

Abgeleitete Ausgabe

NameErklärungDatentyp
out_layer_or_view

Das aktualisierte Eingabe-Dataset.

Tabellensicht; Raster-Layer; Mosaik-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.AddJoin_management("vegetation", "HOLLAND95", 
                                            "vegtable", "HOLLAND95")
arcpy.CopyFeatures_management(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 gewünschten 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.AddJoin_management(inFeatures, joinField, joinTable, 
                                            joinField)
# Select desired features from veg_layer
arcpy.SelectLayerByAttribute_management(veg_joined_table, "NEW_SELECTION", 
                                        expression)
# Copy the layer to a new permanent feature class
arcpy.CopyFeatures_management(veg_joined_table, outFeature)

Lizenzinformationen

  • Basic: Ja
  • Standard: Ja
  • Advanced: Ja

Verwandte Themen