Verbindung hinzufügen (Data Management)
Zusammenfassung
Verbindet einen Layer mit einem anderen Layer oder einer Tabelle (wobei 'Layer' ein Feature-Layer, eine Tabellensicht oder ein Raster-Layer mit Raster-Attributtabelle ist) auf Basis eines gemeinsamen Felds.
Die Datensätze aus der Join-Tabelle werden den Datensätzen aus dem Layer-Namen der Eingabe zugeordnet. Eine Übereinstimmung tritt auf, wenn das Join-Feld der Eingabe und das Join-Feld der Ausgabe dieselben Werte aufweisen. Diese Verbindung ist temporär.
Abbildung
Verwendung
-
Die Eingabe muss ein Feature-Layer oder eine Tabellensicht oder ein Raster-Layer mit einer Attributtabelle sein; es kann keine Feature-Class oder Tabelle als Eingabe verwendet werden.
-
Wenn die Werte im Ausgabe-Join-Feld nicht eindeutig sind, wird nur das erste Vorkommen der jeweiligen Werte verwendet.
-
Die Verbindung besteht nur für die Dauer der Sitzung. Wenn Sie die Verbindung für weitere Sitzungen beibehalten möchten, speichern Sie den Layer mit dem Werkzeug In Layer-Datei speichern als Layer-Datei. Dies gilt jedoch nur für Layer. Tabellensichten können auf diese Weise nicht gespeichert werden.
Um eine bleibende Verbindung herzustellen, verwenden Sie das Werkzeug Feld verbinden. Sie können die Verbindung auch dadurch permanent machen, indem Sie den verbundenen Feature-Layer als neue Feature-Class bzw. die verbundene Tabellensicht als neue Tabelle speichern.
- Klicken Sie in ArcMap mit der rechten Maustaste auf den Eingabe-Layer oder die Tabellensicht, wählen SieDaten > Daten exportieren und geben Sie die Feature-Class, das Shapefile, die Tabelle oder die dBASE-Tabelle für die Ausgabe an.
- Wenn die Eingabe ein Feature-Layer ist, verwenden Sie das Werkzeug Features kopieren. Wenn die Eingabe eine Tabellensicht ist, verwenden Sie das Werkzeug Zeilen kopieren.
-
Das Werkzeug ist nicht auf ArcMap beschränkt. Sie können es auch in Layern und Tabellensichten in ArcCatalog und in Skripten einsetzen. Mit dem Werkzeug Feature-Layer erstellen wird aus einer Feature-Class ein Layer erstellt, mit dem Werkzeug Tabellensicht erstellen aus einer Eingabe-Tabelle oder einer Feature-Class eine Tabellensicht.
-
Als Join-Tabelle können folgende Tabellentypen verwendet werden: Geodatabase-Tabellen (ArcSDE, File oder Personal), dBASE-Dateien, INFO-Tabellen und OLE DB-Tabellen.
-
Der Eingabe-Layer oder die Tabellensicht muss ein ObjectID-Feld aufweisen. Die Join-Tabelle muss kein ObjectID-Feld enthalten.
-
Die Indizierung der Felder in Eingabe-Layer bzw. Tabellensicht und Join-Tabelle, auf denen die Verbindung basiert, kann zu einer Performance-Steigerung beitragen. Sie können die Indizierung entweder mit dem Werkzeug Attributindex hinzufügen ausführen oder in ArcCatalog mit der rechten Maustaste auf die Eingabe klicken und im aufgerufenen Dialogfeld einen Index für das gewünschte Feld erstellen.
-
Im resultierenden Layer bzw. der resultierenden Tabellensicht erhalten die Felder des Eingabe-Layers oder der Tabellensicht ein Präfix aus dem Namen der Eingabe und einem Punkt (.). 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".
- Für Coverage-Feature-Classes und INFO-Tabellen wird als Trennzeichen für Tabelle und Feldname ein Doppelpunkt (:) statt eines Punkts verwendet.
-
Sie können die Ergebnisse von Verbindung hinzufügen mit dem Werkzeug Copy_Features oder Copy_Rows in einer neuen Feature-Class speichern. Wenn Ergebnisse mithilfe dieser Kopierwerkzeuge gespeichert werden, können Sie die Umgebungseinstellung Vollständig qualifizierte Feldnamen verwenden, um zu steuern, ob die verbundenen Feldnamen durch den Namen der Tabelle spezifiziert werden, aus der das Feld stammt.
-
Datensätze aus der Join-Tabelle können mehr als einem Datensatz aus dem Eingabe-Layer oder der Tabellensicht zugeordnet 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 diese Feldänderungen nicht in die Ausgabe des verbundenen Layers oder der verbundenen Tabellensicht übernommen.
-
Der Join-Tabellen-Name darf nicht mit einem numerischen Wert beginnen.
Syntax
Parameter | Erläuterung | Datentyp |
in_layer_or_view |
Der Layer oder die Tabellensicht, mit dem bzw. der die Join-Tabelle verbunden wird. | Mosaic Layer; Raster Catalog 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 Catalog 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) |
Legt fest, wie Datensätze in der Eingabe behandelt werden, die einem Datensatz in der Join-Tabelle entsprechen.
| Boolean |
Codebeispiel
Mit dem folgenden Skript im Python-Fenster wird veranschaulicht, wie Sie die Funktion "AddJoin" im unmittelbaren Modus verwenden.
import arcpy from arcpy import env env.workspace = "C:/data" arcpy.MakeFeatureLayer_management ( "Habitat_Analysis.gdb/vegtype", "veg_layer") arcpy.AddJoin_management( "veg_layer", "HOLLAND95", "vegtable.dbf", "HOLLAND95") arcpy.CopyFeatures_management( "veg_layer", "Habitat_Analysis.gdb/vegjoin")
In diesem eigenständigen Skript wird die Funktion "AddJoin" als Teil eines Workflows gezeigt, um eine Tabelle mit einer Feature-Class zu verbinden und dann die gewünschten Features zu extrahieren.
# Name: AttributeSelection.py # Purpose: Join a table to a featureclass and select the desired attributes # Author: ESRI # Import system modules import arcpy from arcpy import env try: # Set environment settings env.workspace = "C:/data" env.qualifiedFieldNames = False # Set local variables inFeatures = "Habitat_Analysis.gdb/vegtype" layerName = "veg_layer" joinTable = "vegtable.dbf" joinField = "HOLLAND95" expression = "vegtable.HABITAT = 1" outFeature = "Habitat_Analysis.gdb/vegjoin" # Create a feature layer from the vegtype featureclass arcpy.MakeFeatureLayer_management (inFeatures, layerName) # Join the feature layer to a table arcpy.AddJoin_management(layerName, joinField, joinTable, joinField) # Select desired features from veg_layer arcpy.SelectLayerByAttribute_management(layerName, "NEW_SELECTION", expression) # Copy the layer to a new permanent feature class arcpy.CopyFeatures_management(layerName, outFeature) except Exception, e: # If an error occurred, print line number and error message import traceback, sys tb = sys.exc_info()[2] print "Line %i" % tb.tb_lineno print e.message