Skip to main content

Automatiser la mise à jour du champ d’affichage dans ArcGIS Pro à l’aide de la fenêtre Python

Utilisez-vous déjà Python dans ArcGIS Pro? Nous explorons ici l’importance du champ d’affichage, la manière de le trouver et de le modifier, et nous exploitons la puissance de Python pour simplifier votre flux de travaux. Découvrez comment un simple script peut vous faire gagner du temps et améliorer votre productivité en mettant à jour les champs d’affichage sur plusieurs couches dans ArcGIS Pro.

Aperçu

Dans le monde des SIG, l’efficacité et l’automatisation sont essentielles. Les scripts Python dans ArcGIS Pro nous permettent de simplifier les tâches et d’améliorer la productivité. Aujourd’hui, nous allons voir ce qu’est le champ d’affichage dans ArcGIS Pro, comment le trouver et pourquoi vous pourriez vouloir le modifier. Ensuite, nous explorerons un script Python qui automatise la mise à jour du champ d’affichage pour toutes les couches d’une carte.

Qu’est-ce qu’un champ d’affichage dans ArcGIS?

Le champ d’affichage dans ArcGIS est une propriété de couche qui utilise un champ d’attribut désigné pour identifier les entités dans divers contextes, tels que les outils d’édition, les puces de sélection, les infobulles MapTip, les fenêtres contextuelles et les services de cartes publiées. En règle générale, il s’agit d’un champ qui fournit un identifiant significatif pour les entités, comme un nom ou un numéro.

