Migrar desde arcpy.mapping a ArcGIS Pro

Los scripts de Arcpy.mapping creados con ArcGIS Desktop deben modificarse antes de poder ejecutarlos en ArcGIS Pro. Los cambios son sencillos y normalmente pueden realizarse con operaciones de buscar y reemplazar. Las secciones siguientes destacan muchos de los cambios significativos en la API arcpy.mp, así como las nuevas entidades.

Python 3

ArcGIS Pro utiliza Python 3. Puede que tenga que modificar alguna sintaxis estándar de Python. Para más información, consulte Migración de Python de 10.x a ArcGIS Pro.

Arcpy.mapping ahora es arcpy.mp

Los cambios introducidos con ArcGIS Pro eran lo suficientemente significativos como para merecer un cambio en el espacio del nombre del módulo. El nuevo nombre proporciona más flexibilidad en cuanto a las funcionalidades de arcpy.mp. Por ejemplo, además de la automatización de mapas, arcpy.mp también proporciona administración en el nivel de proyecto y la posibilidad de crear objetos, lo que no era posible en arcpy.mapping.

El archivo de proyecto de ArcGIS Pro (.aprx)

El primer cambio, y el más obvio, es que arcpy.mp en ArcGIS Pro debe hacer referencia a un archivo de proyecto (.aprx) en lugar de a un documento de mapa (.mxd). Por lo tanto, tiene que reemplazar arcpy.mapping.MapDocument(mxd_path) por arcpy.mp.ArcGISProject(aprx_path). La función ArcGISProject devuelve ahora un objeto ArcGISProject, que es un punto de entrada principal para la mayoría de las necesidades de automatización de arcpy.mp. La clase ArcGISProject también tiene un método importDocument que permite automatizar la importación de un mapa (.mxd), globo (.3dd), escena (.sxd) y otros archivos de documento a un proyecto.

Muchas de las funciones de la lista han cambiado

Muchas de las funciones independientes de arcpy.mapping List ahora son métodos en los objetos adecuados. El cambio de diseño ha eliminado la necesidad de hacer referencia continuamente al documento de mapa como primer parámetro y ahora la nueva organización cuenta con un flujo mejor orientado al objeto. En los ejemplos siguientes se muestra cómo se utilizan las funciones de List para hacer referencia a las clases de etiqueta de una capa. Son similares en términos de funcionalidad, pero requieren cambios en los scripts de ArcGIS Desktop existentes.

En este ejemplo se muestra cómo se hace referencia a las clases de etiqueta de una capa utilizando 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

En este ejemplo se muestra cómo se hace referencia a las clases de etiqueta de una capa utilizando 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()

El siguiente diagrama muestra algunas de las clases más comunes de las que forman parte de arcpy.mp y la ubicación y el nombre de las funciones o propiedades necesarias para hacer referencia a una clase concreta. El diagrama es solo un ejemplo y no muestra un conjunto completo de objetos. Los dos principales puntos de entrada a los objetos son a través de la clase de ArcGISProject o de la clase LayerFile.

Vista general de OMD de arcpy.mp

Las funciones de exportación han cambiado

Las funciones de exportación independientes ahora son métodos en los objetos Layout, MapFrame, MapSeries y MapView. El cambio de diseño separa los distintos conjuntos de parámetros que están disponibles según el objeto que se exporta. Por ejemplo, al exportar una vista de mapa, hay que especificar la anchura y la altura, pero con un diseño, el tamaño se tiene en cuenta automáticamente.

Las funciones de gestión de capas han cambiado

Las funciones de administración de capas independientes ahora son métodos en los objetos Map y LayerFile. Algunos de esos métodos incluyen addLayer, addLayerToGroup, insertLayer, moveLayer y removeLayer.

Los archivos de capa han cambiado

