PROCÉDURE
Il est rare qu'une table attributaire contienne des champs avec des valeurs communes et des valeurs uniques. Par conséquent, il arrive de devoir identifier les valeurs en double pour créer un groupe parmi les couches ou pour identifier les valeurs uniques et isoler l'entité.
Il y a quatre façons d'identifier les doublons :
À l'aide de l'outil Rechercher les doublons
L'outil Rechercher les doublons crée une nouvelle table autonome. Il identifie l'ObjectID d'une entité et crée deux colonnes, l'une avec l'ObjectID de l'entité sélectionnée, l'autre avec des numéros pour signaler une entité unique ou en double. Les enregistrements identiques (doublons) ont la même valeur FEAT_SEQ, tandis que les enregistrements non identiques ont une valeur séquentielle. Les valeurs FEAT_SEQ n'ont pas de lien avec les ID des enregistrements en entrée. Pour plus d'informations, reportez-vous à l'article Arc GIS Pro : Rechercher des doublons (Gestion des données).
À l'aide de la fonction Calculate Field (Calculer un champ)
La fonction de l'analyseur Python isDuplicate() peut renseigner un nouveau champ pour identifier une valeur comme double ou unique en lui affectant une valeur spécifique. Par exemple, les valeurs uniques et la première occurrence de plusieurs valeurs sont renseignées par 0, tandis que toutes les valeurs en double sont signalées par la valeur 1. Les étapes suivantes décrivent comment appliquer la fonction dans ce but :
isDuplicate(!Field_Name_To_Verify!)
uniqueList = [] def isDuplicate(inValue): if inValue in uniqueList: return 1 else: uniqueList.append(inValue) return 0
À l'aide d'un script Python autonome
Ce script crée un nouveau champ et le renseigne avec le nombre de valeurs en double.
import arcpy
arcpy.env.workspace=r"D:\test.gdb" infeature="sample_feature" field_in="sample_field" field_out="COUNT_"+field_in arcpy.AddField_management(infeature,field_out,"SHORT")
lista=[] cursor1=arcpy.SearchCursor(infeature) for row in cursor1: i=row.getValue(field_in) lista.append(i) del cursor1, row
cursor2=arcpy.UpdateCursor(infeature) for row in cursor2: i=row.getValue(field_in) occ=lista.count(i) row.setValue(field_out,occ) cursor2.updateRow(row) del cursor2, row print ("Done.")
Voici le code complet :
import arcpy arcpy.env.workspace=r"D:\test.gdb" infeature="sample_feature" field_in="sample_field" field_out="COUNT_"+field_in arcpy.AddField_management(infeature,field_out,"SHORT") lista=[] cursor1=arcpy.SearchCursor(infeature) for row in cursor1: i=row.getValue(field_in) lista.append(i) del cursor1, row cursor2=arcpy.UpdateCursor(infeature) for row in cursor2: i=row.getValue(field_in) occ=lista.count(i) row.setValue(field_out,occ) cursor2.updateRow(row) del cursor2, row print ("Done.")
À l'aide de l'outil Résumés statistiques et d'une jointure de table
Obtenir de l’aide auprès des experts ArcGIS
Télécharger l’application Esri Support