Найти идентичные (Управление данными)

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

Выдает отчет о любых записях в классе пространственных объектов или таблице, которые имеют идентичные значения в списке полей, и создает таблицу, в которой перечислены идентичные записи. Если поле Shape указано, то будет проведено сравнение геометрии объектов.

Инструмент Удалить идентичные может использоваться для нахождения и удаления идентичных записей.

Иллюстрация

Иллюстрация инструмента Найти идентичные
Точки с идентификаторами OBJECTID 1,2, 3, 8, 9 и 10 являются пространственно совпадающими (выделены синим). Выходная таблица определяет эти пространственно совпадающие точки, использующие одно значение CATEGORY.

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

  • Записи являются идентичными, если значения в выбранных входных полях совпадают с аналогичными значениями в этих записях. Можно сравнивать значения из нескольких полей входного набора данных. Если определено более одного поля, записи сопоставляются по значениям в первом поле, затем по значениям второго поля, и т.д.

  • При вводе класса пространственных объектов или векторного слоя, укажите поле Shape в параметре Поле(я), чтобы сравнить геометрию объектов и найти идентичные объекты по местоположению. Параметры Допуск XY и Допуск Z допустимы, только если указано поле Shape.

    Если поле Shape указано и для входных объектов включены m- или z-значения, то m- или z-значения также будут использоваться для определения идентичных объектов.

  • Выберите параметр Выводить только дублированные записи, если необходимо отображать в выходной таблице только дублированные записи. Если этот параметр не установлен, то в выходных данных будет то же количество записей, что и во входном наборе данных.

  • Выходная таблица будет содержать следующие поля:

    • IN_FID— Значение поля Object ID из входного набора данных. Поле может использоваться для обратного соединения записей выходной таблицы со входным набором данных.
    • FEAT_SEQ— Порядковый номер. Записи из входных данных, имеющие одинаковые значения, будут иметь одинаковое значение FEAT_SEQ, в то время как неидентичные записи будут иметь уникальное последовательное значение. Значения FEAT_SEQ не имеют никакого отношения к идентификаторам входных записей.

Параметры

ПодписьОписаниеТип данных
Входной набор данных

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

Table View
Выходной набор данных

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

Table
Поля

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

Field
Допуск XY
(Дополнительный)

Значение допуска XY, в пределах которого вокруг каждой вершины объекта будет проводиться поиск идентичных вершин соседних объектов.

Этот параметр активен, если значение параметра Поле(я) включает поле Shape.

Linear Unit
Допуск Z
(Дополнительный)

Значение допуска Z, в пределах которого вокруг каждой вершины объекта будет проводиться поиск идентичных вершин соседних объектов.

Этот параметр активен, если значение параметра Поле(я) включает поле Shape.

Double
Выводить только дублирующиеся записи
(Дополнительный)

Указывает, будут ли включены в выходную таблицу только дублированные записи.

  • Не отмечено – для всех входных записей есть соответствующие им записи в выходной таблице. Это значение по умолчанию
  • Отмечено – соответствующие записи в выходной таблице есть только для дублированных записей. Если дубликаты не найдены, выходные записи будут пусты.
Boolean

arcpy.management.FindIdentical(in_dataset, out_dataset, fields, {xy_tolerance}, {z_tolerance}, {output_record_option})
ИмяОписаниеТип данных
in_dataset

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

Table View
out_dataset

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

Table
fields
[fields,...]

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

Field
xy_tolerance
(Дополнительный)

Значение допуска XY, в пределах которого вокруг каждой вершины объекта будет проводиться поиск идентичных вершин соседних объектов.

Этот параметр включается, если значение параметра fields включает поле Shape.

Linear Unit
z_tolerance
(Дополнительный)

Значение допуска Z, в пределах которого вокруг каждой вершины объекта будет проводиться поиск идентичных вершин соседних объектов.

Этот параметр включается, если значение параметра fields включает поле Shape.

Double
output_record_option
(Дополнительный)

Указывает, будут ли включены в выходную таблицу только дублированные записи.

  • ALLДля всех входных записей есть соответствующие им записи в выходной таблице. Это значение по умолчанию
  • ONLY_DUPLICATESСоответствующие записи в выходной таблице есть только для дублированных записей. Если дубликаты не найдены, выходные записи будут пусты.
Boolean

Пример кода

FindIdentical, пример 1 (окно Python)

Пример скрипта окна Python для использования функции FindIdentical в режиме прямого запуска.

import arcpy

# Find identical records based on a text field and a numeric field.
arcpy.FindIdentical_management("C:/data/fireincidents.shp", "C:/output/duplicate_incidents.dbf", ["ZONE", "INTENSITY"])
FindIdentical, пример 2 (автономный скрипт)

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

# Name: FindIdentical_Example2.py
# Description: Finds duplicate features in a dataset based on location (Shape field) and fire intensity

import arcpy

arcpy.env.overwriteOutput = True

# Set workspace environment
arcpy.env.workspace = "C:/data/findidentical.gdb"

# Set input feature class
in_dataset = "fireincidents"

# Set the fields upon which the matches are found
fields = ["Shape", "INTENSITY"]

# Set xy tolerance
xy_tol = ".02 Meters"

out_table = "duplicate_incidents"

# Execute Find Identical 
arcpy.FindIdentical_management(in_dataset, out_table, fields, xy_tol)
print(arcpy.GetMessages())
FindIdentical, пример 3 (автономный скрипт)

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

# Name: FindIdentical_Example3.py
# Description: Demonstrates the use of the optional parameter Output only duplicated records.

import arcpy

arcpy.env.overwriteOutput = True

# Set workspace environment
arcpy.env.workspace = "C:/data/redlands.gdb"

in_data = "crime"
out_data = "crime_dups"

# Note that XY Tolerance and Z Tolerance parameters are not used
# In that case, any optional parameter after them must assign
# the value with the name of that parameter    
arcpy.FindIdentical_management(in_data, out_data, ["Shape"], output_record_option="ONLY_DUPLICATES")

print(arcpy.GetMessages())
FindIdentical, пример 4 (автономный скрипт)

Следующий автономный скрипт считывает выходные данные функции FindIdentical и группирует идентичные записи по значению поля FEAT_SEQ.

import arcpy

from itertools import groupby
from operator import itemgetter

# Set workspace environment
arcpy.env.workspace = r"C:\data\redlands.gdb"

# Run Find Identical on feature geometry only.
result = arcpy.FindIdentical_management("parcels", "parcels_dups", ["Shape"])
    
# List of all output records as IN_FID and FEAT_SEQ pair - a list of lists
out_records = []   
for row in arcpy.SearchCursor(result.getOutput(0), fields="IN_FID; FEAT_SEQ"):
    out_records.append([row.IN_FID, row.FEAT_SEQ])

# Sort the output records by FEAT_SEQ values
# Example of out_records = [[3, 1], [5, 3], [1, 1], [4, 3], [2, 2]]
out_records.sort(key = itemgetter(1))
    
# records after sorted by FEAT_SEQ: [[3, 1], [1, 1], [2, 2], [5, 3], [4, 3]]
# records with same FEAT_SEQ value will be in the same group (i.e., identical)
identicals_iter = groupby(out_records, itemgetter(1))
    
# now, make a list of identical groups - each group in a list.
# example identical groups: [[3, 1], [2], [5, 4]]
# i.e., IN_FID 3, 1 are identical, and 5, 4 are identical.
identical_groups = [[item[0] for item in data] for (key, data) in identicals_iter]

print(identical_groups)

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