Transférer des attributs (Mise à jour)

Synthèse

Détecte l'endroit où les entités linéaires source correspondent spatialement aux entités linéaires cible et transfère les attributs spécifiés des entités source vers les entités cible appariées.

Le transfert d'attributs est généralement utilisé pour copier des attributs à partir d'entités contenues dans un jeu de données vers des entités correspondantes dans un autre jeu de données. Vous pouvez, par exemple, l’utiliser pour transférer les noms d’entités routes d’une carte numérisée et d’un jeu de données géré vers des entités au sein d’un nouveau jeu de données qui ont été collectées récemment et qui sont plus précises. Les deux jeux de données sont généralement appelés entités source et entités cible. Cet outil détecte les entités source et les entités linéaires cible correspondantes au sein de la distance de recherche spécifiée et transfère les attributs spécifiés des lignes source vers les lignes cible.

Illustration

Illustration de l’outil Transférer des attributs

Utilisation

    Attention :

    Cet outil modifie les données en entrée. Pour plus d’informations et connaître les stratégies permettant d’empêcher les modifications de données indésirables, reportez-vous à la rubrique Outils qui modifient ou mettent à jour les données en entrée.

    Remarque :

    Toutes les entrées doivent être exprimées dans le même système de coordonnées.

  • L’union des étendues en entrée est utilisée comme l’étendue de traitement. Le nombre d'entités source et cible participantes est indiqué dans les messages de traitement.

  • Vous devez spécifier un ou plusieurs champs dans le paramètre Transférer des champs. Si un champ de transfert a le même nom qu’un champ de la table des entités cible, le suffixe _1 (ou _2 ou _3, etc.) est ajouté au champ de transfert pour le rendre unique.

    Si plusieurs entités source correspondent à une ou plusieurs entités cible, les valeurs des champs d'une seule des entités source sont transférées vers les entités cible. Si une valeur de champ source est manquante, aucun transfert d'attributs n'est effectué.

  • Le paramètre Distance de recherche est utilisé dans la recherche de candidats d'appariement. Utilisez une distance suffisamment importante pour détecter la plupart des décalages entre entités correspondantes, mais pas trop importante, afin de ne pas entraîner un traitement superflu d'un trop grand nombre de candidats et de ne pas obtenir des correspondance erronées.

  • Le paramètre Table d’appariement en sortie est facultatif. Cette table d’appariement fournit des informations d’appariement d’entités complètes, notamment les FID source et cible, les groupes d’appariement, les relations d’appariement et le niveau de confiance de l’appariement dérivé des conditions d’appariement spatiales et d’attributs. Ces informations peuvent vous aider à comprendre les situations d’appariement et faciliter l’inspection a posteriori, la post-édition et l’analyse supplémentaire. Pour plus d'informations, reportez-vous à la rubrique À propos de l'appariement d'entités et de la table d'appariement.

  • Utilisez le paramètre Champ(s) de transfert de règles pour définir les règles de contrôle du transfert des attributs pour les correspondances m:n où plusieurs entités sources correspondent à une ou plusieurs entités cibles. Si aucune règle n'est définie, les attributs sont transférés à partir de l'entité source correspondante la plus longue. Cependant, pour mieux guider le transfert, des règles basées sur des attributs peuvent être utilisées, chacune étant définie par un nom de champ et une valeur.

    Les types de champs et valeurs de règles suivants sont pris en charge :

    Type de champValeurs de règles

    Texte

    Valeur de chaîne pouvant exister dans les entités sources.

    Entier

    Valeur d’entier pouvant exister dans les entités sources, ou MAX ou MIN pour la valeur maximale ou minimale.

    Date

    MAX ou MIN pour la date la plus récente ou la plus ancienne.

    Vous pouvez spécifier autant de paires de champs/valeurs de règles que nécessaire. Les règles s'appliquent dans l'ordre dans lequel elles sont répertoriées.

    Lorsqu'une correspondance m:n est trouvée, l'outil vérifie les champs et valeurs de règles spécifiés, puis détermine à partir desquels transférer des attributs des façons suivantes :

    • Si une seule des entités source m possède la valeur de règle dans le premier champ de la liste de règles, cette entité source est utilisée pour le transfert.
    • Si plusieurs entités source m, ou aucune, possèdent la valeur de règle, il s'agit d'un rattachement. Si plus aucune règle n'est spécifiée, la plus longue d'entre elles est utilisée pour le transfert. Autrement, la règle suivante de la liste est vérifiée pour rompre le rattachement.
    • Le processus se poursuit jusqu'à ce que toutes les règles aient été évaluées. Si aucune entité source ne peut être déterminée pour le transfert, l'entité source la plus longue est utilisée.

    L'exemple suivant explique le fonctionnement de ce processus. Le champ ROAD_NAME doit être transféré de la source vers la cible pour un appariement 3:1. Par défaut, l’entité source 3, la plus longue des trois entités sources, est utilisée pour le transfert, et l’entité cible reçoit la valeur ROAD_NAME West Ave comme indiqué dans le tableau (a) ci-dessous.

    Supposons maintenant que les règles suivantes soient définies : le champ TRAVEL_DIRECTION avec la règle One way et le champ SPEED_LIMIT avec la règle MAX. Pour déterminer l’entité source appropriée pour le transfert, l’outil commence par évaluer les valeurs de TRAVEL_DIRECTION pour les trois entités sources et détermine que deux d’entre elles ont une correspondance pour One way. L’outil vérifie ensuite les valeurs SPEED_LIMIT entre ces deux entités et utilise le champ OBJECTID 1, dont la valeur maximale est 40. Cela signifie que la valeur du champ ROAD_NAME East Ave est transférée à partir de cette entité vers l’entité cible comme indiqué dans le tableau (b) ci-dessous.

    Exemple de champs de transfert de règles

  • La précision de la correspondance des entités dépend de la qualité et de la complexité des données, ainsi que des similitudes entre les deux entrées.

    Réduisez les erreurs de données et sélectionner des entités pertinentes en entrée grâce à un pré-traitement. En général, il est utile lorsque les entités d’un jeu de données en entrée sont correctes sur le plan topologique, possèdent une géométrie valide et sont monoparties et non dupliquées ; dans le cas contraire, des résultats inattendus pourraient survenir.