Le choix d’un champ d’affichage approprié est crucial, car il affecte la manière dont les entités sont identifiées et affichées sur la carte. L’utilisation d’un champ tel que Shape_Length comme champ d’affichage entraînera une erreur (#00241) qui vous empêchera de publier une carte web sur ArcGIS Online, puisque ce n’est pas un identifiant significatif.

Capture d’écran d’ArcGIS Pro montrant une erreur fréquente lorsque le champ Shape_Length est utilisé comme champ d’affichage lors du partage d’une carte web.

Une erreur fréquente liée au champ d’affichage dans ArcGIS Pro 

Le problème vient du fait que le champ Shape_Length est simplement une valeur numérique représentant la taille d’une entité, et il est tout à fait possible que deux entités différentes aient la même longueur de forme. Vous pouvez ajuster manuellement le champ d’affichage :

  • en faisant un clic droit sur la couche concernée;

  • en accédant aux propriétés de la couche;

  • en vous rendant à l’onglet d’affichage;

  • et en sélectionnant un autre champ dans le menu déroulant du champ d’affichage.

  • Conseil en prime : les utilisateurs peuvent ajouter une expression Arcade pour personnaliser le champ d’affichage.

GIF montrant le processus de navigation vers le champ d’affichage dans les propriétés de la couche pour une classe d’entités dans ArcGIS Pro.

Navigation vers le champ d’affichage dans les propriétés de la couche

Bien que cela résolve l’erreur, que se passe-t-il si vous avez 10 couches ou 100 couches sur votre carte qui utilisent toutes Shape_Length comme champ d’affichage? C’est là que l’utilisation de la fenêtre Python dans ArcGIS Pro peut rendre votre flux de travaux plus efficace!

Le script se trouve dans la section suivante de ce billet de blogue, accompagné d’une explication détaillée ligne par ligne pour en comprendre le fonctionnement.

Mise à jour du script du champ d’affichage

import arcpy
# Define your project and map
project = arcpy.mp.ArcGISProject("CURRENT")
map = project.listMaps()[0]
# Define the display field you want to set
display_field = "OBJECTID"
# Loop through all layers and set the display field
for layer in map.listLayers():
    if layer.isFeatureLayer:
        # Get the layer's CIM definition
        cim_layer = layer.getDefinition('V2')
        # Update the display field
        cim_layer.featureTable.displayField = display_field
        # Apply the updated CIM definition back to the layer
        layer.setDefinition(cim_layer)
# Save changes
project.save()

Explication

Importation du module arcpy

import arcpy

Le script commence par importer le module ArcPy, qui est essentiel pour accéder aux fonctionnalités d’ArcGIS Pro.

Définition du projet et de la carte

project = arcpy.mp.ArcGISProject("CURRENT")
map = project.listMaps()[0]

Dans cet exemple, nous définissons le projet en cours et sélectionnons la première carte du projet, ce qui permet de déterminer le contexte des couches à modifier.

Réglage du champ d’affichage

display_field = "OBJECTID"

Nous précisons le champ d’affichage que nous voulons définir pour toutes les couches d’entités. Dans ce cas, il s’agit du champ OBJECTID.

Boucle à travers les couches

for layer in map.listLayers():
    if layer.isFeatureLayer:
        # Get the layer's CIM definition
        cim_layer = layer.getDefinition('V2')
        # Update the display field
        cim_layer.featureTable.displayField = display_field
        # Apply the updated CIM definition back to the layer
        layer.setDefinition(cim_layer)

Cette boucle parcourt toutes les couches de la carte. Pour chaque couche d’entité, elle récupère la définition CIM (modèle d’information cartographique) de la couche, met à jour le champ d’affichage et applique les modifications.

Détails techniques : modèle d’information cartographique (CIM)

Le modèle d’information cartographique (CIM) est une spécification utilisée pour conserver et transférer les descriptions cartographiques des ensembles de données SIG. Les applications ArcGIS et les interfaces de programmation d’applications (API) utilisent le CIM, représenté en notation d’objet JavaScript (JSON), pour les cartes, scènes, mises en page, couches, symboles et styles.

Composants principaux du CIM

  • CIMLayerDocument : document JSON contenant une ou plusieurs couches représentant des données telles que des entités d’une classe d’entités ou des données matricielles.

  • CIMMapDocument : document JSON contenant une collection de couches et de propriétés d’affichage pour les cartes 2D ou les scènes 3D.

  • CIMLayoutDocument : document JSON représentant une page, ses éléments et les cartes et scènes qu’elle contient, pour l’impression ou l’exportation de documents.

  • CIMReportDocument : document JSON représentant un rapport, ses éléments et les styles spécifiques au rapport.

Accès au CIM avec Python

Depuis ArcGIS Pro 2.4, les développeurs Python ont un accès très pointu aux nombreux paramètres, propriétés et fonctionnalités du CIM d’un projet ou d’un document externe, comme un fichier de couche (.lyrx), ce qui leur permet de les modifier. Cet accès permet aux développeurs d’automatiser des tâches complexes et de personnaliser en profondeur leurs flux de travaux SIG.

Retour au script : enregistrement des modifications

project.save()

Enfin, le script enregistre les modifications apportées au projet, de sorte que soient conservés les champs d’affichage mis à jour.

Pour exécuter le script directement dans ArcGIS Pro, cliquez sur l’onglet « Afficher » dans le ruban supérieur et sélectionnez Python dans le groupe de fenêtres.

GIF montrant le processus d’ouverture de la fenêtre Python dans un projet ArcGIS Pro.

Comment ouvrir la fenêtre Python dans ArcGIS Pro

Conclusion 

Il faut s’armer de patience pour modifier le champ d’affichage de chaque couche dans ArcGIS Pro, mais il faut souvent passer par ce long processus quand on diffuse une carte dans ArcGIS Online ou ArcGIS Enterprise. En exploitant les scripts Python, vous pouvez automatiser la mise à jour des champs d’affichage sur plusieurs couches, ce qui améliore considérablement votre efficacité et votre productivité. Adoptez la puissance de l’automatisation pour optimiser vos tâches SIG et obtenir de meilleurs résultats en moins de temps!

Allez sur la chaîne YouTube d’Esri Canada pour voir les scripts en action dans ArcGIS Pro en regardant la vidéo GeoSnaps intitulée Mise à jour du champ d’affichage dans ArcGIS Pro à l’aide de Python.

Ce billet a été écrit en anglais par Alex Moore et peut être consulté ici.