As tarefas do ArcGIS Pro suportam as ferramentas Python Toolbox que operam nos quadros de mapas?


10

As tarefas do ArcGIS Pro suportam as ferramentas Python Toolbox que operam nos quadros de mapas?

O motivo pelo qual pergunto é que estou preso ao tentar fazer o seguinte:

  1. Iniciar o ArcGIS Pro 1.1.1
  2. Crie um novo projeto - chamei o meu TestProject e coloquei em C: \ Temp
  3. Use o painel Projeto para adicionar conexão de pasta para onde tenho um arquivo de forma dos países do mundo da Terra natural ()
  4. Arraste e solte ne_10m_admin_0_countries.shp no mapa para criar a camada chamada ne_10m_admin_0_countries
  5. Inserir um novo layout - usei o A3 Landscape
  6. Inserir um novo quadro de mapa no layout
  7. No painel Projeto, crie uma Nova Caixa de Ferramentas Python na pasta TestProject - chamei de mine TestPYT
  8. Clique com o botão direito do mouse em TestPYT no painel Projeto para editá-lo
  9. Substitua o código pelo código abaixo para fornecer à Python Toolbox duas ferramentas chamadas Chile e Suíça
  10. Salve o script e atualize a Python Toolbox para ver as duas novas ferramentas
  11. Execute a ferramenta Chile para ver o quadro do mapa no zoom do layout para o Chile
  12. Execute a ferramenta Suíça para ver o quadro do mapa no zoom do layout para a Suíça
  13. Inserir um novo item de tarefa
  14. No item de tarefa 1, insira uma nova tarefa e chame-a de Chile
  15. Na tarefa Chile, insira uma Nova Etapa e chame-a de Zoom para o Chile
  16. Para Comportamento por Etapas, torne-o Automático e Oculto
  17. Na guia Ações, tento definir Comando / Geoprocessamento como uma Ferramenta de Geoprocessamento, escolhendo a ferramenta Chile

insira a descrição da imagem aqui

  1. Parece grudar quando escolho OK

insira a descrição da imagem aqui

  1. Parece "perder" a ferramenta quando clico em Concluído

Especificamente, o que estou tentando criar é um fluxo de trabalho com duas tarefas nas quais posso clicar em Zoom para o Chile ou Zoom para a Suíça, mas estou preso na etapa 19 acima.

O que estou tentando fazer no geral é encontrar um ArcPy (para ArcGIS Pro) equivalente a uma barra de ferramentas Python AddIn no ArcPy (para arquitetura ArcGIS 10.x) com dois botões (Chile e Suíça) para aplicar zoom nesses países.

Eu executei esse procedimento algumas vezes e, em uma ocasião, consegui fazer com que as ferramentas do Chile e da Suíça permanecessem como tarefas, mas mesmo assim elas não pareciam interagir com o Map Frame (sem erros, apenas sem alterações) para o que foi exibido no Map Frame quando eles foram executados), mesmo que as ferramentas executadas na Python Toolbox continuassem funcionando sem problemas.

insira a descrição da imagem aqui

Este é o código para copiar / colar na 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

Parece não funcionar com nenhuma caixa de ferramentas Python, independentemente do que esteja fazendo. Também pode ser interessante notar que os parâmetros da caixa de ferramentas não são mostrados quando a ferramenta é selecionada e a incorporação está ativada (em outras palavras, na verdade, não está carregando a caixa de ferramentas corretamente).
Evil Genius

Respostas:


4

* As caixas de ferramentas .PYT não são suportadas para tarefas no ArcGIS Pro 1.0 e 1.1.

No entanto, eles são suportados desde o ArcGIS Pro 1.2.

Como solução alternativa, tente inserir sua ferramenta em um modelo de geoprocessamento e use uma etapa da tarefa para chamar o modelo.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.