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

Niveau de licence :BasicStandardAdvanced

Récapitulatif

Recherche les entités linéaires de remplacement qui correspondent spatialement aux entités linéaires de base, puis détecte les modifications spatiales et/ou attributaires, ainsi que l'absence de modification. Cet outil crée ensuite une classe d'entités en sortie contenant les entités de remplacement ou de base non appariées, ainsi que les entités de remplacement appariées avec les informations concernant leurs modifications.

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

Illustration

Détecter les modifications apportées aux entités

Utilisation

Syntaxe

DetectFeatureChanges_management (update_features, base_features, out_feature_class, search_distance, {match_fields}, {out_match_table}, {change_tolerance}, {compare_fields})
ParamètreExplicationType de données
update_features

Entités linéaires à comparer aux 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 comportant des informations de modification. 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 d'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, l'unité de l'entité est spécifiée.

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

Liste des champs des entités de remplacement et de base. 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
change_tolerance
(Facultatif)

Distance utilisée pour déterminer la présence éventuelle d'une modification spatiale. Toutes les entités de remplacement appariées sont comparées à cette tolérance. Une modification spatiale est détectée si une partie d'une entité de remplacement se trouve hors de la zone. Une distance peut être supérieure ou égale à zéro. La valeur par défaut est 0. Lorsqu'une valeur supérieure à 0 est spécifiée, la sortie inclut les champs LEN_PCT et LEN_ABS. Vous pouvez choisir une unité préférée. Par défaut, l'unité de l'entité est spécifiée.

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

Champs permettant de déterminer la présence éventuelle d'une modification attributaire entre les entités de remplacement et les entités de base appariées.

Value Table

Exemple de code

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

Le script de fenêtre Python ci-dessous 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 Meterd",
                                ["rdClass", "roadClass"])
Exemple 2 d'utilisation de la fonction DetectFeatureChanges (script Python autonome)

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

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

Environnements

Thèmes connexes

Informations de licence

ArcGIS for Desktop Basic: Annuler
ArcGIS for Desktop Standard: Annuler
ArcGIS for Desktop Advanced: Oui
6/5/2014