Jointure spatiale (Analyse)

Récapitulatif

Joint les attributs d'une classe d'entités avec une autre en fonction d'une relation spatiale. Les entités cible et les attributs joints à partir des entités faisant l'objet d'une jointure sont écrits dans la classe d'entités en sortie.

Utilisation

Syntaxe

SpatialJoin_analysis (target_features, join_features, out_feature_class, {join_operation}, {join_type}, {field_mapping}, {match_option}, {search_radius}, {distance_field_name})
ParamètreExplicationType de données
target_features

Les attributs des entités cible et les attributs provenant des entités jointes sont transférés vers la classe d'entités en sortie. Cependant, un sous-ensemble d'attributs peut être défini dans le paramètre d'appariement de champs. Les entités cible peuvent correspondre à toute source de données spatiales prise en charge par ArcGIS.

Feature Layer
join_features

Les attributs provenant des entités jointes sont joints aux attributs des entités cible. Reportez-vous à la présentation du paramètre Opération de jointure pour plus d'informations sur la façon dont l'agrégation d'attributs joints est affectée par le type d'opération de jointure. Les entités jointes peuvent correspondre à toute source de données spatiales prise en charge par ArcGIS.

Feature Layer
out_feature_class

Nouvelle classe d'entités contenant les attributs des entités cible et jointes. Tous les attributs des entités cible et des entités jointes sont écrits par défaut dans la sortie. Cependant, l'ensemble d'attributs à transférer peut être contrôlé dans le paramètre d'appariement de champs.

Feature Class
join_operation
(Facultatif)

Détermine le mode de traitement des jointures entre les entités cible et les entités jointes dans la classe d'entités en sortie, si plusieurs entités jointes présentent une relation spatiale identique avec une même entité cible.

  • JOIN_ONE_TO_ONESi plusieurs entités jointes présentent une relation spatiale identique avec une même entité cible, les attributs des entités jointes multiples sont regroupés à l'aide d'une règle de combinaison d'appariement des champs. Par exemple, si une entité cible ponctuelle figure dans deux entités jointes surfaciques distinctes, les attributs des deux polygones sont agrégés avant leur transfert à la classe d'entités ponctuelle en sortie. Si les polygones ont respectivement les valeurs attributaires 3 et 7 et qu'une règle de combinaison de somme est spécifiée, la valeur regroupée dans la classe d'entités en sortie est de 10. L'option JOIN_ONE_TO_ONE est la valeur par défaut.
  • JOIN_ONE_TO_MANYSi plusieurs entités jointes présentent une relation spatiale identique avec une même entité cible, la classe d'entités en sortie contient plusieurs copies (enregistrements) de l'entité cible. Par exemple, si une même entité cible ponctuelle figure dans deux entités jointes surfaciques distinctes, la classe d'entités en sortie contient deux copies de l'entité cible : un enregistrement avec les attributs d'un polygone, et un autre enregistrement avec les attributs de l'autre polygone.
String
join_type
(Facultatif)

Détermine si toutes les entités cible sont conservées dans la classe d'entités en sortie (appelée "jointure externe"), ou uniquement celles ayant la relation spatiale spécifiée avec les entités jointes ("jointure interne").

  • KEEP_ALLToutes les entités cible sont conservées dans la sortie (jointure externe). Il s'agit de l'option par défaut.
  • KEEP_COMMON Uniquement les entités cible ayant la relation spatiale spécifiée avec les entités jointes sont conservées dans la classe d'entités en sortie (jointure interne). Par exemple, si une classe d'entités ponctuelles est spécifiée pour les entités cible et une classe d'entités surfaciques pour les entités jointes avec l'option de correspondance WITHIN, la classe d'entités en sortie contient uniquement les entités cible contenues dans une entité jointe surfacique ; toutes les entités cible non contenues dans une entité jointe sont exclues de la sortie.
Boolean
field_mapping
(Facultatif)

Détermine les champs attributaires figurant dans la classe d'entités en sortie. La liste initiale contient tous les champs provenant à la fois des entités cible et des entités jointes. Vous pouvez ajouter, supprimer ou renommer les champs, ou modifier leurs propriétés. Les champs sélectionnés dans les entités cible sont transférés tels quels, mais ceux sélectionnés dans les entités jointes peuvent être agrégés par une règle de combinaison valide. Pour plus d'informations sur l'appariement de champs, reportez-vous aux rubriques d'aide Utilisation du contrôle d'appariement de champs et Appariement de champs en entrée aux champs en sortie.

Field Mappings
match_option
(Facultatif)

Définit les critères utilisés pour l'appariement des enregistrements. Les options de correspondance sont les suivantes :

  • INTERSECT : Les entités des entités jointes sont appariées si elles intersectent une entité cible. Il s'agit de l'option par défaut.
  • CONTAINS : Les entités des entités jointes sont appariées si elles sont contenues dans une entité cible. Pour cette option, les entités cible ne peuvent pas être ponctuelles et les entités jointes ne peuvent être surfaciques que lorsque les entités cible le sont également.
  • WITHIN : Les entités des entités jointes sont appariées si elles contiennent une entité cible. Pour cette option, les entités jointes ne peuvent pas être ponctuelles et les entités cible ne peuvent être surfaciques que lorsque les entités jointes le sont également.
  • CLOSEST : L'entité dans les entités jointes la plus proche d'une entité cible est appariée. Il est possible que deux ou plus entités jointes se trouvent à la même distance de l'entité cible. Si tel est le cas, l'une des entités jointes est sélectionnée de manière aléatoire comme entité correspondante.
String
search_radius
(Facultatif)

Les entités jointes sont prises en compte pour la jointure spatiale si elles se trouvent à une distance égale ou inférieure à cette valeur d'une entité cible. L'option de rayon de recherche est valide uniquement lorsque l'Option de correspondance spécifiée est INTERSECT ou CLOSEST. L'utilisation d'un rayon de recherche de 100 mètres avec l'Option de correspondance INTERSECT revient à dire : si une entité jointe est à moins de 100 mètres d'une entité cible, transférer les attributs de l'entité jointe à l'entité cible. L'utilisation d'un rayon de recherche de 100 mètres avec l'Option de correspondance CLOSEST revient à dire : si une entité jointe est à moins de 100 mètres d'une entité cible et qu'elle est l'entité jointe la plus proche de cette entité cible, transférer les attributs de l'entité jointe à l'entité cible.

Linear unit
distance_field_name
(Facultatif)

Nom d'un champ à ajouter à la classe d'entités en sortie contenant la distance entre l'entité cible et l'entité jointe la plus proche. Cette option est valide uniquement lorsque l'option de correspondance spécifiée est CLOSEST. Vous pouvez laisser ce paramètre vide si vous ne voulez pas de champ en sortie.

String

Exemple de code

Exemple d'utilisation de la fonction SpatialJoin 1 (fenêtre Python)

Le script ci-dessous illustre l'utilisation de la fonction SpatialJoin dans une fenêtre 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)

Exemple d'utilisation de la fonction SpatialJoin 2 (script autonome)

Le script autonome ci-dessous illustre l'utilisation de la fonction SpatialJoin pour la jointure des attributs de villes aux états.

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

Environnements

Rubriques connexes

Informations de licence

ArcView : Oui
ArcEditor : Oui
ArcInfo : Oui

7/10/2012