Zusammenfassung
Vereinigt Attribute eines Features basierend auf der räumlichen Beziehung mit den Attributen eines anderen. Die Ziel-Features und die vereinigten Attribute aus den Verbindungs-Features werden in die Ausgabe-Feature-Class geschrieben.
Anzeigen von graphischen Beispielen zur Erläuterung räumlicher Beziehungen
Verwendung
Bei der räumlichen Verbindung werden Zeilen aus den Verbindungs-Features basierend auf ihren relativen räumlichen Positionen mit den Ziel-Features verknüpft.
Standardmäßig werden alle Attribute der Join-Features an Attribute der Ziel-Features angehängt und in die Ausgabe-Feature-Class kopiert. Mithilfe des Parameters Feldzuordnung von Verbindungs-Features können Sie festlegen, welche Attribute in die Ausgabe geschrieben werden.
Die beiden neuen Felder Join_Count und TARGET_FID werden der Ausgabe-Feature-Class immer hinzugefügt. Join_Count gibt an, wie viele Verbindungs-Features mit jedem Ziel-Feature übereinstimmen (TARGET_FID).
Ein weiteres neues Feld, JOIN_FID, wird der Ausgabe hinzugefügt, wenn JOIN_ONE_TO_MANY im Parameter Verbindungsvorgang angegeben wird.
Wenn der Parameter für Verbindungsvorgang JOIN_ONE_TO_MANY lautet, kann für jedes Ziel-Feature mehr als eine Zeile in der Ausgabe-Feature-Class vorhanden sein. Anhand des Feldes JOIN_FID kann leichter festgestellt werden, welches Feature mit welchem Ziel-Feature (TARGET_FID) verbunden ist. Der Wert -1 für das JOIN_FID bedeutet, dass kein Feature der angegebenen räumlichen Beziehung dem Ziel-Feature entspricht.
Alle Eingabe-Ziel-Features werden nur bei folgenden Bedingungen in die Ausgabe-Feature-Class geschrieben:
- Der Verbindungsvorgang ist auf JOIN_ONE_TO_ONE festgelegt und
- Alle Ziel-Features beibehalten ist aktiviert (join_type = "KEEP_ALL" in Python).
Die Vereinigungsregeln im Parameter Feldzuordnung von Verbindungs-Features gelten nur für Attribute aus den Verbindungs-Features und wenn mehr als ein Feature einem Ziel-Feature zugeordnet ist (wenn Join_Count > 1). Wenn beispielsweise drei Features mit den DEPTH-Attributwerten 15,5, 2,5 und 3,3 vereinigt werden und die Vereinigungsregel "Mean" angegeben ist, weist das Ausgabefeld den Wert 6,1 auf. NULL-Werte in Join-Feldern werden bei der Statistikberechnung ignoriert. Beispielsweise führen 15,5, <Null> und 2,5 zu einem Mittelwert von 9,0 und der Anzahl 2.
Wenn die Zuordnungsoption auf CLOSEST oder CLOSEST_GEODESIC festgelegt ist, ist es möglich, dass sich zwei oder mehrere Verbindungs-Features im gleichen Abstand zum Ziel-Feature befinden. Wenn diese Situation auftritt, wird eines der Verbindungs-Features zufällig als passendes Feature selektiert (die FID des Verbindungs-Features wirkt sich nicht auf diese zufällige Auswahl aus). Wenn Sie das zweit-, dritt- oder N-nächste Feature suchen möchten, verwenden Sie das Werkzeug Near-Tabelle erstellen.
Wenn ein Join-Feature eine räumliche Beziehung mit mehreren Ziel-Features aufweist, wird es so oft gezählt, wie es dem Ziel-Feature zugeordnet ist. Wenn sich ein Punkt beispielsweise in drei Polygonen befindet, wird er dreimal gezählt – einmal pro Polygon.
Weitere Informationen zu dreidimensionalen räumlichen Beziehungen INTERSECT_3D und WITHIN_A_DISTANCE_3D finden Sie unter 3D-Beziehungen lagebezogen auswählen.
Syntax
arcpy.analysis.SpatialJoin(target_features, join_features, out_feature_class, {join_operation}, {join_type}, {field_mapping}, {match_option}, {search_radius}, {distance_field_name})
Parameter | Erklärung | Datentyp |
target_features | Die Attribute der Ziel-Features und die Attribute aus den verbundenen Features werden in die Ausgabe-Feature-Class übertragen. Eine Untermenge der zu übertragenden Attribute kann aber im Parameter "Feldzuordnung" definiert werden. | Feature Layer |
join_features | Die Attribute aus den Verbindungs-Features werden mit den Attributen der Ziel-Features verbunden. In der Erläuterung zum Parameter join_operation finden Sie Informationen darüber, inwiefern sich der Verbindungsvorgang auf die Zusammenfassung der verbundenen Attribute auswirkt. | Feature Layer |
out_feature_class | Eine neue Feature-Class, in der die Attribute der Ziel- und Verbindungs-Features enthalten sind. Standardmäßig werden alle Attribute der Ziel-Features und die Attribute der verbundenen Features in die Ausgabe geschrieben. Welche Attribute übertragen werden, kann jedoch vom Parameter "Feldzuordnung" gesteuert werden. | Feature Class |
join_operation (optional) | Bestimmt die Behandlung von Verbindungen zwischen den Ziel-Features und den Verbindungs-Features in der Ausgabe-Feature-Class, wenn mehrere Verbindungs-Features gefunden werden, die über die gleiche räumliche Beziehung zu einem einzelnen Ziel-Feature verfügen.
| String |
join_type (optional) | Ermittelt, ob in der Ausgabe-Feature-Class alle Ziel-Features beibehalten werden (Outer Join) oder nur jene, die über die angegebene räumliche Beziehung zu den Verbindungs-Features verfügen (Inner Join).
| Boolean |
field_mapping (optional) | Steuert, welche Attributfelder in der Ausgabe-Feature-Class enthalten sind. Die ursprüngliche Liste enthält alle Felder aus den Ziel-Features und den Verbindungs-Features. Felder können hinzugefügt, gelöscht oder umbenannt und die Eigenschaften der Felder geändert werden. Die ausgewählten Felder aus den Ziel-Features werden ohne Veränderung übertragen, aber die ausgewählten Felder aus den Verbindungs-Features können durch eine Vereinigungsregel zusammengefasst werden. Weitere Informationen zur Feldzuordnung finden Sie unter Verwenden des Feldzuordnung-Steuerelements und Zuordnen von Eingabefeldern zu Ausgabefeldern. Es können mehrere Felder und Statistikkombinationen angegeben werden. | Field Mappings |
match_option (optional) | Definiert die Kriterien für den Abgleich von Zeilen. Es gibt die folgenden Zuordnungsoptionen:
| String |
search_radius (optional) | Verbindungs-Features, die sich innerhalb der hier angegebenen Entfernung eines Ziel-Features befinden, werden für die räumliche Verbindung berücksichtigt. Ein Suchradius ist nur gültig, wenn die räumliche Beziehung (Abgleichoption) INTERSECT, WITHIN_A_DISTANCE, WITHIN_A_DISTANCE_GEODESIC, HAVE_THEIR_CENTER_IN, CLOSEST oder CLOSEST_GEODESIC angegeben wird. Die Verwendung eines Suchradius von 100 Metern mit der räumlichen Beziehung WITHIN_A_DISTANCE verbindet ein Feature innerhalb von 100 Metern von einem Ziel-Feature. Für die drei WITHIN_A_DISTANCE-Beziehungen wird eine Entfernung von 0 verwendet, wenn kein Wert für den Suchradius angegeben wird. | Linear unit |
distance_field_name (optional) | Der Name eines Feldes, das der Ausgabe-Feature-Class hinzugefügt werden soll und die Entfernung zwischen dem Ziel-Feature und dem nächstgelegenen Verbindungs-Feature enthält. Die Option ist nur gültig, wenn die räumliche Beziehung (Zuordnungsoption) CLOSEST oder CLOSEST_GEODESIC angegeben wird. Der Wert dieses Feldes ist -1, wenn kein Feature innerhalb eines Suchradius gefunden wird. Falls kein Entfernungsfeldname angegeben ist, wird das Feld der Ausgabe-Feature-Class nicht hinzugefügt. | String |
Codebeispiel
SpatialJoin – Beispiel 1 (Python-Fenster)
Das folgende Skript veranschaulicht, wie Sie die Funktion "SpatialJoin" in einem Python-Fenster verwenden.
import arcpy
target_features = "C:/data/usa.gdb/states"
join_features = "C:/data/usa.gdb/cities"
out_feature_class = "C:/data/usa.gdb/states_cities"
arcpy.SpatialJoin_analysis(target_features, join_features, out_feature_class)
SpatialJoin – Beispiel 2 (eigenständiges Skript)
Das folgende eigenständige Skript veranschaulicht, wie Sie das Werkzeug "SpatialJoin" zum Verbinden der Attribute von Städten mit Bundesstaaten verwenden.
# Name: SpatialJoin_Example2.py
# Description: Join attributes of cities to states based on spatial relationships.
# Requirements: os module
# Import system modules
import arcpy
import os
# Set local variables
workspace = r"C:\gpqa\mytools\spatialjoin\usa.gdb"
outWorkspace = r"C:\gpqa\mytools\spatialjoin\output.gdb"
# Want to join USA cities to states and calculate the mean city population
# for each state
targetFeatures = os.path.join(workspace, "states")
joinFeatures = os.path.join(workspace, "cities")
# Output will be the target features, states, with a mean city population field (mcp)
outfc = os.path.join(outWorkspace, "states_mcp2")
# Create a new fieldmappings and add the two input feature classes.
fieldmappings = arcpy.FieldMappings()
fieldmappings.addTable(targetFeatures)
fieldmappings.addTable(joinFeatures)
# First get the POP1990 fieldmap. POP1990 is a field in the cities feature class.
# The output will have the states with the attributes of the cities. Setting the
# field's merge rule to mean will aggregate the values for all of the cities for
# each state into an average value. The field is also renamed to be more appropriate
# for the output.
pop1990FieldIndex = fieldmappings.findFieldMapIndex("POP1990")
fieldmap = fieldmappings.getFieldMap(pop1990FieldIndex)
# Get the output field's properties as a field object
field = fieldmap.outputField
# Rename the field and pass the updated field object back into the field map
field.name = "mean_city_pop"
field.aliasName = "mean_city_pop"
fieldmap.outputField = field
# Set the merge rule to mean and then replace the old fieldmap in the mappings object
# with the updated one
fieldmap.mergeRule = "mean"
fieldmappings.replaceFieldMap(pop1990FieldIndex, fieldmap)
# Delete fields that are no longer applicable, such as city CITY_NAME and CITY_FIPS
# as only the first value will be used by default
x = fieldmappings.findFieldMapIndex("CITY_NAME")
fieldmappings.removeFieldMap(x)
y = fieldmappings.findFieldMapIndex("CITY_FIPS")
fieldmappings.removeFieldMap(y)
#Run the Spatial Join tool, using the defaults for the join operation and join type
arcpy.SpatialJoin_analysis(targetFeatures, joinFeatures, outfc, "#", "#", fieldmappings)
Umgebungen
Lizenzinformationen
- Basic: Ja
- Standard: Ja
- Advanced: Ja