Détecter les modifications apportées aux entités (Gestion des données)

Synthèse

Identifie où les entités linéaires de remplacement correspondent spatialement aux entités linéaires de base et détecte les modifications spatiales, les modifications d’attributs, ou les deux, ainsi que l’absence de modification. L’outil crée ensuite une classe d’entités en sortie contenant les entités de remplacement appariées ainsi que des informations sur les modifications apportées à celles-ci, les entités de remplacement sans correspondance et les entités de base sans correspondance.

En savoir plus sur le fonctionnement de l'appariement d'entités

Illustration

Exemple d’utilisation de l’outil Détecter les modifications apportées aux entités

Utilisation

    Remarque :

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

  • Cet outil sert généralement à mettre à jour un jeu d’entités linéaires, comme des routes, et à recevoir périodiquement des mises à jour envoyées par les partenaires sous forme de nouveau jeu d’entités routes. Vous voulez savoir quelles entités mises à jour sont des entités de base modifiées ou de nouvelles entités à ajouter, puis identifier les anciennes entités de base à supprimer. Cet outil recherche les correspondances d’entités entre les jeux de données linéaires de base et de remplacement, détecte les modifications spatiales et/ou attributaires, ainsi que l’absence de modification, puis crée une classe d’entités en sortie contenant les informations sur les modifications apportées aux entités.

  • La classe d'entités en sortie contient toutes les entités de remplacement participantes (appariées ou non) et les éventuelles entités de base non appariées. Les informations sur les modifications détectées sont stockées dans les champs suivants :

    • UPDATE_FID - ID de l’entité de remplacement. La valeur est -1 pour une entité de base non appariée.
    • BASE_FID - ID de l’entité de base. La valeur est -1 pour une entité de remplacement non appariée.
    • CHANGE_TYPE - type de modification détectée, à savoir :
      • S : une entité de remplacement appariée comportant une modification spatiale.
      • A : une entité de remplacement appariée comportant une modification attributaire.
      • SA : une entité de remplacement appariée comportant un changement spatial et attributaire.
      • S_LD : une modification spatiale, ainsi que des directions de lignes opposées.
      • SA_LD : des modifications spatiales et attributaires, ainsi que des directions de lignes opposées.
      • NC : une entité de remplacement appariée sans aucune modification.
      • N : une nouvelle entité de remplacement non appariée dans les données de base.
      • D : une entité de base non appariée qui devra éventuellement être supprimée des données de base.

  • Le processus d’appariement des entités se base tout d’abord sur la Distance de recherche et les valeurs des paramètres Champs d’appariement facultatifs. Une table d'appariement en sortie peut être générée pour stocker les informations d'appariement.

    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.

    Une fois les candidats d’appariement trouvés, une évaluation plus approfondie est effectuée à l’aide d’un ensemble de mesures géométriques pour déterminer si leurs similitudes sont suffisantes pour qu’ils soient considérés comme appariés spatialement.

    Si vous spécifiez une ou plusieurs paires de champs pour le paramètre Champs d’appariement, les candidats appariés spatialement sont comparés à ces valeurs de champs afin de déterminer la correspondance exacte. Par exemple, si les entités de base et de remplacement comportent toutes les deux un champ STREET_NAME contenant des noms de rues, et qu’une entité de remplacement correspond spatialement à deux entités de base mais qu’un seul de ces deux candidats de base possède la même valeur STREET_NAME que l’entité de remplacement, ce dernier constitue la meilleure correspondance. La comparaison de chaînes de texte ne respecte pas la casse, ce qui signifie que First St est égal à first st.

  • 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.

    Dans la table d’appariement en sortie, les valeurs des champs SRC_FID et TGT_FID représentent les ID des entités de remplacement et les ID des entités de base, respectivement.

  • L'identification des modifications a lieu après l'appariement des entités. Les conditions spatiales et attributaires, ainsi que les directions de lignes, de toutes les entités de remplacement appariées sont comparées aux entités de base correspondantes pour déterminer leurs valeurs CHANGE_TYPE.

    Une modification spatiale (modification de type S) est détectée dans un ou deux des cas suivants :

    • Les entités de remplacement appariées diffèrent de leurs entités de base correspondantes dans la topologie. Par exemple une entité de remplacement correspond à deux entités de base.
    • Dans chaque groupe de correspondance, des portions quelconques des entités de remplacement ou de base se trouvent en dehors de la valeur du paramètre Tolérance de modification.

      La valeur du paramètre Tolérance de modification représente la largeur d’une zone tampon autour des entités de remplacement ou de base. Pour chaque groupe d'appariement, une zone tampon de remplacement est créée autour de toutes les entités de remplacement et une zone tampon de base autour de toutes les entités de base. Toutes les entités de remplacement sont alors comparées à la zone tampon de base et toutes les entités de base à la zone tampon de remplacement. Si une portion des entités de remplacement se trouve en dehors de la zone tampon de base ou qu'une portion des entités de base se trouve en dehors de la zone tampon de remplacement, ou si les deux situations se produisent, on constate alors une modification spatiale. Lorsqu’une valeur supérieure à la tolérance XY des données en entrée est spécifiée, la sortie inclut les nouveaux champs suivants :

      • LEN_PCT — ce champ stocke des valeurs de pourcentage de longueur qui dépendent de groupes d’appariement.
      • LEN_ABS— ce champ stocke des valeurs de longueur absolue dans des unités d’entités qui dépendent de groupes d’appariement.

      Les valeurs de ces champs sont déterminées en fonction du groupe d'appariement auquel l'entité en sortie appartient, selon les conditions suivantes :

      • Si seules des entités de remplacement se trouvent en dehors de la zone tampon de base :
        • Lu = longueur totale des portions extérieures des entités de remplacement.
        • Pu (pourcentage de longueur) = Lu / longueur totale de toutes les entités de remplacement * 100.
        • LEN_PCT = Pu
        • LEN_ABS = Lu
      • Si seules les entités de base se trouvent en dehors de la zone tampon de remplacement :
        • Lb = longueur totale des portions extérieures des entités de base.
        • Pb (pourcentage de longueur) = Lb / longueur totale de toutes les entités de base * 100.
        • LEN_PCT = Pb
        • LEN_ABS = Lb
      • Si les deux conditions précédentes sont vérifiées :
        • La valeur de Lu et Lb la plus importante et sa valeur de pourcentage associée sont consignées. Si Lb est consigné, un signe négatif est ajouté pour la raison susmentionnée.

      La valeur de pourcentage est comprise entre 0 et 100, où 0 indique que les entités de remplacement et de base d’un groupe d’appariement se trouvent entièrement dans les zones de tolérance de modification, et 100 signifie que toutes les entités de remplacement ou de base se trouvent en dehors des zones de tolérance de modification.

      Les valeurs LEN_PCT et LEN_ABS permettent de déterminer l’importance d’une modification. Plus les valeurs sont élevées, plus la modification est importante. Ces valeurs sont uniquement attribuées aux entités présentant des modifications spatiales ; les autres ont la valeur -1.

    Une modification attributaire (modification de type A) est détectée en fonction de la valeur du paramètre Champs de comparaison. Si vous spécifiez une ou plusieurs paires de champs pour le paramètre Champs de comparaison, les entités appariées sont comparées à ces champs pour déterminer si elles présentent une modification attributaire. La comparaison de chaînes de texte ne respecte pas la casse, ce qui signifie que First St est égal à first st. Si des modifications spatiales et attributaires sont détectées pour une entité de remplacement appariée, le type de modification SA lui est attribué. Si aucune modification spatiale ou attributaire n’est détectée pour une entité de remplacement appariée, le type de modification NC (aucune modification) lui est attribué.

    La modification de la direction des lignes (types de modification S_LD ou SA_LD) est considérée comme une modification spatiale et peut être détectée comme une option.

    • Le type de modification S_LD est attribué aux entités de remplacement appariées si la direction d’une de leurs lignes est opposée à une ou plusieurs entités de base appariées, avec ou sans les modifications spatiales décrites ci-dessus. Autrement dit, il s’agit des types Sou NCsi les directions de lignes ne sont pas comparées.
    • Le type de modification SA_LD est attribué aux entités de remplacement appariées si la direction de l’une de leurs lignes est opposée à une ou plusieurs entités de base appariées, en plus de la modification attributaire ou des modifications attributaires et spatiales décrites ci-dessus. Autrement dit, il s’agit des types Aou SAsi les directions de lignes ne sont pas comparé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.

  • 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.

  • Vous pouvez analyser les modifications détectées dans la classe d’entités en sortie. Si les différences spatiales entre les deux sources de données sont importantes, vous pouvez modifier l'une d'elles pour obtenir une meilleure correspondance entre les deux. Vous pouvez également transférer des attributs entre les entités de remplacement et les entités de base. Vous pouvez utiliser les outils d’étirement caoutchouté et de transfert d’attributs du jeu d’outils Fusion multisource pour effectuer ces modifications.

