Rechercher les doublons (Gestion des données)

Synthèse

Indique tous les enregistrements d’une table ou d’une classe d’entités possédant des valeurs identiques dans une liste de champs et génère une table répertoriant les enregistrements identiques. Si le champ Shape est spécifié, les géométries des entités seront comparées.

L’outil Supprimer les doublons permet de rechercher et de supprimer les enregistrements identiques.

Illustration

Illustration de l’outil Rechercher les doublons
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, spécifiez le champ Shape dans le paramètre Champ(s) afin de comparer les géométries des entités et de rechercher des entités identiques par emplacement. Les paramètres Tolérance XY et Tolérance Z sont valides uniquement si le champ Shape est spécifié.

    Si le champ Shape est spécifié et que les entités en entrée présentent des valeurs m ou z, les valeurs m ou z seront également utilisées pour identifier les entités identiques.

  • Cochez le paramètre Effectuer une sortie des mots dupliqués uniquement si vous souhaitez que seuls les enregistrements dupliqués apparaissent dans la table en sortie. Si ce paramètre n’est pas coché, la sortie présentera le même nombre d’enregistrements que le jeu de données en entrée.

  • La table en sortie contient les champs suivants :

    • IN_FID— La valeur du champ ID d’objet issue du jeu de données en entrée. Ce champ peut être utilisé pour joindre les enregistrements de la table en sortie au jeu de données en entrée.
    • FEAT_SEQ— Le numéro de séquence. Les enregistrements en entrée qui possèdent les mêmes valeurs auront la même valeur FEAT_SEQ alors que les enregistrements qui ne sont pas identiques auront une valeur séquentielle unique. Les valeurs FEAT_SEQ n’ont pas de lien 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 présentera 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 x,y qui s’applique à chaque sommet lorsqu’il s’agit de déterminer s’il existe un sommet identique dans une autre entité.

Ce paramètre est actif lorsque la valeur du paramètre Champ(s) inclut le champ Shape.

Linear Unit
Tolérance Z
(Facultatif)

Tolérance z qui s’applique à chaque sommet lorsqu’il s’agit de déterminer s’il existe un sommet identique dans une autre entité.

Ce paramètre est actif lorsque la valeur du paramètre Champ(s) inclut le champ Shape.

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

Indique si seuls les enregistrements dupliqués seront inclus 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 présentera 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 x,y qui s’applique à chaque sommet lorsqu’il s’agit de déterminer s’il existe un sommet identique dans une autre entité.

Ce paramètre est activé lorsque la valeur du paramètre fields inclut le champ Shape.

Linear Unit
z_tolerance
(Facultatif)

Tolérance z qui s’applique à chaque sommet lorsqu’il s’agit de déterminer s’il existe un sommet identique dans une autre entité.

Ce paramètre est activé lorsque la valeur du paramètre fields inclut le champ Shape.

Double
output_record_option
(Facultatif)

Indique si seuls les enregistrements dupliqués seront inclus 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 la fonction FindIdentical (fenêtre Python)

Le script ci-dessous pour la fenêtre Python montre comment utiliser 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 la fonction 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 la fonction FindIdentical (script autonome)

Le script autonome ci-après illustre l’utilisation du paramètre output_record_option facultatif. Si la valeur du paramètre est ONLY_DUPLICATES, tous les enregistrements uniques sont supprimés et seuls les doublons sont conservés pour la sortie.

# 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 la fonction FindIdentical (script autonome)

Le script autonome ci-après lit la sortie de la fonction FindIdentical et regroupe les enregistrements identiques en fonction de la valeur du champ 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)

Rubriques connexes