Migration d’arcpy.mapping vers ArcGIS Pro

Les scripts Arcpy.mapping écrits avec ArcGIS Desktop doivent être modifiés avant de les exécuter dans ArcGIS Pro. Les modifications sont simples et logiques et peuvent généralement s'accomplir avec des opérations de recherche et remplacement. Les sections ci-dessous soulignent un grand nombre des modifications importantes apportées à l'API arcpy.mp, ainsi que les nouvelles fonctionnalités qui ont été ajoutées.

Python 3

ArcGIS Pro utilise Python 3. Vous pouvez être amené à modifier certaines syntaxes Python standard. Pour plus d’informations, reportez-vous à la rubrique Migration de Python de la version 10.x vers ArcGIS Pro.

Arcpy.mapping est maintenant arcpy.mp

Les modifications introduites avec ArcGIS Pro ont été assez importantes pour mériter une modification de l’espace de nom du module. Le nouveau nom offre une plus grande souplesse en ce qui concerne les fonctionnalités que arcpy.mp offre. Par exemple, outre l’automatisation de cartes, arcpy.mp fournit également une gestion au niveau du projet.

Fichier de projet ArcGIS Pro (.aprx)

La première modification, et également la plus évidente, réside dans le fait que arcpy.mp dans ArcGIS Pro doit référencer un fichier de projet (.aprx) au lieu d’une carte (.mxd). Vous devez par conséquent remplacer arcpy.mapping.MapDocument(mxd_path) par arcpy.mp.ArcGISProject(aprx_path). La fonction ArcGISProject est désormais un objet ArcGISProject qui constitue un point d’entrée principal répondant à la plupart des besoins arcpy.mp en automatisation. La classe ArcGISProject comporte également une méthode importDocument qui vous permet d’automatiser l’importation de fichiers ArcMap (.mxd), ArcGlobe (.3dd), ArcScene (.sxd) et d’autres documents dans un projet.

Un grand nombre de fonctions de liste ont évolué

Un grand nombre de fonctions arcpy.mapping List autonomes sont devenues des méthodes sur les objets appropriés. Grâce à ce changement de conception, il est inutile de référencer constamment la carte en tant que premier paramètre et la nouvelle organisation bénéficie d’un flux orienté objet optimisé. Les exemples suivants montrent comment les fonctions List sont utilisées pour référencer les classes d’étiquettes d’une couche. Elles sont proches en termes de fonctionnalités, mais vous devrez modifier vos scripts ArcGIS Desktop existants.

Cet exemple montre comment référencer les classes d'étiquettes d'une couche avec ArcGIS Desktop.

mxd = arcpy.mapping.MapDocument("CURRENT")
df = arcpy.mapping.ListDataFrames(mxd, "Yosemite National Park")[0]
for lyr in arcpy.mapping.ListLayers(mxd, df):
    if lyr.supports("SHOWLABLES"):
        lblClasses = lyr.labelClasses

Cet exemple montre comment référencer les classes d'étiquettes d'une couche avec ArcGIS Pro.

p = arcpy.mp.ArcGISProject("CURRENT")
m = p.listMaps("Yosemite National Park")[0]
for lyr in m.listLayers():
    if lyr.supports("SHOWLABELS"):
       lblClasses = lyr.listLabelClasses()

Le diagramme suivant présente les classes qui font partie de arcpy.mp, ainsi que l’emplacement et le nom des fonctions ou des propriétés requises pour référencer une classe en particulier :

Vue d’ensemble arcpy.mp OMD

Les fonctions d'exportation ont évolué

Les fonctions d’exportation autonomes sont devenues des méthodes sur les objets Layout et MapFrame. Ce changement de conception sépare les différents jeux de paramètres disponibles en fonction de l'objet exporté. Par exemple, lorsque vous exportez une mise en page, il n’est pas logique d’inclure les informations du fichier de géoréférencement.

