Räumliche Verbindung (Analyse)
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.
Zwei neue Felder – "Join_Count" und "TARGET_FID" – werden der Ausgabe-Feature-Class immer hinzugefügt. "Join_Count" gibt an, wie viele Verbindungs-Features mit den einzelnen Ziel-Features (TARGET_FID) verbunden wurden.
Der Ausgabe wird ein anderes neues Feld "JOIN_FID" 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_FIDD" 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 mit 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 (in der Skripterstellung festgelegt auf "KEEP_ALL").
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 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" 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.
Syntax
Parameter | Erläuterung | 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. Bei den Ziel-Features kann es sich um beliebige räumliche Datenquellen handeln, die von ArcGIS unterstützt 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 Verbindungsvorgang 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 (Zuordnungsoption) "INTERSECT" oder "CLOSEST" angegeben wird. Die Verwendung eines Suchradius von 100 Metern mit der räumlichen Beziehung "INTERSECT" entspricht folgender Aussage: Wenn ein Verbindungs-Feature innerhalb von 100 Metern eines Ziel-Features liegt, soll das Verbindungs-Feature als Übereinstimmung betrachtet werden. | 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" 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
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)
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)