Etiqueta | Explicación | Tipo de datos |
Entidades de destino | Los atributos de las entidades de destino y los atributos de las entidades unidas se transferirán a la clase de entidad de salida. Sin embargo, se puede definir un subconjunto de atributos mediante el parámetro del mapa de campo. | Feature Layer |
Unir entidades | Los atributos de las entidades de unión se unirán a los atributos de las entidades de destino. Consulte la explicación del parámetro Operación de unión para obtener detalles sobre cómo la agregación de atributos unidos se ve afectada por el tipo de operación de unión. | Feature Layer |
Clase de entidad de salida | Una nueva clase de entidad que contiene los atributos de las entidades de unión y de destino. De forma predeterminada, todos los atributos de las entidades de destino y los atributos de las entidades unidas se escribirán en la salida. Sin embargo, el conjunto de atributos que se transferirá se puede definir mediante el parámetro del mapa de campo. | Feature Class |
Operación Unión (Opcional) | La operación que unirá las entidades de destino y las entidades de unión de la clase de entidad de salida si se encuentra que varias entidades de unión tienen la misma relación espacial con una única entidad de destino.
| String |
Mantener todas las entidades destino (Opcional) | Especifica si todas las entidades de destino se mantendrán en la clase de entidad de salida (unión externa) o solo aquellas que tienen la relación espacial especificada con las entidades de unión (unión interna).
| Boolean |
Mapa de campo (Opcional) | Loa campos que se incluirán en la clase de entidad de salida con sus respectivas propiedades y campos de origen. De manera predeterminada, la salida incluirá todos los campos de las entidades de unión y destino. Use el campo de mapa para añadir, borrar, cambiar el nombre y reordenar los campos, así como para cambiar otras propiedades de los campos. El mapa de campo puede usarse para combinar valores de dos o más campos de entrada en un solo campo de salida. | Field Mappings |
Opción de correspondencia (Opcional) | Especifica los criterios que se utilizarán para la correspondencia de filas.
| String |
Radio de búsqueda (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 solo es válido cuando se especifica la relación espacial (el parámetro Opción de coincidencia se configura en Intersecar, Dentro de una distancia, Dentro de una distancia geodésica, Tienen su centro en, Más cercano o Geodésico más cercano). Por ejemplo, si se utiliza un radio de búsqueda de 100 metros con la relación espacial Dentro de una distancia, se unirá la entidad que se encuentre dentro de un radio de 100 metros de una entidad de destino. En las tres relaciones Dentro de una distancia, si no se especifica ningún valor en Radio de Búsqueda, se utiliza una distancia de 0. | Linear Unit |
Nombre de campo de distancia (Opcional) | El nombre del campo que contiene la distancia entre la entidad de destino y la entidad de unión más cercana. Este campo se agregará a la clase de entidad de salida. Este parámetro solo es válido cuando se especifica la relación espacial (Opción de correspondencia establecido como Más cercano o Geodésico más cercano). El valor de este campo es -1 si no coincide ninguna entidad dentro de un radio de búsqueda. Si no se proporciona ningún nombre de campo, el campo no se agregará a la clase de entidad de salida. | String |
Campos coincidentes (Opcional) | Pares de campos de las entidades de unión y las entidades de destino que se van a usar para la coincidencia de atributos. Solo los registros de las entidades de unión que comparten valores de campos coincidentes con las entidades de destino participarán en la unión espacial. | Value Table |
Resumen
Une los atributos de una entidad con otra basada en la 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.
Más información sobre las relaciones Unión espacial por tipo de entidad
Uso
La unión espacial hace coincidir las filas de los valores de Entidades de unión con los valores de Entidades de destino según sus ubicaciones espaciales relativas.
De forma predeterminada, todos los atributos de las entidades de unión se incorporan a los atributos de las entidades de destino y se copian en la clase de entidad de salida. Puede definir qué atributos se especificarán en la salida mediante el parámetro Mapa del campo.
Se agregarán dos campos nuevos, Join_Count y TARGET_FID, a la clase de entidad de salida. El campo Join_Count indica el número de entidades de unión que coinciden con cada entidad de destino (TARGET_FID).
Otro campo nuevo, JOIN_FID, se agregará a la salida cuando se especifica Unir uno a muchos para el parámetro Operación de unión.
Cuando el parámetro Operación Unión está definida como Unir de uno a muchos, puede haber más de una fila en la clase de entidad de salida para cada entidad de destino. Utilice el campo JOIN_FID para determinar qué entidad se une a qué entidad de destino (TARGET_FID). Un valor de -1 para el campo JOIN_FID significa que ninguna entidad cumple la relación espacial especificada con la entidad de destino.
Todas las entidades de destino de entrada se escribirán en la clase de entidad de salida si se aplican las dos condiciones siguientes:
- Operación de unión está establecida en Unir uno a uno.
- Mantener todas las entidades de destino está activada.
Para transferir campos de forma permanente a la clase de entidad de destino, use la herramienta Agregar unión espacial con su parámetro de Unir campos permanentemente activado.
Use el parámetro Mapa de campo para gestionar los campos y su contenido en el dataset de salida.
- Añada y elimine campos de la lista de campos, reordene la lista de campos y cambie el nombre de los campos.
- El tipo de datos predeterminado de un campo de salida coincide con el tipo de datos del primer campo de entrada (de ese nombre) que encuentre. Puede cambiar el tipo de datos a otro tipo de datos válido.
- Use una acción para determinar cómo los valores de uno o varios campos de entrada se mezclarán en un solo campo de salida. Las acciones disponibles son Primera, Última, Concatenación, Suma, Valor medio, Mediana, Modo, Mínimo, Máximo, Desviación estándar y Recuento.
- Al usar la acción Concatenar, pude especificar un delimitador tal como una coma u otro carácter. Haga clic en el inicio del cuadro de texto Delimitador para añadir los caracteres delimitadores.
- Desviación estándar no es una opción válida para los valores de entrada únicos.
- Use el botón Trocear texto en los campos de origen de texto para seleccionar qué caracteres de un valor de entrada se extraerán al campo de salida. Para acceder al botón Trocear texto, pase el cursor del ratón por encima de un campo de texto de la lista de campos de entrada; a continuación, especifique las posiciones de los caracteres de inicio y fin.
- Los campos también se pueden asignar mediante scripts de Python.
Las acciones especificadas en el parámetro Mapa de campo solo se aplican a los atributos de las entidades de unión y cuando se coteja más de una entidad con una entidad de destino (cuando Join_Count > 1). Por ejemplo, si tres entidades con valores de atributo DEPTH de 15,5, 2,5 y 3,3 se unen, y se aplica la acción Valor medio, el campo de salida tendrá un valor de 6,1. Los valores nulos en los campos de unión se ignoran para el cálculo de estadísticas. Por ejemplo, 15,5, un valor nulo, y 2,5 resultará en 9,0 para Valor medio y 2 para Recuento.
Cuando el parámetro Opción de coincidencia se configura en Más cercano o Geodésico más cercano, es posible que dos o más entidades de unión estén a la misma distancia de la entidad de destino. Cuando esto ocurre, una de las entidades de unión se seleccionará de forma aleatoria como la entidad coincidente (el Id. de objeto de la entidad de unión no afecta a esta selección aleatoria). Para encontrar la segunda, tercera o enésima entidad más cercana, utilice la herramienta Genera tabla de cercanía.
Si una entidad de unión tiene una relación espacial con varias entidades de destino, se contará tantas veces como coincidencias haya con la entidad de destino. Por ejemplo, si un punto está dentro de tres polígonos, el punto se contará tres veces, una vez por cada polígono.
El parámetro Atributos coincidentes filtra las entidades coincidentes en virtud de la relación espacial establecida por el parámetro Opción de correspondencia Especifique los campos de las entidades de unión y destino que deben tener atributos coincidentes además de su relación espacial.
Para obtener más información sobre el uso de las relaciones espaciales Intersecar 3D y Dentro de una distancia 3D, consulte Seleccionar por ubicación: relaciones 3D.
Parámetros
arcpy.analysis.SpatialJoin(target_features, join_features, out_feature_class, {join_operation}, {join_type}, {field_mapping}, {match_option}, {search_radius}, {distance_field_name}, {match_fields})
Nombre | Explicación | Tipo de datos |
target_features | Los atributos de las entidades de destino y los atributos de las entidades unidas se transferirán a la clase de entidad de salida. Sin embargo, se puede definir un subconjunto de atributos mediante el parámetro del mapa de campo. | Feature Layer |
join_features | Los atributos de las entidades de unión se unirán a los atributos de las entidades de destino. Consulte la explicación del parámetro join_operation para obtener detalles sobre cómo la agregación de atributos unidos se ve afectada por el tipo de operación de unión. | Feature Layer |
out_feature_class | Una nueva clase de entidad que contiene los atributos de las entidades de unión y de destino. De forma predeterminada, todos los atributos de las entidades de destino y los atributos de las entidades unidas se escribirán en la salida. Sin embargo, el conjunto de atributos que se transferirá se puede definir mediante el parámetro del mapa de campo. | Feature Class |
join_operation (Opcional) | La operación que unirá las entidades de destino y las entidades de unión de la clase de entidad de salida si se encuentra que varias entidades de unión tienen la misma relación espacial con una única entidad de destino.
| String |
join_type (Opcional) | Especifica si todas las entidades de destino se mantendrán en la clase de entidad de salida (unión externa) o solo aquellas que tienen la relación espacial especificada con las entidades de unión (unión interna).
| Boolean |
field_mapping (Opcional) | Loa campos que se incluirán en la clase de entidad de salida con sus respectivas propiedades y campos de origen. De manera predeterminada, la salida incluirá todos los campos de las entidades de unión y destino. Use el campo de mapa para añadir, borrar, cambiar el nombre y reordenar los campos, así como para cambiar otras propiedades de los campos. El mapa de campo puede usarse para combinar valores de dos o más campos de entrada en un solo campo de salida. En Python, utilice la clase de FieldMappings para definir este parámetro. | Field Mappings |
match_option (Opcional) | Especifica los criterios que se utilizarán para la correspondencia de filas.
| 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 solo es válido cuando se especifica la relación espacial (el parámetro match_option está establecido en INTERSECT, WITHIN_A_DISTANCE, WITHIN_A_DISTANCE_GEODESIC, HAVE_THEIR_CENTER_IN, CLOSEST o CLOSEST_GEODESIC). Por ejemplo, si se utiliza un radio de búsqueda de 100 metros con la relación espacial WITHIN_A_DISTANCE, se unirá la entidad que se encuentre dentro de un radio de 100 metros de una entidad de destino. En las tres relaciones Dentro de una distancia, si no se especifica ningún valor para search_radius, se utiliza una distancia de 0. | Linear Unit |
distance_field_name (Opcional) | El nombre del campo que contiene la distancia entre la entidad de destino y la entidad de unión más cercana. Este campo se agregará a la clase de entidad de salida. Este parámetro solo es válido cuando se especifica la relación espacial (match_option establecido como CLOSEST o CLOSEST_GEODESIC). El valor de este campo es -1 si no coincide ninguna entidad dentro de un radio de búsqueda. Si no se proporciona ningún nombre de campo, el campo no se agregará a la clase de entidad de salida. | String |
match_fields [[join_field, target_field],...] (Opcional) | Pares de campos de las entidades de unión y las entidades de destino que se van a usar para la coincidencia de atributos. Solo los registros de las entidades de unión que comparten valores de campos coincidentes con las entidades de destino participarán en la unión espacial. | Value Table |
Muestra de código
El siguiente script 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.analysis.SpatialJoin(target_features, join_features, out_feature_class)
El siguiente script 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.
# 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.analysis.SpatialJoin(targetFeatures, joinFeatures, outfc, "#", "#", fieldmappings)