Paramètres

ÉtiquetteExplicationType de données
Entités source

Entités linéaires à partir desquelles des attributs seront transférés.

Feature Layer
Entités cibles

Entités linéaires vers lesquelles des attributs seront transférés. Les champs de transfert sont ajoutés aux entités cible.

Feature Layer
Transférer des champs

Liste des champs sources qui seront transférés vers des entités cibles. Au moins un champ doit être fourni.

Field
Distance de recherche

Distance utilisée pour rechercher des candidats à l’appariement. La distance doit être indiquée et elle doit être supérieure à zéro. Vous pouvez choisir une unité préférée. Par défaut, il s’agit de l’unité de l’entité.

Linear Unit
Champs d'appariement
(Facultatif)

Liste des champs des entités source et cible. Si cette option est renseignée, des candidats à l’appariement sont recherchés dans chaque paire de champs afin de déterminer la correspondance adéquate.

Value Table
Table d'appariement en sortie
(Facultatif)

Table en sortie contenant des informations d'appariement d'entités complètes.

Table
Champ(s) de transfert de règles
(Facultatif)

Règles qui contrôlent l’entité source à partir de laquelle transférer des attributs lorsque plusieurs entités sources correspondent aux entités cibles. L’entité source qui sera utilisée pour le transfert est déterminée par les champs et les valeurs de règles spécifiques, classés de la priorité la plus élevée à la plus faible telles qu’elles apparaissent dans la liste spécifiée. Si aucune règle n'est définie, la plus longue des entités source correspondantes est utilisée pour le transfert.

Les types de règles disponibles sont les suivants :

  • MIN : valeur minimale d’un champ d’entier ou de date. Pour un champ de date, utilisez la date la plus récente.
  • MAX : valeur maximale d’un champ d’entier ou de date. Pour un champ de date, utilisez la date la plus ancienne.
  • Valeur de texte ou d’entier pouvant exister dans les entités sources.
Value Table

Sortie obtenue

ÉtiquetteExplicationType de données
Entités cible mises à jour

Entités cible mises à jour.

Feature Class

arcpy.management.TransferAttributes(source_features, target_features, transfer_fields, search_distance, {match_fields}, {out_match_table}, {transfer_rule_fields})
NomExplicationType de données
source_features

Entités linéaires à partir desquelles des attributs seront transférés.

Feature Layer
target_features

Entités linéaires vers lesquelles des attributs seront transférés. Les champs de transfert sont ajoutés aux entités cible.

Feature Layer
transfer_fields
[field,...]

Liste des champs sources qui seront transférés vers des entités cibles. Au moins un champ doit être fourni.

Field
search_distance

Distance utilisée pour rechercher des candidats à l’appariement. La distance doit être indiquée et elle doit être supérieure à zéro. Vous pouvez choisir une unité préférée. Par défaut, il s’agit de l’unité de l’entité.

Linear Unit
match_fields
[[source_field, target_field],...]
(Facultatif)

Liste des champs des entités source et cible. Si cette option est renseignée, des candidats à l’appariement sont recherchés dans chaque paire de champs afin de déterminer la correspondance adéquate.

Value Table
out_match_table
(Facultatif)

Table en sortie contenant des informations d'appariement d'entités complètes.

Table
transfer_rule_fields
[[field, rule],...]
(Facultatif)

Règles qui contrôlent l’entité source à partir de laquelle transférer des attributs lorsque plusieurs entités sources correspondent aux entités cibles. L’entité source qui sera utilisée pour le transfert est déterminée par les champs et les valeurs de règles spécifiques, classés de la priorité la plus élevée à la plus faible telles qu’elles apparaissent dans la liste spécifiée. Si aucune règle n'est définie, la plus longue des entités source correspondantes est utilisée pour le transfert.

Les types de règles disponibles sont les suivants :

  • MIN : valeur minimale d’un champ d’entier ou de date. Pour un champ de date, utilisez la date la plus récente.
  • MAX : valeur maximale d’un champ d’entier ou de date. Pour un champ de date, utilisez la date la plus ancienne.
  • Valeur de texte ou d’entier pouvant exister dans les entités sources.
