Résumé
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
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.
Syntaxe
FindIdentical(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 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.
| Boolean |
Exemple de code
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"])
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())
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())
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
- Basic: Non
- Standard: Non
- Advanced: Oui
Rubriques connexes
Vous avez un commentaire à formuler concernant cette rubrique ?