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

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

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

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

Иллюстрация

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

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

    Примечание:

    Все входные данные должны быть в одной системе координат.

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

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

    • UPDATE_FID– идентификатор (ID) обновленного объекта. Значение -1 соответствует не совпадающему базовому объекту.
    • BASE_FID– идентификатор (ID) базового объекта. Значение -1 соответствует не совпадающему обновленному объекту.
    • CHANGE_TYPE– тип обнаруженного изменения со следующими значениями:
      • S – сопоставленный объект обновления с пространственным изменением.
      • A – сопоставленный объект обновления с атрибутивным изменением.
      • SA – сопоставленный объект обновления и с пространственным и с атрибутивным изменением.
      • S_LD – для пространственных изменений, в том числе изменения направления линий.
      • SA_LD – для пространственных и атрибутивных изменений, в том числе изменения направления линий.
      • NC – сопоставленный объект обновления без изменения.
      • N – несопоставленный объект обновления, новый для базовых данных.
      • D – несопоставленный базовый объект, который, возможно, необходимо удалить из базовых данных.

  • Процесс сопоставления объектов сначала выполняется на основе значений параметров Расстояние поиска и Сопоставление полей. Для хранения информации о соответствии может быть получена выходная таблица соответствия.

    Параметр Расстояние поиска используется для поиска кандидатов для сопоставления. Используйте расстояние, достаточное для получения большей части смещений между соответствующими объектами, но недостаточно большое, чтобы вызвать ненужную обработку слишком большого числа кандидатов, что может привести к потенциально неправильным сопоставлениям.

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

    Если вы укажете одну или несколько пар полей в параметре Сопоставление полей, для пространственно сопоставленных кандидатов будут сравниваться значения этих полей, чтобы определить правильные сопоставления. Например, если объект обновления и базовый объект имеют поле STREET_NAME, содержащее названия улиц, и объект обновления пространственно совпадает с двумя базовыми объектами, но только один базовый кандидат имеет то же значение STREET_NAME, что и объект обновления, то он будет лучшим сопоставлением. Сравнение текстовых строк не чувствительно к регистру, потому строка First St считается равной строке first st.

  • Выбирать параметр Выходная таблица сопоставлений необязательно. Данная таблица сопоставлений предоставляет полную информацию сопоставления объектов, включая идентификаторы FID исходных и целевых объектов, группы сопоставления, отношения сопоставления и уровень достоверности сопоставления, полученный из пространственных и атрибутивных условий сопоставления. Эта информация может помочь вам лучше понять ситуации сопоставления и выполнить последующие инспекцию, редактирование и дальнейший анализ. Более подробно см. раздел О соответствии объектов и таблице соответствия.

    В выходной таблице сопоставления значения полей SRC_FID и TGT_FID соответствуют ID объектов обновления и ID базовых объектов.

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

    Пространственное изменение (изменение типа S) обнаруживается, если происходит следующее:

    • Совпадающие обновленные объекты отличаются от соответствующих базовых объектов в топологии. Например, одному обновленному объекту соответствуют два базовых.
    • В каждой группе сопоставления любые части объектов обновления или базовых объектов больше значения параметра Допуск изменения.

      Значение параметра Допуск изменения сохраняет ширину буферной зоны вокруг объектов обновления или базовых объектов. Для каждой совпавшей группы вокруг всех объектов обновления создается буфер обновления, а вокруг всех базовых объектов – базовый буфер. Далее все объекты обновления проверяются базовым буфером, а все базовые объекты – буфером обновления. Если какие-либо части объектов обновления не попадают в базовый буфер либо какие-либо части базовых объектов не попадают в буфер обновления, это считается пространственным изменением. Если указано значение, превышающее допуск XY входных данных, выходные данные будут включать следующие новые поля:

      • LEN_PCT– в поле содержатся значения длин в процентах на основе групп сопоставления.
      • LEN_ABS– в поле содержатся абсолютные значения длин в единицах измерения объектов на основе групп сопоставления.

      Значения этих полей определяются на основе совпавшей группы, к которой принадлежит выходной объект, в зависимости от следующих условий:

      • Если только объекты обновлений не попадают в базовый буфер:
        • Lu = общая длина не попавших фрагментов объектов обновлений.
        • Pu (процент длины) = Lu / общая длина всех объектов обновлений * 100.
        • LEN_PCT = Pu
        • LEN_ABS = Lu
      • Если только базовые объекты не попадают в буфер обновлений:
        • Lb = общая длина не попавших фрагментов базовых объектов.
        • Pb (процент длины) = Lb / общая длина всех базовых объектов * 100.
        • LEN_PCT = Pb
        • LEN_ABS = Lb
      • Если соблюдаются оба приведенных выше условия:
        • Будет записано большее из значений Lu и Lb и соответствующий процент. В случае, если записывается Lb, по причинам, описанным выше, знак изменяется на противоположный.

      Значение процента варьируется от 0 до 100, где 0 означает, что и объекты обновлений, и базовые объекты в группе сопоставления полностью попадают в зоны допуска изменений, а 100 – что все объекты обновлений и базовые объекты находятся вне пределов зон допуска изменений.

      Значения LEN_PCT и LEN_ABS помогут вам определить, является ли изменение значительным. Чем больше значение, тем более значительно изменение. Эти значения присваиваются только объектам с пространственными изменениями, остальным объектам присваивается значение -1.

    Изменения атрибутов (изменение типа A) обнаруживаются на основе значения параметра Сравнение полей. При указании одной или нескольких пар полей для параметра Сравнить поля сопоставленные объекты сравниваются по этим полям для обнаружения наличия или отсутствия изменения атрибутов. Сравнение текстовых строк не чувствительно к регистру, потому строка First St считается равной строке first st. Если для сопоставленного объекта обновления обнаруживаются и атрибутивные, и пространственные изменения, ему назначается тип изменений SA. Если для сопоставленного объекта обновления не обнаруживается изменений, это считается отсутствием изменений, и ему присваивается тип изменения NC.

    Изменение направления линии (типы изменения S_LD или SA_LD) считается пространственным изменением и может быть выявляться опционально.

    • Сопоставленным объектам обновлений присваивается тип изменения S_LD, если направление любой из их линий противоположно одному или нескольким базовым объектам, с описанными выше пространственными изменениями или без них. Другими словами, это типы S или NC, если направления линий не сравниваются.
    • Сопоставленным объектам обновлений присваивается тип изменения SA_LD, если направление любой из их линий противоположно одному или нескольким базовым объектам, в дополнение к атрибутивным изменениям или пространственным и атрибутивным изменениям, описанным выше. Другими словами, это типы A или SA, если направления линий не сравниваются.

  • Объединение входных экстентов используется в качестве экстента обработки. Количество участвующих исходных и целевых объектов будет отображено в сообщениях обработки.

  • Точность сопоставления объектов зависит от качества данных, сложности и сходства двух источников данных

    Минимизируйте ошибки данных и выберите подходящие объекты в качестве входных данных во время предварительной обработки. В общих чертах, лучше убедиться, что объекты внутри входного набора данных являются топологически корректными, имеют допустимую геометрию и являются простыми и не содержат дубликатов; в противном случае, могут возникнуть непредвиденные ошибки.

  • Вы можете просматривать обнаруженные изменения в выходном пространственном классе. Вы можете решить, что пространственные изменения между источниками данных значительны и посчитать, что один из них нужно подправить в целях их совпадения. Вы также можете переносить атрибуты между объектами обновления и базовыми объектами. Вы можете использовать инструменты трансформирования методом резинового листа и переноса атрибутов из группы инструментов Объединение, чтобы внести изменения.

