Skip To Content

Räumliche Verbindung

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).

    Darüber hinaus wird der Ausgabe ein neues Feld, JOIN_FID, hinzugefügt, wenn Eins zu vielen verbinden (JOIN_ONE_TO_MANY in Python) im Parameter Verbindungsvorgang angegeben wird.

  • Wenn der Parameter für Verbindungsvorgang Eins zu vielen verbinden lautet, kann für jedes Ziel-Feature mehr als eine Zeile in der Ausgabe-Feature-Class vorhanden sein. Über das Feld 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 mit dem Ziel-Feature entspricht.

  • Alle Eingabe-Ziel-Features werden nur bei folgenden Bedingungen in die Ausgabe-Feature-Class geschrieben:

    • Der Verbindungsvorgang wird auf Eins zu vielen verbinden 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 Werten 15,5, 2,5 und 3,3 für das Attribut DEPTH verbunden werden und die Vereinigungsregel "Mittelwert" 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 Nächste(r) oder Nächste(r) (geodätisch) 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.

    Weitere Informationen zur Berechnung der Nähe

  • 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 den dreidimensionalen räumlichen Beziehungen Überschneiden 3D und In einer Entfernung (3D) finden Sie unter 3D-Beziehungen lagebezogen auswählen.

Syntax

SpatialJoin_analysis (target_features, join_features, out_feature_class, {join_operation}, {join_type}, {field_mapping}, {match_option}, {search_radius}, {distance_field_name})
ParameterErklärungDatentyp
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.

  • JOIN_ONE_TO_ONEWenn mehrere Verbindungs-Features gefunden werden, die über die gleiche räumliche Beziehung zu einem einzelnen Ziel-Feature verfügen, werden die Attribute aus den vielen Verbindungs-Features mithilfe einer Feldzuordnungs-Vereinigungsregel zusammengefasst. Wenn innerhalb von zwei separaten Polygon-Verbindungs-Features beispielsweise ein einzelnes Punkt-Ziel-Feature gefunden wird, werden die Attribute aus den beiden Polygonen zusammengefasst, bevor sie in die Ausgabe-Point-Feature-Class übertragen werden. Wenn ein Polygon den Attributwert 3 und das andere den Wert 7 hat und die Vereinigungsregel "Sum" angegeben ist, ist der zusammengefasste Wert in der Ausgabe-Feature-Class 10. Dies ist die Standardeinstellung.
  • JOIN_ONE_TO_MANYFalls mehrere Verbindungs-Features gefunden werden, die über die gleiche räumliche Beziehung zu einem einzelnen Ziel-Feature verfügen, enthält die Ausgabe-Feature-Class mehrere Kopien (Einträge) des Ziel-Features. Wenn zum Beispiel ein einzelnes Punkt-Ziel-Feature innerhalb von zwei separaten Polygon-Verbindungs-Features gefunden wird, enthält die Ausgabe-Feature-Class zwei Kopien des Ziel-Features: einen Eintrag mit den Attributen des einen Polygons, und einen Eintrag mit den Attributen des anderen Polygons.
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).

  • KEEP_ALLAlle Ziel-Features werden in der Ausgabe beibehalten (Outer Join). Dies ist die Standardeinstellung.
  • KEEP_COMMON Nur die Ziel-Features, die über die angegebene räumliche Beziehung zu den Verbindungs-Features verfügen, werden in der Ausgabe-Feature-Class beibehalten (Inner Join). Wenn beispielsweise eine Point-Feature-Class für die Ziel-Features und eine Polygon-Feature-Class für die Verbindungs-Features angegeben ist und die Zuordnungsoption match_option = "WITHIN" lautet, enthält die Ausgabe-Feature-Class nur die Ziel-Features, die sich innerhalb eines Polygon-Verbindungs-Features befinden. Alle Ziel-Features, die sich nicht innerhalb eines Verbindungs-Features befinden, werden von der Ausgabe ausgeschlossen.
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:

  • INTERSECTDie Features in den Verbindungs-Features werden zugeordnet, wenn sie ein Ziel-Feature schneiden. Dies ist die Standardeinstellung. Geben Sie im Parameter search_radius eine Entfernung an.
  • INTERSECT_3D Die Features in den Verbindungs-Features werden zugeordnet, wenn sie sich mit einem Ziel-Feature im dreidimensionalen Raum (x, y und z) überschneiden. Geben Sie im Parameter search_radius eine Entfernung an.
  • WITHIN_A_DISTANCEDie Features in den Verbindungs-Features werden zugeordnet, wenn sie sich innerhalb einer bestimmten Entfernung zum Ziel-Feature befinden. Geben Sie im Parameter search_radius eine Entfernung an.
  • WITHIN_A_DISTANCE_GEODESICWie WITHIN_A_DISTANCE, es wird jedoch geodätische anstelle von planarer Entfernung verwendet. Legen Sie fest, ob die Daten eine große geographische Ausdehnung abdecken oder ob das Koordinatensystem der Eingaben für Entfernungsberechnungen geeignet ist.
  • WITHIN_A_DISTANCE_3DDie Features in den Verbindungs-Features werden zugeordnet, wenn sie sich innerhalb einer bestimmten Entfernung zum Ziel-Feature im dreidimensionalen Raum befinden. Geben Sie im Parameter search_radius eine Entfernung an.
  • CONTAINSDie Features in den Verbindungs-Features werden zugeordnet, wenn ein Ziel-Feature sie enthält. Als Ziel-Features müssen Polygone oder Polylinien verwendet werden. Bei dieser Option können die Ziel-Features keine Punkte sein, und die Verbindungs-Features können nur Polygone sein, wenn die Ziel-Features auch Polygone sind.
  • COMPLETELY_CONTAINSDie Features in den Verbindungs-Features werden zugeordnet, wenn ein Ziel-Feature sie vollständig enthält. Polygone können jedes beliebige Feature vollständig enthalten. Punkte können kein Feature vollständig enthalten, nicht einmal einen Punkt. Polylinien können nur Polylinien und Punkte vollständig enthalten.
  • CONTAINS_CLEMENTINIDiese räumliche Beziehung liefert die gleichen Ergebnisse wie COMPLETELY_CONTAINS. Eine Ausnahme ist, wenn sich das Verbindungs-Feature vollständig auf der Grenze des Ziel-Features befindet (kein Teil liegt inner- oder außerhalb). In diesem Fall wird das Feature nicht zugeordnet. "Clementini" legt das Grenzpolygon als Linie zwischen innen und außen fest. Die Grenze einer Linie ist als ihr Endpunkt definiert, und die Grenze eines Punktes ist immer leer.
  • WITHINDie Features in den Verbindungs-Features werden zugeordnet, wenn sich ein Ziel-Feature innerhalb von ihnen befindet. Es ist das Gegenteil von CONTAINS. Bei dieser Option können die Ziel-Features nur dann Polygone sein, wenn es sich bei den Verbindungs-Features ebenfalls um Polygone handelt. Punkte können nur dann Join-Features sein, wenn sie das Ziel sind.
  • COMPLETELY_WITHINDie Features in den Verbindungs-Features werden zugeordnet, wenn ein Ziel-Feature vollständig darin enthalten ist. Dies ist das Gegenteil von COMPLETELY_CONTAINS.
  • WITHIN_CLEMENTINIDie Ergebnisse stimmen mit denen für WITHIN überein, es sei denn, das gesamte Feature in den Verbindungs-Features befindet sich auf der Grenze des Ziel-Features. In diesem Fall wird das Feature nicht zugeordnet. "Clementini" legt das Grenzpolygon als Linie zwischen innen und außen fest. Die Grenze einer Linie ist als ihr Endpunkt definiert, und die Grenze eines Punktes ist immer leer.
  • ARE_IDENTICAL_TODie Features in den Verbindungs-Features werden zugeordnet, wenn sie mit einem Ziel-Feature identisch sind. Verbindungs- und Ziel-Feature müssen vom gleichen Shape-Typ sein – Punkt-zu-Punkt, Linie-zu-Linie und Polygon-zu-Polygon.
  • BOUNDARY_TOUCHESDie Features in den Verbindungs-Features werden zugeordnet, wenn ihre Grenze ein Ziel-Feature berührt. Wenn es sich bei den Ziel- und Verbindungs-Features um Linien oder Polygone handelt, kann die Grenze der Verbindungs-Features die Grenze des Ziel-Features nur berühren. Kein Teil des Verbindungs-Features kann die Grenze des Ziel-Features durchdringen.
  • SHARE_A_LINE_SEGMENT_WITHDie Features in den Verbindungs-Features werden zugeordnet, wenn sie ein Liniensegment mit einem Ziel-Feature teilen. Die Verbindungs- und Ziel-Features müssen über eine Linien- oder Polygonform verfügen.
  • CROSSED_BY_THE_OUTLINE_OFDie Features in den Verbindungs-Features werden zugeordnet, wenn ein Ziel-Feature durch ihren Umriss gekreuzt wird. Die Verbindungs- und Ziel-Features müssen über eine Linien- oder Polygonform verfügen. Wenn für die Verbindungs- oder Ziel-Features Polygone verwendet werden, wird die Grenze (Linie) des Polygons verwendet. Linien, die einen Punkt schneiden, werden zugeordnet. Dies gilt nicht für Linien, die ein Liniensegment gemeinsam haben.
  • HAVE_THEIR_CENTER_INDie Features in den Verbindungs-Features werden zugeordnet, wenn der Mittelpunkt eines Ziel-Features darin enthalten ist. Der Mittelpunkt des Features wird wie folgt berechnet: Bei Polygonen und Multipoints wird der Schwerpunkt der Geometrie verwendet, bei Linien die geometrische Mitte. Geben Sie im Parameter search_radius eine Entfernung an.
  • CLOSESTDas Feature in den Verbindungs-Features wird zugeordnet, das sich im kleinsten Abstand zu einem Ziel-Feature befindet. Weitere Informationen finden Sie im Verwendungshinweis. Geben Sie im Parameter search_radius eine Entfernung an.
  • CLOSEST_GEODESICWie CLOSEST, es wird jedoch geodätische anstelle von planarer Entfernung verwendet. Legen Sie fest, ob die Daten eine große geographische Ausdehnung abdecken oder ob das Koordinatensystem der Eingaben für Entfernungsberechnungen geeignet ist.
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 (match_option) 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 (match_option) 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)

Lizenzinformationen

  • Basic: Ja
  • Standard: Ja
  • Advanced: Ja

Verwandte Themen