Paramètres

ÉtiquetteExplicationType de données
Mettre à jour les entités

Entités linéaires qui seront comparées aux les entités de base.

Feature Layer
Entités de base

Entités linéaires à comparer aux entités de remplacement pour détecter les modifications.

Feature Layer
Classe d’entités en sortie

Classe d’entités linéaires en sortie qui contient les informations liées aux modifications. La sortie contient toutes les entités de remplacement participantes (appariées ou non) et les éventuelles entités de base non appariées.

Feature Class
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)

Champs d’appariement des entités de remplacement et de base. Si cette option est renseignée, des candidats à l’appariement sont recherchés en comparant 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
Modifier la tolérance
(Facultatif)

Distance utilisée pour déterminer la présence éventuelle d'une modification spatiale. Toutes les entités de remplacement et de base appariées sont comparées à cette tolérance. Si une portion des entités de remplacement ou de base se trouve hors de la zone qui entoure l’entité appariée, on constate alors une modification spatiale. La valeur doit être supérieure à la tolérance XY des données en entrée pour que ce processus puisse être réalisé ; la sortie comprendra les champs LEN_PCT et LEN_ABS. La valeur par défaut 0 indique que ce processus n’est pas réalisé. Toute valeur comprise entre 0 et la tolérance XY des données (inclusivement) rend le processus non pertinent et est remplacée par 0 Vous pouvez choisir une unité. L’unité de l’entité est spécifiée par défaut.

