français

Procédure : trier et créer un champ d’ID classé de façon séquentielle dans une table attributaire dans ArcGIS Pro

Résumé

Le tri et la création d’un champ d’ID classé de façon séquentielle dans une table attributaire dans ArcGIS Pro constitue un moyen efficace d’organiser vos données. Les valeurs les plus élevées et les plus faibles ou même les entités les plus et les moins significatives d’une couche deviennent facilement identifiables.

Procédure

Les étapes suivantes décrivent comment trier et créer un champ d’ID classé de façon séquentielle dans une table attributaire dans ArcGIS Pro en utilisant trois options différentes : le tri croissant ou décroissant, la fonction de calcul du champ ou un script Python.

Utilisation de la fonction de tri croissant ou décroissant
  1. Cliquez avec le bouton droit sur l’entité souhaitée pour ouvrir la table attributaire.

    The image of opening attribute table.
     
  2. Cliquez avec le bouton droit sur le champ souhaité dans la table attributaire.
  3. Sélectionnez Sort Ascending (Tri croissant), Sort Descending (Tri décroissant) ou Custom Sort (Tri personnalisé). Un champ trié est créé.

    The image of the Sort functionality.
     
Utilisation de la fonction Calculate Field (Calculer un champ)
Remarque :
Cette option génère uniquement des nombres séquentiels pour les données non triées basées sur le tri OBJECTID. Si les données sont triées, les numéros générés ne sont pas séquentiels.
  1. Ouvrez la table attributaire de l’entité désirée.
  2. Cliquez avec le bouton droit sur le champ souhaité dans la table attributaire.
  3. Sélectionnez Calculate Field (Calculer un champ) pour ouvrir la console Calculate Field (Calculer un champ).

    The image of Calculate Field option.
     
  4. Dans la console Calculate Field (Calculer un champ), cliquez sur l’icône de filtre Helpers (Assistants) et sélectionnez Function (Fonction).

    The image of the Helpers filter for Function.
     
  5. Double-cliquez sur la fonction Sequential Number (Numéro séquentiel). Cette opération génère l’expression et la section Code Block (Bloc de code) afin de créer les numéros séquentiels.

    The image of Calculate Field console with the populated Expression and Code Block section.
     
  6. Cliquez sur Run (Exécuter). Les numéros séquentiels basés sur le champ OBJECTID sont créés dans le champ spécifié par la fonction Calculate Geometry (Calculer la géométrie).
Utilisation d’un script Python via la console Python

Les étapes suivantes indiquent comment créer les numéros séquentiels triés à l’aide de la fonction ArcPy autoIncrement() :

  1. Lancez la console Python. Cliquez sur l’onglet Analysis (Analyse) et sélectionnez Python.

    The image of ArcGIS Pro Analysis tab.
     
  2. Importez la bibliothèque ArcPy.
    import arcpy
  3. Définissez l’entité désirée, les champs sur lesquels vous basez le tri et le champ à remplir avec les numéros séquentiels.
    sortFeat  = r'[Geodatabase]\[Feature]'
    sortField = '[Base Field to sort]'
    idField   = '[Field to populate sequential numbers]'
    Remarque :
    Pour créer les numéros séquentiels dans un nouveau champ, créez un champ et spécifiez le nom du champ dans le segment idField. Pour plus d’informations sur la création d’un champ, reportez-vous au document d’aide web suivant : ArcGIS Pro : Ajouter un champ.
  4. Définissez un paramètre compteur.
    rec = 0
  5. Lancez la fonction autoIncrement().
    def autoIncrement():
        global rec
        pStart    = 1
        pInterval = 1
        if (rec == 0):
            rec = pStart
     else:
            rec += pInterval
     return rec
  6. Renseignez les champs avec les numéros séquentiels et supprimez les lignes superflues.
    rows = arcpy.UpdateCursor(sortFeat, "", "", "", sortField + " A")
    
    for row in rows:
        row.setValue(idField, autoIncrement())
        rows.updateRow(row)
    
    del row, rows

L’exemple de code suivant présente un script fonctionnel complet.

import arcpy

sortFeat  = r'C:\Users\\Northridge.gdb\Stations' 
sortField = 'OBJECTID' 
idField   = 'Station' 
rec=0

def autoIncrement():
    global rec
 pStart = 1 
 pInterval = 1 
 if (rec == 0): 
 rec = pStart 
 else: 
 rec += pInterval 
 return rec

rows = arcpy.UpdateCursor(sortFeat, "", "", "", sortField + " A")

for row in rows:
    row.setValue(idField, autoIncrement())
    rows.updateRow(row)

del row, rows

Informations associées