Étiquette | Explication | Type de données |
Entités cible | Les attributs des entités cible et les attributs des entités jointes sont transférés vers la classe d’entités en sortie. Toutefois, un sous-ensemble d’attributs peut être défini par le paramètre d’appariement des champs. | Feature Layer |
Joindre les entités | Les attributs des entités jointes sont joints aux attributs des entités cible. Reportez-vous à l'explication du paramètre Opération de jointure pour en savoir plus sur les répercussions du type d'opération de jointure sur l'agrégation des attributs joints. | Feature Layer |
Classe d’entités en sortie | Nouvelle classe d'entités contenant les attributs des entités jointes et cible. Par défaut, tous les attributs des entités cible et des entités jointes sont écrits dans la sortie. Toutefois, l’ensemble d’attributs à transférer peut être défini par le paramètre d’appariement des champs. | Feature Class |
Opération de jointure (Facultatif) | Opération qui joint les entités cible et les entités jointes dans la classe d’entités en sortie, si plusieurs entités jointes présentent la même relation spatiale avec une entité cible unique.
| String |
Conserver toutes les entités cible (Facultatif) | Indique si toutes les entités cibles sont conservées dans la classe d’entités en sortie (jointure externe), ou uniquement celles qui présentent la relation spatiale avec les entités jointes (jointure interne) spécifiée.
| Boolean |
Appariement des champs (Facultatif) | Les champs sont inclus dans la classe d’entités en sortie avec leurs propriétés et champs sources respectifs. La sortie inclut par défaut tous les champs des entités de jointure et cible. Utilisez l’appariement des champs pour ajouter, supprimer, renommer et réorganiser les champs, ainsi que pour modifier d’autres propriétés des champs. L’appariement des champs peut servir à combiner les valeurs de deux champs en entrée ou plus en un seul champ en sortie. | Field Mappings |
Option de correspondance (Facultatif) | Spécifie les critères qui seront appliqués pour apparier les lignes.
| String |
Rayon de recherche (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. Le rayon de recherche est valide uniquement lorsque la relation spatiale est spécifiée (le paramètre Match Option (Option de correspondance) a pour valeur Intersect (Intersection), Within a distance (Dans une distance), Within a distance geodesic (Dans une distance géodésique), Have their center in (Ont leur centre dans), Closest (Plus proche) ou Closest geodesic (Géodésique le plus proche)). Par exemple, l’utilisation d’un rayon de recherche de 100 mètres avec la relation spatiale Within a distance (Dans une distance) permet de joindre une entité qui se trouve à moins de 100 mètres d’une entité cible. Pour les trois relations Within a distance (Dans une distance), si aucune valeur n’est spécifiée pour Search Radius (Rayon de recherche), une distance de 0 est utilisée. | Linear Unit |
Nom du champ de distance (Facultatif) | Nom du champ contenant la distance entre l’entité cible et l’entité jointe la plus proche. Ce champ est ajouté à la classe d’entités en sortie. Ce paramètre est valide uniquement lorsque la relation spatiale est spécifiée (Match Option (Option de correspondance) a pour valeur Closest (Plus proche) ou Closest geodesic (Géodésique le plus proche)). La valeur de ce champ est -1 si aucune entité ne fait l'objet d'une correspondance dans un rayon de recherche. Si aucun nom de champ n’est fourni, le champ n’est pas ajouté à la classe d’entités en sortie. | String |
Champs d'appariement (Facultatif) | Paires de champs des entités de jointure et des entités cible qui sont utilisées pour l’appariement des attributs. Seuls les enregistrements des entités de jointure qui partagent les valeurs des champs d’appariement avec les entités cibles participent à la jointure spatiale. | Value Table |
Synthèse
Joint des attributs d’une entité vers une autre en fonction des relations spatiales. Les entités cible et les attributs joints des entités jointes sont écrits dans la classe d’entités en sortie.
En savoir plus sur les relations de jointure spatiale par type d’entité
Utilisation
Une jointure spatiale apparie des lignes de valeurs Entités jointes aux valeurs Entités cible en fonction de leurs emplacements spatiaux relatifs.
Par défaut, tous les attributs des entités jointes sont ajoutés aux attributs des entités cible et copiés dans la classe d’entités en sortie. Vous pouvez définir les attributs qui doivent être inscrits dans la sortie à l’aide du paramètre Field Map (Appariement des champs).
Deux nouveaux champs, Join_Count et TARGET_FID, sont ajoutés à la classe d’entités en sortie. Le champ Join_Count indique le nombre d’entités jointes correspondant à chaque entité cible (TARGET_FID).
Un autre nouveau champ, JOIN_FID, est ajouté à la sortie lorsque la valeur Join one to many (Joindre un vers plusieurs) est spécifiée pour le paramètre Join Operation (Opération de jointure).
Lorsque le paramètre Join Operation (Opération de jointure) est défini sur Join one to many (Joindre un vers plusieurs), il peut exister plusieurs lignes dans la classe d’entités en sortie pour chaque entité cible. Servez-vous du champ JOIN_FID pour déterminer quelle entité est jointe à quelle entité cible (TARGET_FID). La valeur -1 dans le champ JOIN_FID signifie qu’aucune entité ne présente la relation spatiale spécifiée avec l’entité cible.
Toutes les entités cible en entrée sont écrites dans la classe d’entités en sortie, si les deux conditions suivantes sont remplies :
- Le paramètre Join Operation (Opération de jointure) est défini sur Join one to one (Joindre un vers un).
- L’option Keep All Target Features (Conserver toutes les entités cible) est activée.
Pour transférer des champs de façon définitive vers la classe d’entités en entrée, utilisez l’outil Ajouter une jointure spatiale en activant le paramètre Permanently Join Fields (Joindre définitivement les champs).
Utilisez le paramètre Field Map (Appariement des champs) pour gérer les champs et leur contenu dans le jeu de données en sortie.
- Ajoutez et supprimez des champs de la liste des champs, réorganisez la liste des champs et renommez des champs.
- Le type de données par défaut d’un champ en sortie est le même que le type de données du premier champ en entrée (du même nom) qu’il rencontre. Vous pouvez modifier le type de données en un autre type de données valide.
- Utilisez une action pour identifier la manière dont les valeurs d’un ou de plusieurs champs en entrée sont fusionnés en un seul champ en sortie. Les actions disponibles sont First (Premier), Last (Dernier), Concatenate (Concaténer), Sum (Somme), Mean (Moyenne), Median (Médiane), Mode, Minimum, Maximum, Standard Deviation (Écart type) et Count (Total).
- Lorsque vous utilisez l’action Concatenate (Concaténer), vous pouvez spécifier un délimiteur, comme une virgule ou d’autres caractères. Cliquez au début de la zone de texte Delimiter (Délimiteur) pour ajouter les caractères de délimitation.
- L’option Standard Deviation (Écart type) n’est pas valide pour une seule valeur en entrée.
- Utilisez le bouton Slice Text (Texte de tranche) sur les champs de la source du texte pour préciser les caractères d’une valeur en entrée à extraire vers le champ en sortie. Pour accéder au bouton Slice Text (Texte de tranche), survolez un champ de texte dans la liste des champs en entrée, puis spécifiez les positions des caractères de début et de fin.
- Il est également possible d’apparier des champs à l’aide de scripts Python.
Les règles de combinaison spécifiées dans le paramètre Appariement des champs des entités jointes s'appliquent uniquement aux attributs des entités jointes, lorsque plusieurs entités sont appariées à une entité cible (lorsque Join_Count > 1). Par exemple, si trois entités dont les valeurs attributaires DEPTH sont égales à 15,5, 2,5 et 3,3 sont jointes, et si une règle de combinaison de moyenne est appliquée, le champ en sortie comportera la valeur 6,1. Les valeurs Null des champs de jointure sont ignorées dans le calcul de statistiques. Par exemple, 15,5, <null> et 2,5 produisent 9,0 pour Moyenne et 2 pour Total.
Lorsque le paramètre Match Option (Option de correspondance) a pour valeur Closest (Plus proche) ou Closest geodesic (Géodésique le plus proche), il est possible qu’au moins deux entités jointes se trouvent à la même distance de l’entité cible. Dans ce cas, l’une des entités jointes est sélectionnée de manière aléatoire en tant qu’entité appariée (l’ID d’objet de l’entité jointe n’a pas d’impact sur cette sélection aléatoire). Pour trouver la deuxième, la troisième ou la nième entité la plus proche, utilisez l’outil Générer la table de proximité.
Si une entité jointe présente une relation spatiale avec plusieurs entités cible, elle est comptabilisée autant de fois qu’elle est appariée à l’entité cible. Par exemple, si un point se trouve dans trois polygones, il est comptabilisé trois fois, une fois pour chaque polygone.
Le paramètre Matching Attributes (Attributs d’appariement) filtre les entités qui sont appariées par la relation spatiale spécifiée dans le paramètre Match Option (Option de correspondance). Spécifiez les champs des entités de jointure et cibles qui doivent comporter des attributs d’appariement en plus de leur relation spatiale.
Pour plus d’informations sur l’utilisation des relations spatiales Intersect 3D (Intersection 3D) et Within a distance 3D (Dans une distance 3D), reportez-vous à la rubrique Sélectionner selon l’emplacement : relations 3D.
Paramètres
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})
Nom | Explication | Type de données |
target_features | Les attributs des entités cible et les attributs des entités jointes sont transférés vers la classe d’entités en sortie. Toutefois, un sous-ensemble d’attributs peut être défini par le paramètre d’appariement des champs. | Feature Layer |
join_features | Les attributs des entités jointes sont joints aux attributs des entités cible. Reportez-vous à l’explication du paramètre join_operation pour en savoir plus sur les répercussions du type d’opération de jointure sur l’agrégation des attributs joints. | Feature Layer |
out_feature_class | Nouvelle classe d'entités contenant les attributs des entités jointes et cible. Par défaut, tous les attributs des entités cible et des entités jointes sont écrits dans la sortie. Toutefois, l’ensemble d’attributs à transférer peut être défini par le paramètre d’appariement des champs. | Feature Class |
join_operation (Facultatif) | Opération qui joint les entités cible et les entités jointes dans la classe d’entités en sortie, si plusieurs entités jointes présentent la même relation spatiale avec une entité cible unique.
| String |
join_type (Facultatif) | Indique si toutes les entités cibles sont conservées dans la classe d’entités en sortie (jointure externe), ou uniquement celles qui présentent la relation spatiale avec les entités jointes (jointure interne) spécifiée.
| Boolean |
field_mapping (Facultatif) | Les champs sont inclus dans la classe d’entités en sortie avec leurs propriétés et champs sources respectifs. La sortie inclut par défaut tous les champs des entités de jointure et cible. Utilisez l’appariement des champs pour ajouter, supprimer, renommer et réorganiser les champs, ainsi que pour modifier d’autres propriétés des champs. L’appariement des champs peut servir à combiner les valeurs de deux champs en entrée ou plus en un seul champ en sortie. Dans Python, utilisez la classe FieldMappings pour définir ce paramètre. | Field Mappings |
match_option (Facultatif) | Spécifie les critères qui seront appliqués pour apparier les lignes.
| 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. Le rayon de recherche est valide uniquement si la relation spatiale est spécifiée (le paramètre match_option a pour valeur INTERSECT, WITHIN_A_DISTANCE, WITHIN_A_DISTANCE_GEODESIC, HAVE_THEIR_CENTER_IN, CLOSEST ou CLOSEST_GEODESIC). Par exemple, l’utilisation d’un rayon de recherche de 100 mètres avec la relation spatiale WITHIN_A_DISTANCE permet de joindre une entité qui se trouve à moins de 100 mètres d’une entité cible. Pour les trois relations WITHIN_A_DISTANCE, si aucune valeur n’est spécifiée pour search_radius, une distance de 0 est utilisée. | Linear Unit |
distance_field_name (Facultatif) | Nom du champ contenant la distance entre l’entité cible et l’entité jointe la plus proche. Ce champ est ajouté à la classe d’entités en sortie. Ce paramètre est valide uniquement lorsque la relation spatiale est spécifiée (match_option a pour valeur CLOSEST ou CLOSEST_GEODESIC). La valeur de ce champ est -1 si aucune entité ne fait l'objet d'une correspondance dans un rayon de recherche. Si aucun nom de champ n’est fourni, le champ n’est pas ajouté à la classe d’entités en sortie. | String |
match_fields [[join_field, target_field],...] (Facultatif) | Paires de champs des entités de jointure et des entités cible qui sont utilisées pour l’appariement des attributs. Seuls les enregistrements des entités de jointure qui partagent les valeurs des champs d’appariement avec les entités cibles participent à la jointure spatiale. | Value Table |
Exemple de code
Le script suivant 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.analysis.SpatialJoin(target_features, join_features, out_feature_class)
Le script autonome ci-dessous illustre l’utilisation de la fonction SpatialJoin pour joindre des attributs de villes à des états.
# 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)
Environnements
Informations de licence
- Basic: Oui
- Standard: Oui
- Advanced: Oui
Rubriques connexes
Vous avez un commentaire à formuler concernant cette rubrique ?