Чи підтримують завдання 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" створіть New Python Toolbox в папці TestProject - я назвав mine TestPYT
  8. Клацніть правою кнопкою миші на TestPYT на панелі проектів, щоб змінити його
  9. Замініть код на наведений нижче, щоб дати інструменту Python Toolbox два інструменти під назвою Чилі та Швейцарія
  10. Збережіть сценарій та оновіть панель інструментів Python, щоб побачити два нові інструменти
  11. Запустіть інструмент «Чилі», щоб побачити карту карти на масштабі макета до Чилі
  12. Запустіть інструмент Швейцарія, щоб побачити карту карти на масштабі макета до Швейцарії
  13. Вставте новий елемент завдання
  14. У пункт 1 завдання вставте нове завдання і назвіть його Чилі
  15. У завдання Чилі вставити новий крок і назвати його Збільшити Чилі
  16. Для крокової поведінки зробіть це автоматичним і прихованим
  17. На вкладці "Дії" я намагаюся встановити команду / геопроцедуру як інструмент геопроцедури, вибираючи інструмент "Чилі"

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

  1. Це, здається, прилипає, коли я обираю ОК

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

  1. Здається, "загубила" інструмент, коли натискаю "Готово"

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

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

Я кілька разів пережив цю процедуру, і одного разу мені вдалося отримати інструменти Чилі та Швейцарії, щоб виконати завдання, але навіть тоді вони, здавалося, не взаємоділи з картографічною рамкою (без помилок, просто ніяких змін до того, що відображалося в картографічному кадрі під час їх запуску), навіть незважаючи на те, що інструменти під час запуску з Python Toolbox продовжували працювати без проблем.

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

Це код для копіювання / вставки в панель інструментів Python (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.