Feature-Änderungen erkennen (Datenmanagement)

Lizenzstufe:BasicStandardAdvanced

Zusammenfassung

Dieses Werkzeug erkennt, wo die Aktualisierungs-Linien-Features räumlich mit den Basis-Linien-Features übereinstimmen und ob es räumliche Änderungen, Attributänderungen, beides und keine Änderungen gibt, und erstellt eine Ausgabe-Feature-Class mit abgeglichenen Aktualisierungs-Features samt Informationen zu Änderungen, Aktualisierungs-Features ohne Übereinstimmung und Basis-Features ohne Übereinstimmung.

Weitere Informationen zur Funktionsweise des Feature-Abgleichs

Bild

Feature-Änderungen erkennen

Verwendung

Syntax

DetectFeatureChanges_management (update_features, base_features, out_feature_class, search_distance, {match_fields}, {out_match_table}, {change_tolerance}, {compare_fields})
ParameterErläuterungDatentyp
update_features

Linien-Features, die mit den Basis-Features verglichen werden sollen.

Feature Layer
base_features

Linien-Features, die zur Änderungserkennung mit Aktualisierungs-Features verglichen werden sollen.

Feature Layer
out_feature_class

Ausgabe-Line-Feature-Class mit Änderungsinformationen. Die Ausgabe enthält alle beteiligten Aktualisierungs-Features (mit und ohne Übereinstimmung) und alle Basis-Features ohne Übereinstimmung.

Feature Class
search_distance

Die für die Suche nach Übereinstimmungskandidaten verwendete Entfernung. Die Entfernung muss angegeben und größer als null sein. Sie können eine bevorzugte Einheit auswählen. Standardmäßig wird die Feature-Einheit verwendet.

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

Liste der Felder aus Aktualisierungs- und Basis-Features. Falls angegeben, wird jedes Feldpaar auf Übereinstimmungskandidaten geprüft, um die Ermittlung des richtigen Treffers zu ermöglichen.

Value Table
out_match_table
(optional)

Die Ausgabetabelle mit vollständigen Informationen zum Feature-Abgleich.

Table
change_tolerance
(optional)

Die Entfernung, mit deren Hilfe bestimmt wird, ob eine räumliche Änderung vorliegt. Alle abgeglichenen Aktualisierungs-Features werden mit dieser Toleranz verglichen. Wenn Teile eines Aktualisierungs-Features aus dieser Zone herausfallen, wird dies als räumliche Änderung betrachtet. Die Entfernung kann gleich oder größer als Null sein. Der Standardwert ist 0. Bei der Angabe eines Wertes, der größer als 0 ist, enthält die Ausgabe die Felder LEN_PCT und LEN_ABS. Sie können eine bevorzugte Einheit auswählen. Standardmäßig wird die Feature-Einheit verwendet.

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

Mit diesen Feldern wird bestimmt, ob eine Attributänderung zwischen abgeglichenen Aktualisierungs- und Basis-Features vorliegt.

Value Table

Codebeispiel

DetectFeatureChanges – Beispiel 1 (Python-Fenster)

Das folgende Skript im Python-Fenster veranschaulicht, wie die Funktion "DetectFeatureChanges" im unmittelbaren Modus verwendet wird.

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"])
DetectFeatureChanges – Beispiel 2 (eigenständiges Python-Skript)

Das folgende eigenständige Skript ist ein Beispiel für die Anwendung der Funktion "DetectFeatureChanges" in einer Skriptumgebung.

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

Umgebung

Verwandte Themen

Lizenzierungsinformationen

ArcGIS for Desktop Basic: Nein
ArcGIS for Desktop Standard: Nein
ArcGIS for Desktop Advanced: Ja
5/9/2014