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

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

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

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

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

Рисунок

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

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

Синтаксис

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

Linear unit
z_tolerance
(дополнительно)

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

Double
output_record_option
(дополнительно)

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

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

Пример кода

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

На следующем скрипте окна Python продемонстрировано, как используется функция Найти идентичные (Find Identical) с запуском из окна Python в ArcGIS.

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

На следующем автономном скрипте продемонстрировано, как используется инструмент "Найти идентичные" (Find Identical) для определения дублированных записей таблицы или класса пространственных объектов.

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

import arcpy
from arcpy import env

env.overwriteOutput = True

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

try:
    # 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()

except arcpy.ExecuteError:
    print arcpy.GetMessages(2)
    
except Exception as ex:
    print ex.args[0]
Пример 3. FindIdentical: вывод только дублированных записей (автономный скрипт)

Демонстрирует использование необязательного параметра "Выводить только дублированные записи" (Output only duplicated records). При выборе или установке значения ONLY_DUPLICATES в диалоговом окне инструмента все уникальные записи будут удалены. Сохранятся только дублированные записи из выходных данных/

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

import arcpy
from arcpy import env

env.overwriteOutput = True

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

try:
    
    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()
    
except Exception as ex:
    print arcpy.GetMessages(2)
    print ex.args[0]
Пример 4. FindIdentical: группировка идентичных записей по значению 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

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

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

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

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