Value Table

Sortie obtenue

NomExplicationType de données
out_feature_class

Entités cible mises à jour.

Feature Class

Exemple de code

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

Le script ci-dessous pour la fenêtre Python illustre l’utilisation de la fonction TransferAttributes en mode immédiat.

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.edit.TransferAttributes("source_Roads.shp", "target_Roads.shp", 
                              [["RoadName", "PaveType"]], "25 Feet")
Exemple 2 d'utilisation de la fonction TransferAtrributes (script autonome)

Le script autonome suivant est un exemple d’application de la fonction TransferAttributes dans un environnement de scripts.

"""
Name:        TransferAttributes_example_script2.py
Description: Perform attribute transfer from newly updated roads (source) to existing
             base roads (target). When the source and target features are matched in
             many-to-one or many-to-many (m:n) relationships, attributes are transferred 
             from only one of the m source features to the n target features. This script
             includes a postprocess that flags resulting target features with the m:n
             match relationship. You can inspect the flagged features and retrieve the
             attributes from the desired source features if necessary.
"""

# Import system modules
import arcpy

# Set environment settings
arcpy.env.overwriteOutput = True
arcpy.env.workspace = r"D:\conflationTools\ScriptExamples\data.gdb"

# Set local variables
sourceFeatures = "updateRoads"
targetFeatures = "baseRoads"
transfer_fields = [["RD_NAME", RD_ID"]]

search_distance = "300 Feet"
match_fields = [["RD_NAME", "FULLNAME"]]

outMatchTable = "ta_mtbl"

# Make a copy of the targetFeatures for attribute transfer
targetCopy = targetFeatures + "_Copy"
arcpy.management.CopyFeatures(targetFeatures, targetCopy)

# Performs attribute transfer
arcpy.edit.TransferAttributes(sourceFeatures, targetCopy, transfer_fields, search_distance, match_fields, outMatchTable)

"""
Note 1:  The result of TransferAttributes may contain errors; see the tool reference.
         Additional analysis steps may be necessary to check the results. These steps
         are not included in this script.

         The following process identifies m:n matches between source and target features 
         and flags features in targetCopy for inspection.
"""

# Add a field srcM_inMN to the match table to store the m count of source features in m:n relationship
field_srcM_inMN = "srcM_inMN"
arcpy.management.AddField(outMatchTable, field_srcM_inMN)

codeblock = """
def getM(fld):
    x = fld.split(\":\")[0]
    if x.isnumeric():
        if int(x) > 0:
            return int(x)
    return -1
"""

# Calculate values for srcM_inMN
arcpy.management.CalculateField(outMatchTable, field_srcM_inMN, "getM(!FM_MN!)", "PYTHON_9.3", codeblock)

# Make a table view of the match table, selecting srcM_inMN values greater than 1 
# (excluding 1:n relationships which don't need to be inspected)
arcpy.management.MakeTableView(outMatchTable, "mtable_view", field_srcM_inMN + "> 1")

# For the selected records, transfer srcM_inMN and SRC_FID fields and values to the targetCopy
arcpy.management.JoinField(targetCopy, "OBJECTID", "mtable_view", "TGT_FID", [["field_srcM_inMN", "SRC_FID"]])

"""
Note 2:  Now the fields srcM_inMN and SRC_FID are in the copy of the target features.
         The srcM_inMN values are the counts of matched source features. The SRC_FID
         values indicate the source feature IDs from which the transferred attributes
         originated.

         You can interactively review the transferred attributes for the
         flagged features. To replace any of them with those from a different
         source feature, make the edits as needed.
"""
Exemple 3 d'utilisation de la fonction TransferAtrributes (script autonome)

Le script autonome suivant est un exemple d’application de la fonction TransferAttributes à l’aide de règles de transfert dans un environnement de scripts.

"""
Name:        TransferAttributes_example_script3.py
Description: Perform attribute transfer from newly updated roads (source) to
             existing base roads (target). When the source and target
             features are matched in many-to-one or many-to-many (m:n)
             relationships, attributes can be transferred based on transfer
             rules. This script shows how transfer rules are set.
"""

# Import system modules
import arcpy

# Set environment settings
arcpy.env.overwriteOutput = True
arcpy.env.workspace = r"D:\conflationTools\ScriptExamples\data.gdb"

# Set local variables
sourceFeatures = "updateRoads"
targetFeatures = "baseRoads"
transfer_fields = "RD_NAME"

search_distance = "300 Feet"
match_fields = ""
outMatchTable = ""
transfer_rules = [["TRAVEL_DIRECTION", "One-Way"], ["SPEED_LIMIT", "MAX"]]

# Make a copy of the targetFeatures for attribute transfer
targetCopy = targetFeatures + "_Copy"
arcpy.management.CopyFeatures(targetFeatures, targetCopy)

# Perform attribute transfer
arcpy.edit.TransferAttributes(sourceFeatures, targetCopy, transfer_fields,
                              search_distance, match_fields, outMatchTable,
                              transfer_rules)