Определить изменения объектов (Detect Feature Changes) (Управление данными (Data Management))

Уровень лицензии:BasicStandardAdvanced

Краткая информация

Находит место, где обновляемые линейные объекты пространственно сопоставляются с базовыми и определяет пространственные и/или атрибутивные изменения или их отсутствие, после чего создает выходной класс объектов, содержащий совпадавшие обновленные объекты с информацией об их изменениях, несовпадающие обновленные объекты и несовпадающие базовые объекты.

Подробнее о работе сопоставления объектов

Рисунок

Определить изменения объектов

Использование

Синтаксис

DetectFeatureChanges_management (update_features, base_features, out_feature_class, search_distance, {match_fields}, {out_match_table}, {change_tolerance}, {compare_fields})
ПараметрОбъяснениеТип данных
update_features

Линейные объекты, сравниваемые с базовыми объектами.

Feature Layer
base_features

Линейные объекты, сопоставляемые с обновленными объектами для изменения направления.

Feature Layer
out_feature_class

Выходной класс линейных объектов с информацией об изменениях. Выходной класс содержит все входящие обновленные объекты (сопоставленные и не сопоставленные) и все не сопоставленные базовые объекты.

Feature Class
search_distance

Расстояние, использованное при поиске кандидатов для сопоставления. Расстояние должно быть задано, и оно должно быть больше 0. Вы можете выбрать предпочитаемые единицы измерения; единицами измерения по умолчанию являются единицы измерения объекта.

Linear unit
match_fields
[[source_field, target_field],...]
(дополнительно)

Список полей обновленных и базовых объектов. Если указано, каждая пара полей проверяется на совпадения для нахождения правильного сопоставления.

Value Table
out_match_table
(дополнительно)

Выходная таблица, содержащая полную информацию о сопоставлении объектов.

Table
change_tolerance
(дополнительно)

Расстояние, используемое для определения, имеет ли место пространственное изменение. Все совпадающие обновленные объекты проверяются на этот допуск. Если какие-то части обновленного объекта попадают вне зоны, это считается пространственным изменением. Расстояние должно быть неотрицательным. По умолчанию это ноль. Если указано положительное значение, выходные данные будут включать поля LEN_PCT и LEN_ABS. Вы можете выбрать предпочитаемые единицы измерения; единицами измерения по умолчанию являются единицы измерения объекта.

Linear unit
compare_fields
[[source_field, target_field],...]
(дополнительно)

Поля, определяющие, произошли ли атрибутивные изменения между сопоставляемыми обновленными и базовыми объектами.

Value Table

Пример кода

Пример 1 DetectFeatureChanges(окно Python)

Следующий скрипт окна Python демонстрирует, как применять функцию DetectFeatureChanges в быстром режиме.

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"])
Пример 2 DetectFeatureChanges (автономный скрипт)

Следующий автономный скрипт является примером выполнения функции DetectFeatureChanges в автономном режиме.

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

Параметры среды

Связанные темы

Информация о лицензировании

ArcGIS for Desktop Basic: Нет
ArcGIS for Desktop Standard: Нет
ArcGIS for Desktop Advanced: Да
5/10/2014