Le attività di ArcGIS Pro supportano gli strumenti di Python Toolbox che funzionano su Map Frames?


10

Le attività di ArcGIS Pro supportano gli strumenti di Python Toolbox che funzionano su Map Frames?

Il motivo per cui chiedo è che sono bloccato quando provo a fare quanto segue:

  1. Avviare ArcGIS Pro 1.1.1
  2. Crea un nuovo progetto - Ho chiamato il mio TestProject e inserito in C: \ Temp
  3. Utilizzare il riquadro Progetto per aggiungere la connessione cartella a dove ho uno shapefile dei paesi del mondo da Natural Earth ()
  4. Trascina e rilascia ne_10m_admin_0_countries.shp nella mappa per creare un layer chiamato ne_10m_admin_0_countries
  5. Inserisci un nuovo layout: ho usato A3 Orizzontale
  6. Inserisci un nuovo riquadro della mappa nel layout
  7. Nel riquadro Progetto crea una nuova casella degli strumenti Python nella cartella TestProject - ho chiamato il mio TestPYT
  8. Fare clic con il tasto destro su TestPYT nel riquadro Progetto per modificarlo
  9. Sostituisci il codice con quello sotto per dare a Python Toolbox due strumenti chiamati Cile e Svizzera
  10. Salvare lo script e aggiornare la casella degli strumenti di Python per vedere i due nuovi strumenti
  11. Esegui lo strumento Cile per visualizzare la cornice della mappa sullo zoom del layout in Cile
  12. Esegui lo strumento Svizzera per visualizzare la cornice della mappa sullo zoom del layout in Svizzera
  13. Inserisci un nuovo elemento di attività
  14. Nell'elemento attività 1 inserisci una nuova attività e chiamala Cile
  15. Nell'attività Cile inserisci un nuovo passaggio e chiamalo Zoom su Cile
  16. Per Step Behavior rendilo automatico e nascosto
  17. Nella scheda Azioni cerco di impostare Command / Geoprocessing come strumento di geoprocessing scegliendo lo strumento Cile

inserisci qui la descrizione dell'immagine

  1. Sembra rimanere quando ho scelto OK

inserisci qui la descrizione dell'immagine

  1. Sembra "perdere" lo strumento quando faccio clic su Fine

In particolare, ciò che sto cercando di creare è un flusso di lavoro con due attività che posso fare clic su Zoom su Cile o Zoom su Svizzera, ma sono bloccato al passaggio 19 sopra.

Quello che sto cercando di fare nel complesso è trovare un ArcPy (per ArcGIS Pro) equivalente a una barra degli strumenti Python AddIn in ArcPy (per l'architettura ArcGIS 10.x) con due pulsanti (Cile e Svizzera) per zoomare su quei paesi.

Ho eseguito questa procedura alcune volte, e in un'occasione sono stato in grado di far sì che gli strumenti di Cile e Svizzera si conficcassero come compiti, ma anche allora non sembravano interagire con il Frame della mappa (nessun errore, solo nessun cambiamento a ciò che è stato visualizzato nel Map Frame quando sono stati eseguiti), anche se gli strumenti eseguiti da Python Toolbox hanno continuato a funzionare senza problemi.

inserisci qui la descrizione dell'immagine

Questo è il codice da copiare / incollare in 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

Questo non sembra funzionare con nessun toolbox di Python, indipendentemente da ciò che sta facendo. Inoltre, vale la pena notare che i parametri della casella degli strumenti non vengono visualizzati quando lo strumento è selezionato e l'incorporamento è abilitato (in altre parole, in realtà non sta caricando correttamente la casella degli strumenti).
Evil Genius,

Risposte:


4

* Le cassette degli strumenti .PYT non sono supportate per le attività in ArcGIS Pro 1.0 e 1.1.

Tuttavia, sono stati supportati da ArcGIS Pro 1.2.

Per ovviare al problema, provare a inserire lo strumento in un modello di geoprocessing, quindi utilizzare un passaggio di attività per chiamare il modello.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.