Подпись | Описание | Тип данных |
Входной набор данных | Таблица или класс пространственных объектов, для которого будут найдены одинаковые записи. | Table View |
Выходной набор данных | Выходная таблица, содержащая отчет об одинаковых записях. Поле FEAT_SEQ в выходной таблице будет содержать одинаковые значения для идентичных записей. | Table |
Поля | Поле или поля, значения которых будут сравниваться для нахождения идентичных записей. | Field |
Допуск XY (Дополнительный) | Значение допуска XY, в пределах которого вокруг каждой вершины объекта будет проводиться поиск идентичных вершин соседних объектов. Этот параметр активен, если значение параметра Поле(я) включает поле Shape. | Linear Unit |
Допуск Z (Дополнительный) | Значение допуска Z, в пределах которого вокруг каждой вершины объекта будет проводиться поиск идентичных вершин соседних объектов. Этот параметр активен, если значение параметра Поле(я) включает поле Shape. | Double |
Выводить только дублирующиеся записи (Дополнительный) | Указывает, будут ли включены в выходную таблицу только дублированные записи.
| Boolean |
Краткая информация
Выдает отчет о любых записях в классе пространственных объектов или таблице, которые имеют идентичные значения в списке полей, и создает таблицу, в которой перечислены идентичные записи. Если поле Shape указано, то будет проведено сравнение геометрии объектов.
Инструмент Удалить идентичные может использоваться для нахождения и удаления идентичных записей.
Иллюстрация
Использование
Записи являются идентичными, если значения в выбранных входных полях совпадают с аналогичными значениями в этих записях. Можно сравнивать значения из нескольких полей входного набора данных. Если определено более одного поля, записи сопоставляются по значениям в первом поле, затем по значениям второго поля, и т.д.
При вводе класса пространственных объектов или векторного слоя, укажите поле Shape в параметре Поле(я), чтобы сравнить геометрию объектов и найти идентичные объекты по местоположению. Параметры Допуск XY и Допуск Z допустимы, только если указано поле Shape.
Если поле Shape указано и для входных объектов включены m- или z-значения, то m- или z-значения также будут использоваться для определения идентичных объектов.
Выберите параметр Выводить только дублированные записи, если необходимо отображать в выходной таблице только дублированные записи. Если этот параметр не установлен, то в выходных данных будет то же количество записей, что и во входном наборе данных.
Выходная таблица будет содержать следующие поля:
- IN_FID— Значение поля Object ID из входного набора данных. Поле может использоваться для обратного соединения записей выходной таблицы со входным набором данных.
- FEAT_SEQ— Порядковый номер. Записи из входных данных, имеющие одинаковые значения, будут иметь одинаковое значение FEAT_SEQ, в то время как неидентичные записи будут иметь уникальное последовательное значение. Значения FEAT_SEQ не имеют никакого отношения к идентификаторам входных записей.
Параметры
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 (Дополнительный) | Указывает, будут ли включены в выходную таблицу только дублированные записи.
| Boolean |
Пример кода
Пример скрипта окна 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 для определения дублированных записей таблицы или класса пространственных объектов.
# 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())
Следующий автономный скрипт демонстрирует использование необязательного параметра 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 и группирует идентичные записи по значению поля 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)