Étiquette | Explication | Type 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.
| Boolean |
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
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
arcpy.management.FindIdentical(in_dataset, out_dataset, fields, {xy_tolerance}, {z_tolerance}, {output_record_option})
Nom | 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 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.
| Boolean |
Exemple de code
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"])
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())
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())
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)
Environnements
Rubriques connexes
Vous avez un commentaire à formuler concernant cette rubrique ?