Параметры

ПодписьОписаниеТип данных
Обновленные объекты

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

Feature Layer
Базовые объекты

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

Feature Layer
Выходной класс пространственных объектов

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

Feature Class
Расстояние поиска

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

Linear Unit
Сопоставление полей
(Дополнительный)

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

Value Table
Выходная таблица сопоставлений
(Дополнительный)

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

Table
Допуск изменения
(Дополнительный)

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

Linear Unit
Сравнить поля
(Дополнительный)

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

Value Table
Сравнить линейное направление
(Дополнительный)

Определяет сравниваются ли направления линий сопоставленных объектов.

  • Не отмечено – Направления линий сопоставленных объектов не сравниваются. Это значение по умолчанию
  • Отмечено – Направления линий сопоставленных объектов сравниваются.
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})
ИмяОписаниеТип данных
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
(Дополнительный)

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

Linear Unit
compare_fields
[[source_field, target_field],...]
(Дополнительный)

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

Value Table
compare_line_direction
(Дополнительный)

Определяет сравниваются ли направления линий сопоставленных объектов.

  • NO_COMPARE_DIRECTIONНаправления линий совпавших объектов не сравниваются. Это значение по умолчанию
  • COMPARE_DIRECTIONНаправления линий совпавших объектов сравниваются.
Boolean

Пример кода

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

Следующий автономный скрипт является примером применения функции 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")

Связанные разделы