Unión espacial (Análisis)

Resumen

Une los atributos de una clase de entidad con otra basada en una relación espacial. Las entidades de destino y los atributos unidos de las entidades de unión se escriben en la clase de entidad de salida.

Uso

Sintaxis

SpatialJoin_analysis (target_features, join_features, out_feature_class, {join_operation}, {join_type}, {field_mapping}, {match_option}, {search_radius}, {distance_field_name})
ParámetroExplicaciónTipo de datos
target_features

Los atributos de las entidades de destino y los atributos de las entidades unidas se transfieren a la clase de entidad de salida. Sin embargo, se puede definir un subconjunto de atributos en el parámetro del mapa de campo. Las entidades de destino pueden ser cualquier fuente de datos espaciales compatible con ArcGIS.

Feature Layer
join_features

Los atributos de las entidades de unión se unen a los atributos de las entidades de destino. Consulte la explicación del parámetro Operación de unión para obtener información sobre cómo la agregación de atributos unidos se ve afectada por el tipo de operación de unión. Las entidades de unión pueden ser cualquier fuente de datos espaciales compatible con ArcGIS.

Feature Layer
out_feature_class

Una nueva clase de entidad que contiene los atributos de las entidades de unión y de destino. Por defecto, todos los atributos de las entidades de destino y los atributos de las entidades unidas se escriben en la salida. Sin embargo, el conjunto de atributos que se transferirá se puede controlar mediante el parámetro del mapa de campo.

Feature Class
join_operation
(Opcional)

Determina cómo se manejarán las uniones entre las entidades de destino y las entidades de unión en la clase de entidad de salida si se encuentran varias entidades de unión que tengan la misma relación espacial con una sola entidad de destino.

  • JOIN_ONE_TO_ONESi se encuentran varias entidades de unión que tengan la misma relación espacial con una sola entidad de destino, se agregarán los atributos de las múltiples entidades de unión mediante una regla de fusión de asignación de campos. Por ejemplo, si se encuentra una entidad de destino de punto dentro de dos entidades de unión de polígono separadas, se agregarán los atributos de los dos polígonos antes de que se transfieran a la clase de entidad de puntos de salida. Si un polígono tiene un valor de atributo de 3 y el otro tiene un valor de 7 y se especifica una regla de fusión de Suma, el valor que se agregará en la clase de entidad de salida será 10. La opción JOIN_ONE_TO_ONE es el valor predeterminado.
  • JOIN_ONE_TO_MANYSi se encuentran varias entidades de unión que tengan la misma relación espacial con una sola entidad de destino, la clase de entidad de salida contendrá varias copias (registros) de la entidad de destino. Por ejemplo, si se encuentra una sola entidad de destino de punto dentro de dos entidades de unión de polígono separadas, la clase de entidad de salida contendrá dos copias de la entidad de destino: un registro con los atributos de un polígono y otro registro con los atributos del otro polígono.
String
join_type
(Opcional)

Determina si todas las entidades de destino se mantendrán en la clase de entidad de salida (conocida como "unión externa") o solo se mantendrán aquellas que tengan la relación espacial especificada con las entidades de unión ("unión interna").

  • KEEP_ALLTodas las entidades de destino se mantendrán en la salida (unión externa). Esta es la opción predeterminada.
  • KEEP_COMMON Sólo se mantendrán en la clase de entidad de salida aquellas entidades de destino que tengan la relación espacial especificada con las entidades de unión (unión interna). Por ejemplo, si se especifica una clase de entidad de punto para las entidades de destino y se especifica una clase de entidad de polígono para las entidades de unión, con una Opción de correspondencia de "WITHIN", la clase de entidad de salida sólo contendrá aquellas entidades de destino que se encuentren dentro de una entidad de unión de polígono; las entidades de destino que no estén dentro de una entidad de unión serán excluidas de la salida.
Boolean
field_mapping
(Opcional)

Controla qué campos de atributos estarán en la clase de entidad de salida. La lista inicial contiene todos los campos tanto de las entidades de destino como de las entidades de unión. Los campos se pueden agregar, eliminar, se les puede cambiar el nombre o las propiedades. Los campos seleccionados de las entidades de destino se transfieren como están, pero los campos seleccionados de las entidades de unión se pueden agregar mediante una regla de fusión válida. Para obtener detalles sobre la asignación de campos, consulte los temas de ayuda Utilizar el control de asignación de campos y Asignar campos de entrada a los campos de salida.

Field Mappings
match_option
(Opcional)

Define los criterios que se utilizan para hacer que concuerden las filas. Las opciones de correspondencia son:

  • INTERSECT: las entidades en las entidades de unión se harán coincidir si intersecan una entidad de destino. Esta es la opción predeterminada.
  • CONTAINS: las entidades en las entidades de unión se harán coincidir si una entidad de destino las contiene. Para esta opción, las entidades de destino no pueden ser puntos y las entidades de unión sólo pueden ser polígonos cuando las entidades de destino también son polígonos.
  • WITHIN: las entidades en las entidades de unión se harán coincidir si una entidad de destino está dentro de ellas. Para esta opción, las entidades de unión no pueden ser puntos y las entidades de destino sólo pueden ser polígonos cuando las entidades de unión también son polígonos.
  • CLOSEST: se hace coincidir la entidad en las entidades de unión que está más cerca de una entidad de destino. Es posible que dos o más entidades de unión estén a la misma distancia de la entidad de destino. Cuando ocurre esta situación, una de las entidades de unión se selecciona de forma aleatoria como la entidad coincidente.
String
search_radius
(Opcional)

Las entidades de unión que se encuentren dentro de esta distancia de una entidad de destino se considerarán para la unión espacial. El radio de búsqueda sólo es válido cuando se especifica la Opción de correspondencia en INTERSECT o CLOSEST. Utilizar un radio de búsqueda de 100 metros con la Opción de correspondencia INTERSECT es el equivalente de decir: si una entidad de unión se encuentra dentro de los 100 metros de una entidad de destino, se transfieren los atributos de la entidad de unión a la entidad de destino. Utilizar un radio de búsqueda de 100 metros con la Opción de correspondencia CLOSEST es el equivalente de decir: si una entidad de unión se encuentra dentro de los 100 metros de una entidad de destino y es la entidad de unión más cercana a esa entidad de destino, se transfieren los atributos de la entidad de unión a la entidad de destino.

Linear unit
distance_field_name
(Opcional)

El nombre de un campo que se va a agregar a la clase de entidad de salida que contiene la distancia entre la entidad de destino y la entidad de unión más cercana. Esta opción sólo es válida cuando CLOSEST se especifica para la Opción de correspondencia. Puede dejar este parámetro vacío si no desea ningún campo de salida.

String

Ejemplo de código

Ejemplo 1 de SpatialJoin (ventana de Python)

La siguiente secuencia de comandos muestra cómo utilizar la función SpatialJoin en una ventana de Python.

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)

Ejemplo 2 de SpatialJoin (secuencia de comandos independiente)

La siguiente secuencia de comandos independiente muestra cómo utilizar la función SpatialJoin para unir los atributos de las ciudades a los estados.

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

Entornos

Temas relacionados

Información de licencia

ArcView: Sí
ArcEditor: Sí
ArcInfo: Sí

7/10/2012