Czy zadania ArcGIS Pro obsługują narzędzia Python Toolbox działające na ramkach map?

10

Czy zadania ArcGIS Pro obsługują narzędzia Python Toolbox działające na ramkach map?

Powodem, dla którego pytam, jest to, że utknąłem, próbując wykonać następujące czynności:

  1. Uruchom ArcGIS Pro 1.1.1
  2. Utwórz nowy projekt - nazwałem mój TestProject i umieściłem w C: \ Temp
  3. Użyj okienka Projekt, aby dodać połączenie folderów do miejsca, w którym mam plik kształtów krajów świata z Natural Earth ()
  4. Przeciągnij i upuść ne_10m_admin_0_countries.shp na mapę, aby utworzyć warstwę o nazwie ne_10m_admin_0_countries
  5. Wstaw nowy układ - użyłem A3 Poziomo
  6. Wstaw nową ramkę mapy w układzie
  7. W okienku projektu utwórz nowy zestaw narzędzi Python w folderze TestProject - nazwałem mój TestPYT
  8. Kliknij prawym przyciskiem myszy TestPYT w panelu Projekt, aby go edytować
  9. Zamień kod na poniższy, aby dać Python Toolbox dwa narzędzia o nazwie Chile i Szwajcaria
  10. Zapisz skrypt i Odśwież Python Toolbox, aby zobaczyć dwa nowe narzędzia
  11. Uruchom narzędzie Chile, aby zobaczyć ramkę mapy na powiększeniu układu do Chile
  12. Uruchom narzędzie Szwajcaria, aby zobaczyć ramkę mapy na powiększeniu układu do Szwajcarii
  13. Wstaw nowy element zadania
  14. W elemencie zadania 1 wstaw nowe zadanie i nazwij je Chile
  15. W zadaniu Chile wstaw nowy krok i nazwij go Zoom do Chile
  16. Dla Step Behavior ustaw automatyczne i ukryte
  17. Na zakładce Działania próbuję ustawić Command / Geoprocessing jako narzędzie Geoprocessing, wybierając narzędzie Chile

wprowadź opis zdjęcia tutaj

  1. Wygląda na to, że się trzyma, kiedy wybieram OK

wprowadź opis zdjęcia tutaj

  1. Wydaje się, że „gubię” narzędzie, kiedy kliknę Gotowe

W szczególności staram się stworzyć przepływ pracy z dwoma zadaniami, które mogę kliknąć, aby powiększyć do Chile lub powiększyć do Szwajcarii, ale utknąłem w kroku 19 powyżej.

To, co staram się ogólnie zrobić, to znaleźć ArcPy (dla ArcGIS Pro) odpowiadający paskowi narzędzi Python AddIn w ArcPy (dla architektury ArcGIS 10.x) z dwoma przyciskami (Chile i Szwajcarią), aby przybliżyć się do tych krajów.

Przeszedłem tę procedurę kilka razy i raz udało mi się sprawić, by narzędzia Chile i Szwajcarii zachowywały się jak zadania, ale nawet wtedy nie wydawały się wchodzić w interakcje z ramką mapy (bez błędu, tylko bez zmian do tego, co było wyświetlane w ramce mapy podczas ich uruchamiania), mimo że narzędzia uruchomione z Python Toolbox nadal działały bez problemu.

wprowadź opis zdjęcia tutaj

Jest to kod do skopiowania / wklejenia do 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
PolyGeo
źródło
Wydaje się, że to nie działa z żadnym zestawem narzędzi Python, niezależnie od tego, co robi. Warto również zauważyć, że parametry przybornika nie są wyświetlane, gdy narzędzie jest wybrane i osadzone jest włączone (innymi słowy, nie ładuje właściwie przybornika).
Geniusz zła,

Odpowiedzi:

4

* Przyborniki PYT nie są obsługiwane dla zadań w ArcGIS Pro 1.0 i 1.1.

Są one jednak obsługiwane od ArcGIS Pro 1.2.

Aby obejść ten problem, spróbuj wstawić narzędzie do modelu geoprzetwarzania, a następnie użyj kroku zadania, aby wywołać model.

Szyper
źródło