Buscar idéntico (Administración de datos)

Resumen

Informa cualquier registro de una tabla o clase de entidad que tenga valores idénticos en una lista de campos y genera una tabla que enumera estos registros idénticos. Si se selecciona el campo Forma, se comparan las geometrías de entidad.

La herramienta Eliminar idéntico se puede utilizar para buscar y eliminar registros idénticos.

Ilustración

Find Identical illustration
In this example, points with the OBJECTIDs of 1,2, 3, 8, 9, and 10 are spatially coincident (blue highlight). The output table identifies those spatially coincident points that share the same CATEGORY.

Uso

Sintaxis

FindIdentical_management (in_dataset, out_dataset, fields, {xy_tolerance}, {z_tolerance}, {output_record_option})
ParámetroExplicaciónTipo de datos
in_dataset

Clase de entidad o tabla para los cuales se encontrarán registros idénticos.

Table View
out_dataset

Tabla de salida que informa los registros idénticos. El campo FEAT_SEQ en la tabla de salida tendrá el mismo valor para los registros idénticos.

Table
fields
[fields,...]

El campo o campos cuyos valores se compararán para encontrar registros idénticos.

Field
xy_tolerance
(Opcional)

La tolerancia xy que se aplicará a cada vértice al evaluar si hay un vértice idéntico en otra entidad. Este parámetro está habilitado solo cuando Forma se selecciona como uno de los campos.

Linear unit
z_tolerance
(Opcional)

La tolerancia Z que se aplica a cada vértice al evaluar si hay un vértice idéntico en otra entidad. Este parámetro está habilitado solo cuando Forma se selecciona como uno de los campos.

Double
output_record_option
(Opcional)

Elija si desea que en la tabla de salida solo aparezcan registros duplicados.

  • ALLTodos los registros de entrada tendrán registros correspondientes en la tabla de salida. Esta es la opción predeterminada.
  • ONLY_DUPLICATESSolo los registros duplicados tendrán registros correspondientes en la tabla de salida. Si no se encuentran duplicados, la salida estará vacía.
Boolean

Ejemplo de código

Ejemplo 1 de FindIdentical (ventana de Python)

La siguiente secuencia de comandos de la ventana de Python demuestra cómo utilizar la función FindIdentical en el modo inmediato.

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"])
Ejemplo 2 de FindIdentical (secuencia de comandos independiente)

La siguiente secuencia de comandos independiente muestra cómo utilizar la herramienta FindIdentical para identificar registros duplicados en una tabla o clase de entidad.

# 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]
Ejemplo 3 de FindIdentical: Registros duplicados solo de salida (secuencia de comandos independiente)

Muestra cómo utilizar el parámetro opcional Registros duplicados solo de salida. Si está marcada en el cuadro de diálogo de la herramienta o si se establece el valor de ONLY_DUPLICATES, entonces se eliminan todos los registros únicos, manteniendo solo los duplicados de la salida.

# 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]
Ejemplo 4 de FindIdentical: Agrupar registros idénticos por valor FEAT_SEQ

Lee la salida de la herramienta FindIdentical y agrupa los registros idénticos por valor 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

Entornos

Temas relacionados

9/11/2013