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 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
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, seleccione el campo Forma 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 selecciona Forma como uno de los campos de entrada.
Si el campo Forma está seleccionado 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á la misma cantidad de registros que el dataset de entrada (opción predeterminada).
La tabla de salida contendrá dos campos: IN_FID y FEAT_SEQ.
- El campo IN_FID se puede utilizar para volver a unir los registros de la tabla de salida con el dataset de entrada.
- Los registros idénticos tienen el mismo valor FEAT_SEQ, mientras que los que no son idénticos tendrán un valor secuencial. Los valores FEAT_SEQ no tienen relación con los Id. de los registros de entrada.
Sintaxis
arcpy.management.FindIdentical(in_dataset, out_dataset, fields, {xy_tolerance}, {z_tolerance}, {output_record_option})
Parámetro | Explicación | Tipo 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 XY 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 solo está habilitado cuando se selecciona Forma como uno de los campos. | 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 solo está habilitado cuando se selecciona Forma como uno de los campos. | Double |
output_record_option (Opcional) | Elija si desea que en la tabla de salida solo aparezcan registros duplicados.
| Boolean |
Muestra de código
El siguiente script de la ventana de Python demuestra cómo utilizar la función FindIdentical en 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"])
En el siguiente script independiente se 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
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())
Muestra cómo utilizar el parámetro opcional Generar solo registros duplicados. Si está activada 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
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())
Lee la salida de la herramienta FindIdentical y agrupa los registros idénticos por el 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
Información de licenciamiento
- Basic: No
- Standard: No
- Advanced: Sí