¿Las tareas de ArcGIS Pro son compatibles con las herramientas de Python Toolbox que operan en Map Frames?


10

¿Las tareas de ArcGIS Pro son compatibles con las herramientas de Python Toolbox que operan en Map Frames?

La razón por la que pregunto es que estoy atascado cuando intento hacer lo siguiente:

  1. Inicie ArcGIS Pro 1.1.1
  2. Cree un nuevo proyecto: llamé al mío TestProject y lo coloqué en C: \ Temp
  3. Use el panel Proyecto para Agregar conexión de carpeta a donde tenga un archivo de forma de los países del mundo de Natural Earth ()
  4. Arrastre y suelte ne_10m_admin_0_countries.shp en el mapa para crear una capa llamada ne_10m_admin_0_countries
  5. Insertar un nuevo diseño: utilicé A3 Horizontal
  6. Insertar un nuevo marco de mapa en el diseño
  7. En el panel Proyecto, cree una Nueva caja de herramientas de Python en la carpeta TestProject. Llamé a la mía TestPYT
  8. Haga clic derecho en TestPYT en el panel Proyecto para editarlo
  9. Reemplace el código con el siguiente para darle a Python Toolbox dos herramientas llamadas Chile y Suiza
  10. Guarde el script y actualice la caja de herramientas de Python para ver las dos nuevas herramientas
  11. Ejecute la herramienta Chile para ver el marco del mapa en el diseño zoom a Chile
  12. Ejecute la herramienta Suiza para ver el marco del mapa en el diseño zoom a Suiza
  13. Insertar un nuevo elemento de tarea
  14. En el elemento de tarea 1 inserte una nueva tarea y llámela Chile
  15. En la tarea de Chile, inserte un Nuevo paso y llámelo Zoom a Chile
  16. Para Step Behavior, hazlo automático y oculto
  17. En la pestaña Acciones, trato de configurar Comando / Geoprocesamiento como una herramienta de geoprocesamiento eligiendo la herramienta Chile

ingrese la descripción de la imagen aquí

  1. Parece que se queda cuando elijo OK

ingrese la descripción de la imagen aquí

  1. Parece "perder" la herramienta cuando hago clic en Listo

Específicamente, lo que estoy tratando de crear es un flujo de trabajo con dos tareas en las que puedo hacer clic para Zoom to Chile o Zoom to Switzerland, pero estoy atascado en el paso 19 anterior.

Lo que intento hacer en general es encontrar un ArcPy (para ArcGIS Pro) equivalente a una barra de herramientas de Python AddIn en ArcPy (para la arquitectura ArcGIS 10.x) con dos botones (Chile y Suiza) para acercar a esos países.

He realizado este procedimiento varias veces, y en una ocasión pude hacer que las herramientas de Chile y Suiza se mantuvieran como tareas, pero aun así no parecían interactuar con el Marco del mapa (sin error, simplemente sin cambio a lo que se mostraba en el marco del mapa cuando se ejecutaban), a pesar de que las herramientas cuando se ejecutaban desde Python Toolbox continuaban funcionando sin problemas.

ingrese la descripción de la imagen aquí

Este es el código para copiar / pegar en Python Toolbox (TestPYT).

import arcpy


class Toolbox(object):
    def __init__(self):
        """Define the toolbox (the name of the toolbox is the name of the
        .pyt file)."""
        self.label = "Toolbox"
        self.alias = ""

        # List of tool classes associated with this toolbox
        self.tools = [Slide1,Slide2]


class Slide1(object):
    def __init__(self):
        """Define the tool (tool name is the name of the class)."""
        self.label = "Chile"
        self.description = ""
        self.canRunInBackground = False

    def getParameterInfo(self):
        """Define parameter definitions"""
        params = None
        return params

    def isLicensed(self):
        """Set whether tool is licensed to execute."""
        return True

    def updateParameters(self, parameters):
        """Modify the values and properties of parameters before internal
        validation is performed.  This method is called whenever a parameter
        has been changed."""
        return

    def updateMessages(self, parameters):
        """Modify the messages created by internal validation for each tool
        parameter.  This method is called after internal validation."""
        return

    def execute(self, parameters, messages):
        """The source code of the tool."""
        aprx = arcpy.mp.ArcGISProject("CURRENT")
        mapx = aprx.listMaps()[0]
        lyt = aprx.listLayouts()[0]
        lyr = mapx.listLayers("ne_10m_admin_0_countries")[0]
        lyr.definitionQuery = '"ADMIN" = ' + "'Chile'"
        mFrame = lyt.listElements("MAPFRAME_ELEMENT")[0]
        mFrame.camera.setExtent(mFrame.getLayerExtent(lyr, False, True))
        lyr.definitionQuery = ""
        return

class Slide2(object):
    def __init__(self):
        """Define the tool (tool name is the name of the class)."""
        self.label = "Switzerland"
        self.description = ""
        self.canRunInBackground = False

    def getParameterInfo(self):
        """Define parameter definitions"""
        params = None
        return params

    def isLicensed(self):
        """Set whether tool is licensed to execute."""
        return True

    def updateParameters(self, parameters):
        """Modify the values and properties of parameters before internal
        validation is performed.  This method is called whenever a parameter
        has been changed."""
        return

    def updateMessages(self, parameters):
        """Modify the messages created by internal validation for each tool
        parameter.  This method is called after internal validation."""
        return

    def execute(self, parameters, messages):
        """The source code of the tool."""
        aprx = arcpy.mp.ArcGISProject("CURRENT")
        mapx = aprx.listMaps()[0]
        lyt = aprx.listLayouts()[0]
        lyr = mapx.listLayers("ne_10m_admin_0_countries")[0]
        lyr.definitionQuery = '"ADMIN" = ' + "'Switzerland'"
        mFrame = lyt.listElements("MAPFRAME_ELEMENT")[0]
        mFrame.camera.setExtent(mFrame.getLayerExtent(lyr, False, True))
        lyr.definitionQuery = ""
        return

Esto no parece funcionar con ninguna caja de herramientas de Python, independientemente de lo que esté haciendo. También vale la pena señalar que los parámetros de la caja de herramientas no se muestran cuando se selecciona la herramienta y se habilita la inserción (en otras palabras, en realidad no está cargando la caja de herramientas correctamente).
Evil Genius

Respuestas:


4

* Las cajas de herramientas .PYT no son compatibles con las tareas en ArcGIS Pro 1.0 y 1.1.

Sin embargo, han sido compatibles desde ArcGIS Pro 1.2.

Como solución alternativa, intente insertar su herramienta en un modelo de geoprocesamiento y luego utilice un paso de tarea para llamar al modelo.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.