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

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

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

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

Иллюстрация

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

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

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

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

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

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

  • Выходная таблица содержит два поля: IN_FID и FEAT_SEQ.

    • Поле IN_FID может использоваться для обратного соединения записей выходной таблицы со входным набором.
    • Идентичные записи содержат одинаковое значение 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, в пределах которого вокруг каждой вершины объекта будет проводиться поиск идентичных вершин соседних объектов. Этот параметр используется, только если в качестве одного из полей выбрано поле Shape.

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

Значение допуска Z, в пределах которого вокруг каждой вершины объекта будет проводиться поиск идентичных вершин соседних объектов. Этот параметр используется, только если в качестве одного из полей выбрано поле 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 only duplicated records). При выборе или установке значения 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: группировка идентичных записей по значению FEAT_SEQ (автономный скрипт)

Выполняет чтение выходных данных, сформированных инструментом 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)