Linear Unit
Comparer les champs
(Facultatif)

Champs permettant de déterminer l’existence éventuelle d’une modification attributaire entre les entités de remplacement et les entités de base appariées.

Value Table
Comparer la direction de la ligne
(Facultatif)

Indique si les directions des lignes seront comparées pour les entités appariées.

  • Désactivé : les directions des lignes ne seront pas comparées aux entités appariées. Il s’agit de l’option par défaut.
  • Activé : les directions des lignes seront comparées aux entités appariées.
Boolean

arcpy.management.DetectFeatureChanges(update_features, base_features, out_feature_class, search_distance, {match_fields}, {out_match_table}, {change_tolerance}, {compare_fields}, {compare_line_direction})
NomExplicationType de données
update_features

Entités linéaires qui seront comparées aux les entités de base.

Feature Layer
base_features

Entités linéaires à comparer aux entités de remplacement pour détecter les modifications.

Feature Layer
out_feature_class

Classe d’entités linéaires en sortie qui contient les informations liées aux modifications. La sortie contient toutes les entités de remplacement participantes (appariées ou non) et les éventuelles entités de base non appariées.

Feature Class
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)

Champs d’appariement des entités de remplacement et de base. Si cette option est renseignée, des candidats à l’appariement sont recherchés en comparant 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
change_tolerance
(Facultatif)

