Räumliche Verbindung (Analyse)
Zusammenfassung
Vereinigt Attribute einer Feature-Class basierend auf einer räumlichen Beziehung mit den Attributen einer anderen. Die Ziel-Features und die vereinigten Attribute aus den Verbindungs-Features werden in die Ausgabe-Feature-Class geschrieben.
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 Verbindungs-Features an die Attribute der Ziel-Features angehängt. 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.
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 (Join_Count > 0). 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.
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. Das neue Feld "JOIN_FID" wird der Ausgabe hinzugefügt. Dadurch kann leichter festgestellt werden, welches Verbindungs-Feature (JOIN_FID) mit welchem Ziel-Feature verbunden ist.
Alle Eingabe-Ziel-Features werden nur bei folgenden Bedingungen in die Ausgabe-Feature-Class geschrieben:
- Der Verbindungsvorgang ist festgelegt auf "JOIN_ONE_TO_ONE" und
- Alle Ziel-Features beibehalten ist aktiviert (in der Skripterstellung festgelegt auf "JOIN_ALL").
Wenn die Abgleichoption 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 ausgewählt (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.
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. Bei den Verbindungs-Features kann es sich um beliebige räumliche Datenquellen handeln, die von ArcGIS unterstützt werden. | 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 gültige Vereinigungsregel zusammengefasst werden. Weitere Informationen zur Feldzuordnung finden Sie in den Hilfe-Themen Verwenden des Feldzuordnung-Steuerelements und Zuordnen von Eingabefeldern zu Ausgabefeldern. | Field Mappings |
match_option (optional) |
Definiert die Kriterien für den Abgleich von Zeilen. Es gibt die folgenden Abgleichoptionen:
| String |
search_radius (optional) |
Verbindungs-Features, die sich innerhalb der hier angegebenen Distanz eines Ziel-Features befinden, werden für die räumliche Verbindung berücksichtigt. Der Suchradius ist nur gültig, wenn die Abgleichoption "INTERSECT" oder "CLOSEST" angegeben wird. Die Verwendung eines Suchradius von 100 Metern mit der Abgleichoption entspricht folgender Aussage: Wenn ein Verbindungs-Feature innerhalb von 100 Metern eines Ziel-Features liegt, sollen die Attribute des Verbindungs-Features in das Ziel-Feature übertragen werden. Die Verwendung eines Suchradius von 100 Metern mit der Abgleichoption "CLOSEST" entspricht folgender Aussage: Wenn ein Verbindungs-Feature innerhalb von 100 Metern eines Ziel-Features liegt und das nächstgelegene Verbindungs-Feature dieses Ziel-Features ist, sollen die Attribute des Verbindungs-Features in das Ziel-Feature übertragen 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. Diese Option ist nur gültig, wenn die Abgleichoption "CLOSEST" angegeben ist. Sie können diesen Parameter leer lassen, wenn Sie kein Ausgabefeld benötigen. | 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)