Rechercher les doublons (Gestion des données)

Niveau de licence :De baseStandardAvancé

Récapitulatif

Indique tous les enregistrements d'une table ou d'une classe d'entités qui ont des valeurs identiques dans une liste de champs et génère une table qui répertorie ces enregistrements identiques. Si le champ Forme est sélectionné, les géométries de l'entité sont comparées.

L'outil Supprimer l'élément identique permet de rechercher et de supprimer des enregistrements identiques.

Illustration

Illustration de l'outil Rechercher l'élément identique
Dans cet exemple, les points pour lesquels les valeurs d'OBJECTID sont 1,2, 3, 8, 9 et 10 sont spatialement coïncidents (surbrillance en bleu). La table en sortie identifie ces points coïncidents spatialement qui partagent la même valeur pour CATEGORY.

Utilisation

Syntaxe

FindIdentical_management (in_dataset, out_dataset, fields, {xy_tolerance}, {z_tolerance}, {output_record_option})
ParamètreExplicationType de données
in_dataset

Table ou classe d'entités pour laquelle les enregistrements identiques seront recherchés.

Table View
out_dataset

Table en sortie qui répertorie tous les enregistrements identiques. Le champ FEAT_SEQ de la table en sortie aura la même valeur pour tous les enregistrements identiques.

Table
fields
[fields,...]

Champ(s) dont les valeurs sont comparées pour rechercher des enregistrements identiques.

Field
xy_tolerance
(Facultatif)

Tolérance xy qui s'applique à chaque sommet lors de l'évaluation de la présence d'un sommet identique dans une autre entité. Ce paramètre est activé uniquement lorsque Shape est sélectionné comme un des champs.

Linear unit
z_tolerance
(Facultatif)

Tolérance Z qui s'applique à chaque sommet lors de l'évaluation de la présence d'un sommet identique dans une autre entité. Ce paramètre est activé uniquement lorsque Shape est sélectionné comme un des champs.

Double
output_record_option
(Facultatif)

Décidez si vous souhaitez ne voir apparaître que les enregistrements dupliqués dans la table en sortie.

  • ALLTous les enregistrements en entrée ont des enregistrements correspondants dans la table en sortie. Il s'agit de l'option par défaut.
  • ONLY_DUPLICATESSeuls les enregistrements dupliqués ont des enregistrements correspondants dans la table en sortie. La sortie est vide si aucun enregistrement dupliqué n'est trouvé.
Boolean

Exemple de code

Exemple 1 d'utilisation de l'outil FindIdentical (fenêtre Python)

Le script de fenêtre Python ci-dessous illustre l'utilisation de la fonction FindIdentical en mode immédiat.

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"])
Exemple 2 d'utilisation de l'outil FindIdentical (script autonome)

Le script autonome suivant montre comment utiliser l'outil FindIdentical pour identifier les enregistrements dupliqués d'une table ou d'une classe d'entités.

# 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]
Exemple 3 d'utilisation de l'outil FindIdentical : Effectuer une sortie des mots dupliqués uniquement (script autonome)

Illustre l'utilisation du paramètre Effectuer une sortie des mots dupliqués uniquement. Si cette option est activée ou si la valeur de ONLY_DUPLICATES est paramétrée, tous les enregistrements uniques sont supprimés et seuls les doublons de la sortie sont conservés.

# 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]
Exemple 4 d'utilisation de l'outil FindIdentical : groupement d'enregistrements identiques en fonction de la valeur FEAT_SEQ

Lit la sortie de l'outil FindIdentical et regroupe les enregistrements identiques en fonction de la valeur 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

Environnements

Thèmes connexes

Informations de licence

ArcGIS for Desktop Basic : Annuler
ArcGIS for Desktop Standard : Annuler
ArcGIS for Desktop Advanced : Oui
9/12/2013