Поддерживают ли задачи ArcGIS Pro инструменты Python Toolbox, которые работают с фреймами карт?


10

Поддерживают ли задачи ArcGIS Pro инструменты Python Toolbox, которые работают с фреймами карт?

Причина, по которой я спрашиваю, заключается в том, что я застреваю при попытке сделать следующее:

  1. Запустите ArcGIS Pro 1.1.1
  2. Создайте новый проект - я назвал мой TestProject и поместил в C: \ Temp
  3. Используйте панель проекта, чтобы добавить подключение к папке, где у меня есть шейп-файл стран мира из Natural Earth ()
  4. Перетащите ne_10m_admin_0_countries.shp на карту, чтобы создать слой с именем ne_10m_admin_0_countries.
  5. Вставьте новый макет - я использовал A3 Landscape
  6. Вставьте новый фрейм карты в макет
  7. В панели Project создайте новый Python Toolbox в папке TestProject - я назвал мой TestPYT
  8. Щелкните правой кнопкой мыши TestPYT на панели проекта, чтобы изменить его.
  9. Замените код на приведенный ниже, чтобы дать Python Toolbox два инструмента под названием Чили и Швейцария.
  10. Сохраните скрипт и обновите панель инструментов Python, чтобы увидеть два новых инструмента
  11. Запустите инструмент Чили, чтобы увидеть рамку карты на макете, чтобы увеличить масштаб до Чили.
  12. Запустите инструмент Швейцария, чтобы увидеть рамку карты на макете, чтобы увеличить масштаб до Швейцарии.
  13. Вставить новый элемент задачи
  14. В пункте 1 задачи вставьте новую задачу и назовите ее Чили
  15. В задаче Чили вставьте новый шаг и назовите его Zoom to Chile
  16. Для поведения шага сделайте это Автоматическим и Скрытым
  17. На вкладке Действия я пытаюсь установить Команду / Геообработка как инструмент геообработки, выбрав инструмент Чили.

введите описание изображения здесь

  1. Кажется, придерживаться, когда я выбираю ОК

введите описание изображения здесь

  1. Кажется, что "потерять" инструмент, когда я нажимаю Готово

В частности, я пытаюсь создать рабочий процесс с двумя задачами, по которым я могу щелкнуть, чтобы увеличить масштаб до Чили или увеличить до Швейцарии, но я застрял на шаге 19 выше.

В общем, я пытаюсь найти ArcPy (для ArcGIS Pro), эквивалентный панели инструментов Python AddIn в ArcPy (для архитектуры ArcGIS 10.x) с двумя кнопками (Чили и Швейцария) для масштабирования в этих странах.

Я проходил эту процедуру несколько раз, и в одном случае мне удалось заставить инструменты Чили и Швейцарии придерживаться задач, но даже тогда они, похоже, не взаимодействовали с фреймом карты (без ошибок, просто без изменений к тому, что отображалось во фрейме карты, когда они запускались), хотя инструменты при запуске из панели инструментов Python продолжали работать без проблем.

введите описание изображения здесь

Это код для копирования / вставки в 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

Это не работает с любым набором инструментов Python, независимо от того, что он делает. Также стоит отметить, что параметры панели инструментов не отображаются при выборе инструмента и включении встраивания (другими словами, на самом деле он не загружает панель инструментов должным образом).
Злой гений

Ответы:


4

Наборы инструментов * .PYT не поддерживаются для задач в ArcGIS Pro 1.0 и 1.1.

Тем не менее, они поддерживаются начиная с ArcGIS Pro 1.2.

В качестве обходного пути попробуйте вставить свой инструмент в модель геообработки, а затем используйте шаг задачи для вызова модели.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.