Verbindung hinzufügen (Data Management)
Zusammenfassung
Verbindet einen Layer mit einem anderen Layer oder einer Tabelle (wobei der Layer ein Feature-Layer, eine Tabellensicht oder ein Raster-Layer mit Raster-Attributtabelle sein kann) auf Basis eines gemeinsamen Feldes.
Die Datensätze aus der Join-Tabelle werden den Datensätzen aus dem Eingabe-Layer-Namen 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.
Bild
Verwendung
-
Die Eingabe muss ein Feature-Layer, eine Tabellensicht oder ein Raster-Layer mit einer Attributtabelle sein; es kann keine Feature-Class oder Tabelle als Eingabe verwendet werden.
-
Datensätze aus der Join-Tabelle können mehr als einem Datensatz aus dem Eingabe-Layer oder der Tabellensicht zugeordnet werden. Weitere Informationen zu Eins-zu-eins-, Viele-zu-eins-, Eins-zu-vielen- und Viele-zu-vielen-Verbindungen finden Sie unter Verbinden von Tabellen und Erstellen von Beziehungen zwischen Tabellen.
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.
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.
-
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.
Feldeigenschaften, wie Aliasnamen, Sichtbarkeit und Zahlenformatierung, werden beim Hinzufügen oder Entfernen von Verbindungen beibehalten.
Wenn bereits ein Join mit dem gleichen Tabellennamen vorhanden ist - wenn z. B. Layer A mit Tabelle B verbunden ist - dann wird beim erneuten Ausführen des Werkzeugs für ein Join mit Tabelle B eine Warnung ausgegeben, dass der Join bereits vorhanden ist.
-
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.
-
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 Punktes verwendet.
-
Um eine bleibende Verbindung herzustellen, verwenden Sie das Werkzeug Feld verbinden. Sie können die Verbindung auch dadurch permanent machen, dass Sie den verbundenen Feature-Layer als neue Feature-Class bzw. die verbundene Tabellensicht als neue Tabelle speichern. Beim Speichern von Ergebnissen in einer neuen Feature-Class oder Tabelle können Sie die Umgebungseinstellung Vollständig qualifizierte Feldnamen verwenden, um zu steuern, ob die Feldnamen in der verbundenen Ausgabe durch den Namen der Tabelle spezifiziert werden sollen, aus der das Feld stammt.
-
Die Indizierung der Felder in dem Eingabe-Layer bzw. der 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.
Weitere Informationen zu Performancetipps zum Verbinden von Daten
-
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 Name der Join-Tabellen darf nicht mit einem numerischen Wert beginnen.
Informationen über Gründe, aus denen Tabellen-Joins fehlschlagen können
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
Das folgende Skript im Python-Fenster veranschaulicht, wie die Funktion "AddJoin" im unmittelbaren Modus verwendet wird.
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")
Dieses eigenständige Skript zeigt die Funktion "AddJoin" als Teil eines Workflows, 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
# 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