Distance utilisée pour déterminer la présence éventuelle d'une modification spatiale. Toutes les entités de remplacement et de base appariées sont comparées à cette tolérance. Si une portion des entités de remplacement ou de base se trouve hors de la zone qui entoure l’entité appariée, on constate alors une modification spatiale. La valeur doit être supérieure à la tolérance XY des données en entrée pour que ce processus puisse être réalisé ; la sortie comprendra les champs LEN_PCT et LEN_ABS. La valeur par défaut 0 indique que ce processus n’est pas réalisé. Toute valeur comprise entre 0 et la tolérance XY des données (inclusivement) rend le processus non pertinent et est remplacée par 0 Vous pouvez choisir une unité. L’unité de l’entité est spécifiée par défaut.

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

Champs permettant de déterminer l’existence éventuelle d’une modification attributaire entre les entités de remplacement et les entités de base appariées.

Value Table
compare_line_direction
(Facultatif)

Indique si les directions des lignes seront comparées pour les entités appariées.

  • NO_COMPARE_DIRECTIONLes directions des lignes ne seront pas comparées aux entités appariées. Il s’agit de l’option par défaut.
  • COMPARE_DIRECTIONLes directions des lignes seront comparées aux entités appariées.
Boolean

Exemple de code

Exemple 1 d'utilisation de l'outil DetectFeatureChanges (fenêtre Python)

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

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.DetectFeatureChanges_edit("update_Roads.shp",
                                "base_Roads.shp", "output_changes.shp"
                                "25 Feet", #, #, "7.6 Meters",
                                ["rdClass", "roadClass"])
Exemple 2 d'utilisation de l'outil DetectFeatureChanges (script autonome)

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

# Name:        DetectFeatureChanges_example_script2.py
# Description: Perform change detection between newly received road data and
#              existing road data and find the number of new roads and the
#              total length of them.
# Author:      Esri
# -----------------------------------------------------------------------

# Import system modules
import arcpy
from arcpy import env

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

# Set local variables
updateFeatures = "updateRoads"
baseFeatures = "baseRoads"
dfcOutput = "dfc_out"

search_distance = "300 Feet"
match_fields = "RD_NAME FULLNAME"

statsTable = "new_roads_stats"

# Perform spatial change detection
arcpy.DetectFeatureChanges_management(updateFeatures, baseFeatures, dfcOutput, search_distance, match_fields)

# ====================================================================================
# Note 1:  The result of DetectFeatureChanges may contain errors; see tool reference.
#          Inspection and editing may be necessary to ensure correct CHANGE_TYPE N, which
#          represents un-matched update feautres, before further calculations.
#
#          One of the quick ways of checking whether the CHANGE_TYPE N features have
#          matching base features is to find their mid-points and use them to search for
#          features in base data, as processed below.
# ====================================================================================

# ======== Check update roads with CHANGE_TYPE N for potential match
# Make Feature Layer with selection of CHANGE_TYPE = 'N' (un-matched update features)
arcpy.MakeFeatureLayer_management(dfcOutput, "sel_N_layer", "CHANGE_TYPE = 'N'")

# Get mid-points of the selected features; the mid-points carry all the attributes.
arcpy.FeatureVerticesToPoints_management("sel_N_layer", "in_memory\midPts", "MID")

# Find nearest base features from the mid-points
arcpy.Near_analysis("in_memory\midPts", baseFeatures, "300 Feet")

# ====================================================================================
# Note 2:  At this point you can manually inspect the midPts by the NEAR_DIST values; 
#          the lower the values, the higher chance (not always) a match was missed in the 
#          dfc process. Delete features from midPts that have found matching base features 
#          before further process.
# ====================================================================================

# Transfer CHANGE_TYPE values from features of midPts to update features
arcpy.JoinField_management(updateFeatures, "OBJECTID", "in_memory\midPts", "UPDATE_FID", "CHANGE_TYPE")

# Get the count of new roads and the total length; the remaining roads have
# Null values for CHANGE_TYPE.
arcpy.Frequency_analysis(updateFeatures, statsTable, "CHANGE_TYPE", "Shape_Length")

Rubriques connexes