Buscar idéntico (Administración de datos)

Resumen

Reporta todos los registros de una tabla o clase de entidad con valores idénticos en una lista de campos y genera una tabla que enumera los registros idénticos. Si se especifica el campo Shape, las geometrías de entidad se compararán.

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

Ilustración

Ilustración de la herramienta Buscar idéntico
En este ejemplo, los puntos con los OBJECTID de 1, 2, 3, 8, 9 y 10 coinciden espacialmente (resaltados en azul). En la tabla de salida se identifican aquellos puntos coincidentes espacialmente que comparten la misma CATEGORY.

Uso

  • Los registros son idénticos si los valores de los campos de entrada seleccionados son los mismos para esos registros. Se pueden comparar los valores de múltiples campos en el dataset de entrada. Si se especifica más de un campo, los registros se hacen coincidir con los valores en el primer campo, luego con los valores del segundo campo, y así sucesivamente.

  • Con la entrada de capa de entidades o clase de entidad, especifique el campo Shape en el parámetro Campos para comparar geometrías de entidades para buscar entidades idénticas por ubicación. Los parámetros Tolerancia XY y Tolerancia Z solo son válidos cuando se especifica el campo Shape.

    Si se especifica el campo Shape y las entidades de entrada tienen valores m o z habilitados, entonces los valores m o z también se utilizan para determinar entidades idénticas.

  • Active el parámetro Generar solo registros duplicados si solo desea que aparezcan los registros duplicados en la tabla de salida. Si este parámetro está desactivado, la salida tendrá el mismo número de registros que el dataset de entrada.

  • La tabla de salida contendrá los siguientes campos:

    • IN_FID—Valor del campo Id. de objeto del dataset de entrada. Este campo se puede utilizar para volver a unir los registros de la tabla de salida con el dataset de entrada.
    • FEAT_SEQ—Número de secuencia. Los registros de la entrada que tiene los mismos valores tendrán el mismo valor FEAT_SEQ, mientras que los registros que no sean idénticos tendrán un valor secuencial único. Los valores FEAT_SEQ no guardan relación con los Id. de los registros de entrada.

Parámetros

EtiquetaExplicaciónTipo de datos
Dataset de entrada

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

Table View
Dataset de salida

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

Table
Campos

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

Field
Tolerancia XY
(Opcional)

La tolerancia x,y que se aplicará a cada vértice a la hora de evaluar si hay un vértice idéntico en otra entidad.

Este parámetro está activo cuando el valor del parámetro Campo incluye el campo Shape.

Linear Unit
Tolerancia Z
(Opcional)

La tolerancia z que se aplicará a cada vértice a la hora de evaluar si hay un vértice idéntico en otra entidad.

Este parámetro está activo cuando el valor del parámetro Campo incluye el campo Shape.

Double
Generar solo registros duplicados
(Opcional)

Especifica si solamente se incluirán registros duplicados en la tabla de salida.

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

arcpy.management.FindIdentical(in_dataset, out_dataset, fields, {xy_tolerance}, {z_tolerance}, {output_record_option})
NombreExplicació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 de los registros idénticos. El campo FEAT_SEQ de 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 x,y que se aplicará a cada vértice a la hora de evaluar si hay un vértice idéntico en otra entidad.

Este parámetro se habilita cuando el valor del parámetro fields incluye el campo Shape.

Linear Unit
z_tolerance
(Opcional)

La tolerancia z que se aplicará a cada vértice a la hora de evaluar si hay un vértice idéntico en otra entidad.

Este parámetro se habilita cuando el valor del parámetro fields incluye el campo Shape.

Double
output_record_option
(Opcional)

Especifica si solamente se incluirán registros duplicados en la tabla de salida.

  • 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

Muestra de código

Ejemplo 1 de FindIdentical (ventana de Python)

La siguiente secuencia de comandos de la ventana de Python muestra cómo utilizar la función FindIdentical de 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 (script independiente)

El siguiente script independiente demuestra cómo utilizar la función 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

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

La siguiente secuencia de comandos independiente demuestra cómo utilizar el parámetro output_record_option opcional. Si el valor del parámetro es ONLY_DUPLICATES, 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

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

La secuencia de comandos independiente siguiente lee la salida de la función FindIdentical y agrupa registros idénticos por valor del campo 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)

Temas relacionados