Rechercher les doublons (Gestion des données)

Synthèse

Indique tous les enregistrements d’une table ou d’une classe d’entités qui possèdent 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 les 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

  • Les enregistrements sont identiques si les valeurs des champs en entrée sélectionnés sont identiques pour ces enregistrements. Les valeurs provenant de plusieurs champs dans le jeu de données en entrée peuvent être comparées. Si plusieurs champs sont indiqués, les enregistrements sont mis en correspondance en fonction des valeurs du premier champ, puis des valeurs du deuxième champ, et ainsi de suite.

  • Avec une classe d’entités ou une couche d’entités en entrée, sélectionnez le champ Shape (Forme) dans le paramètre Field(s) (Champ(s)) afin de comparer des géométries d’entités et rechercher des entités identiques par emplacement. Les paramètres XY Tolerance (Tolérance XY) et Z Tolerance (Tolérance Z) ne sont valides que si Shape (Forme) est sélectionné comme l’un des champs en entrée.

    Si le champ Shape (Forme) est sélectionné et que les entités en entrée présentent des valeurs M ou Z, ces valeurs sont également utilisées pour déterminer les entités identiques.

  • Activez le paramètre Output only duplicated records (Effectuer une sortie des mots dupliqués uniquement) si vous ne souhaitez voir apparaître dans la table en sortie que les enregistrements dupliqués. La sortie aura le même nombre d'enregistrements que le jeu de données en entrée si ce paramètre est désactivé (par défaut).

  • La table en sortie contiendra deux champs : IN_FID et FEAT_SEQ.

    • Le champ IN_FID permet de joindre les enregistrements de la table en sortie au jeu de données en entrée.
    • Les enregistrements identiques présentent la même valeur FEAT_SEQ, alors que les enregistrements différents présentent une valeur séquentielle. Les valeurs FEAT_SEQ ne possèdent aucune relation avec les ID des enregistrements en entrée.

Paramètres

ÉtiquetteExplicationType de données
Jeu de données en entrée

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

Table View
Jeu de données en sortie

Table en sortie répertoriant les enregistrements identiques. Le champ FEAT_SEQ de la table en sortie possèdera la même valeur pour tous les enregistrements identiques.

Table
Champ(s)

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

Field
Tolérance XY
(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 si Shape (Forme) est sélectionné comme l’un des champs.

Linear Unit
Tolérance Z
(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 si Shape (Forme) est sélectionné comme l’un des champs.

Double
Effectuer une sortie des mots dupliqués uniquement
(Facultatif)

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

  • Désactivé : tous les enregistrements en entrée possèdent des enregistrements correspondants dans la table en sortie. Il s’agit de l’option par défaut.
  • Activé : seuls les enregistrements dupliqués possèdent des enregistrements correspondants dans la table en sortie. La sortie est vide si aucun enregistrement dupliqué n'est trouvé.
Boolean

arcpy.management.FindIdentical(in_dataset, out_dataset, fields, {xy_tolerance}, {z_tolerance}, {output_record_option})
NomExplicationType 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 répertoriant les enregistrements identiques. Le champ FEAT_SEQ de la table en sortie possèdera 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 si Shape (Forme) est sélectionné comme l’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 si Shape (Forme) est sélectionné comme l’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 possèdent des enregistrements correspondants dans la table en sortie. Il s’agit de l’option par défaut.
  • ONLY_DUPLICATESSeuls les enregistrements dupliqués possèdent 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 en double 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

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

Illustre l’utilisation du paramètre facultatif Output only duplicated records (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

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())
Exemple 4 d’utilisation de l’outil FindIdentical : groupement d’enregistrements identiques en fonction de la valeur FEAT_SEQ (script autonome)

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)