Les fonctions de gestion des couches ont évolué

Les fonctions de gestion des couches autonomes sont devenues des méthodes sur les objets Map et LayerFile Les méthodes sont notamment addLayer, addLayerToGroup, insertLayer, moveLayer, et removeLayer.

Les fichiers de couche ont changé

Les fichiers de couche créés avec ArcGIS Desktop comportent une extension .lyr et les fichiers de couche créés avec ArcGIS Pro comportent une extension .lyrx. La différence est notable. Les fichiers .lyr antérieurs stockent une seule couche ou un seul groupe de couches au niveau racine, même si un groupe de couches peut renfermer plusieurs couches ou groupes de couches. Les fichiers .lyrx plus récents peuvent stocker plusieurs couches et groupes de couches au niveau racine. La référence à un fichier .lyrx peut maintenant inclure une seule couche ou une liste de couches.

Les nouveaux objets Map, MapFrame et Camera endossent le rôle de la fenêtre cartographique

La structure ArcGIS Pro a introduit des fonctionnalités qui affectent votre façon d’interagir avec l’affichage de la carte et par conséquent, de nouveaux objets sont introduits. Ces nouveaux objets Map, MapFrame et Camera ont chacun un rôle spécifique et sont intégrés les uns aux autres.

Un objet Map dans ArcGIS Pro représente une collection de couches géographiques tabulaires et symbolisées et conserve les informations, telles qu’un système de coordonnées, les vues par défaut des données et diverses autres métadonnées. La seule façon de visualiser le contenu d’une carte est dans une fenêtre cartographique, en tant qu’onglet de l’application avec sa propre table des matières, ou dans une fenêtre cartographique sur une mise en page. La même carte peut s’afficher dans plusieurs vues cartographiques ou fenêtres cartographiques. Si une couche est ajoutée à une carte, toutes les vues cartographiques et fenêtres cartographiques qui référencent cette carte afficheront la couche ajoutée. Si vous souhaitez afficher une autre collection de couches ou tables dans différentes vues, vous devez créer et utiliser différentes cartes.

Un objet MapFrame est un élément Layout qui affiche les informations géographiques ajoutées à un objet Map. Il contrôle également la taille et la position de la fenêtre cartographique dans une mise en page. Plusieurs fenêtres cartographiques peuvent référencer la même carte.

Comme ArcGIS Pro intègre un affichage 2D et 3D, l’objet Camera est utilisé pour contrôler à la fois l’échelle et l’étendue des cartes 2D et la position de la caméra des cartes 3D dans une fenêtre cartographique.

Nouvel objet Layout

Un projet ArcGIS Pro prend en charge plusieurs mises en page. Par conséquent, un nouvel objet Layout a été ajouté et les mises en page peuvent être référencées à l’aide de la méthode listLayouts sur l’objet ArcGISProject. Chaque mise en page peut présenter des orientations et formats de page différents. Comme dans ArcGIS Desktop, vous pouvez accéder à chaque élément de mise en page à l’aide de la méthode listElements. Chacun de ces éléments possède une propriété visible qui vous permet de désactiver un élément au lieu de le retirer de la page.

L'application s'actualise toujours avec le mot-clé CURRENT

Lorsque vous utilisiez le mot-clé CURRENT dans la fenêtre Python avec ArcGIS Desktop, vous étiez parfois amené à appeler la méthode refreshActiveView pour forcer l’actualisation de l’écran. Ce n’est plus le cas avec ArcGIS Pro. Toutes les modifications apportées aux API arcpy.mp mettent directement à jour ArcGIS Pro.

La mise à jour des sources de données a changé

Les méthodes et paramètres de modification de la source de données d’une couche ou table ont changé. La conception optimisée permet de mieux gérer les connexions aux bases de données, ainsi que les autres sources de données qui peuvent être jointes ou associées. Pour plus d’informations, reportez-vous à la rubrique Mise à jour et correction des sources de données.