Migrar desde arcpy.mapping a ArcGIS Pro

Es necesario modificar los scripts de Arcpy.mapping creados con ArcGIS Desktop antes de ejecutarlos en ArcGIS Pro. Los cambios son directos y lógicos y normalmente se pueden realizar con las operaciones de buscar y reemplazar. En las secciones de abajo se resaltan muchos de los cambios significativos en la API arcpy.mp, así como características nuevas que se han agregado.

Python 3

ArcGIS Pro utiliza Python 3. Es posible que tenga que modificar cierta sintaxis estándar de Python. Para obtener más información, consulte Migración de Python desde 10.x a ArcGIS Pro.

Arcpy.mapping ahora es arcpy.mp

Los cambios introducidos en ArcGIS Pro fueron lo suficientemente significativos como para merecer un cambio en el espacio del nombre del módulo. El nombre nuevo ofrece más flexibilidad en cuanto a las prestaciones que ofrece arcpy.mp. Por ejemplo, además de la automatización de mapas, arcpy.mp también proporciona una administración a nivel de proyecto.

El archivo de proyecto ArcGIS Pro (.aprx)

El primer cambio (y el más obvio) es que arcpy.mp en ArcGIS Pro necesita 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 ahora es un objeto ArcGISProject, que constituye el 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 hacer 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()

En el diagrama siguiente se muestran las clases que forman parte de arcpy.mp, así como la ubicación y el nombre de las funciones o propiedades necesarias para hacer referencia a una determinada clase:

Descripción 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 y MapFrame. 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 un diseño, no tiene sentido incluir la información del archivo de georreferenciación.

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. Los métodos incluyen addLayer, addLayerToGroup, insertLayer, moveLayer y removeLayer.

Los archivos de capa han cambiado

Los archivos de capa creados con ArcGIS Desktop tienen la extensión .lyr y los archivos de capa creados con ArcGIS Pro tienen la extensión .lyrx. Hay una diferencia notable. Los antiguos archivos .lyr 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 nuevos objetos de Mapa, MapFrame y Cámara sustituyen al rol de marco de datos

El marco de ArcGIS Pro ha introducido características que afectan al modo de interactuar con las visualizaciones del mapa y, por lo tanto, se están introduciendo objetos nuevos. Estos nuevos objetos Map, MapFrame y Camera se utilizan para un rol específico y se integran entre sí.

Un objeto Map en ArcGIS Pro representa un conjunto de capas tabulares y geográficas simbolizadas y también se mantiene información como el sistema de coordenadas, las vistas predeterminadas de los datos y muchos otros metadatos. 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 de Diseño que muestra la información geográfica agregada a 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.

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

Un nuevo objeto de Diseño

Un proyecto de ArcGIS Pro admite varios diseños. Como resultado, se agregó un nuevo objeto Layout y se puede hacer referencia a los diseños con 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 obtener los elementos de diseño individuales utilizando el método listElements. Cada uno de estos elementos tiene una propiedad visible que le permite desactivar un elemento en lugar de tener que sacarlo de la página.

La aplicación siempre se actualiza cuando se utiliza CURRENT

Cuando 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 API de arcpy.mp 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.