Los archivos de capa creados con ArcGIS Desktop tienen una extensión .lyr, y los archivos de capa creados con ArcGIS Pro tienen una extensión .lyrx. Hay una diferencia notable. Los antiguos .lyr archivos solo almacenan una única capa o una única capa de grupo en el nivel raíz, mientras que un grupo de capas puede contener varias capas o grupos de capas. Los archivos .lyrx nuevos pueden almacenar varias capas y capas de grupo en el nivel raíz. Una referencia a un .lyrx ahora puede ser una referencia a una única capa o a una lista de capas. Los archivos .lyrx más recientes también pueden incluir tablas independientes. Las tablas independientes también pueden exportarse a archivos .lyrx.

Los nuevos objetos Camera, Map, MapFrame y MapView sustituyen el rol del marco de datos

El marco de ArcGIS Pro ha introducido nuevas funcionalidades que afectan al modo de interactuar con las visualizaciones del mapa y, por lo tanto, se están introduciendo objetos nuevos. Estos nuevos objetos Camera, Map, MapFrame y MapView sirven cada uno para un rol específico y están integrados entre sí y, como resultado, usted tiene más control para diferentes escenarios.

Un objeto Map en ArcGIS Pro representa un conjunto de capas geográficas tabulares y simbolizadas y también conserva información como el sistema de coordenadas, las vistas predeterminadas de los datos y otros metadatos diversos. La única forma de visualizar el contenido de un mapa es en una vista de mapa, como una pestaña en la aplicación que tiene su propia tabla de contenido, o en un marco de mapa en un diseño de página. El mismo mapa se puede visualizar en varias vistas o marcos de mapa. Si se agrega una capa a un mapa, en todas las vistas y marcos de mapa que hagan referencia a ese mapa se mostrará la capa agregada. Si desea visualizar otro grupo de capas o tablas en vistas diferentes, tendrá que crear y utilizar mapas distintos.

Un objeto MapFrame es un elemento Layout que muestra la información geográfica agregada a un Map. También controla el tamaño y la colocación del marco de mapa en un diseño. Puede haber más de un marco de mapa que haga referencia al mismo mapa. Del mismo modo, un objeto MapView es una forma de ver el contenido de un mapa.

ArcGIS Pro integra la visualización 2D y 3D, y el objeto Camera se utiliza para controlar tanto la escala y extensión de los mapas en 2D como la posición de la cámara para los mapas en 3D en un marco de mapa.

Un nuevo objeto de Diseño

Un proyecto de ArcGIS Pro admite varios diseños. Como resultado, se ha agregado un nuevo objeto Layout y se puede hacer referencia a los diseños mediante el método listLayouts del objeto ArcGISProject. Cada diseño puede tener distintos tamaños y orientaciones de página. De forma similar a ArcGIS Desktop, puede llegar a los elementos individuales del diseño utilizando el método listElements. Cada uno de estos elementos tiene una propiedad visible que le permite desactivar un elemento en lugar de moverlo de la página.

La aplicación siempre se actualiza cuando se utiliza CURRENT

Cuando se utiliza la palabra clave CURRENT en la ventana de Python con ArcGIS Desktop, a veces había que llamar a refreshActiveView para forzar que la pantalla se refresque. Ahora ya no es necesario con ArcGIS Pro. Todos los cambios de la API arcpy.mp de actualizan directamente ArcGIS Pro.

La actualización de las fuentes de datos ha cambiado

Los métodos y parámetros para cambiar la fuente de datos de una capa o tabla han cambiado. El diseño mejorado permite administrar mejor las conexiones de base de datos, así como otras fuentes de datos que puedan unirse o relacionarse. Para obtener más información, consulte Actualizar y arreglar orígenes de datos.

Se pueden crear objetos

Anteriormente, con ArcGIS Desktop, los scripts se limitaban a automatizar los elementos existentes. A partir de la versión ArcGIS Pro 3.2, se pueden crear muchos objetos comunes. Se incluyen los métodos createMap y createLayout en el objeto ArcGISProject, así como muchos de los constructores de elementos de diseño como createMapFrame, createMapSurroundElement, createGraphicElement, createTextElement y más. También es posible crear objetos Bookmark a partir de la clase Map. Para más información, consulte los temas de las clases ArcGISProject, Layout y Map.