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
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 Forme dans le paramètre Champ(s) afin de comparer des géométries d'entités et de rechercher des entités identiques par emplacement. Les paramètres Tolérance XY et Tolérance Z ne sont valides que si Shape est sélectionné comme un des champs en entrée.
Si le champ Shape 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 des entités identiques.
Activez le paramètre 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 entrée 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 n'ont aucune relation avec les ID des enregistrements en entrée.
Syntaxe
FindIdentical_management (in_dataset, out_dataset, fields, {xy_tolerance}, {z_tolerance}, {output_record_option})
Paramètre | Explication | Type 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 Forme 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 Forme 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.
| 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
Informations de licence
- ArcGIS for Desktop Basic: Annuler
- ArcGIS for Desktop Standard: Annuler
- ArcGIS for Desktop Advanced: Oui