Hacer ArcGIS Pro tareas de soporte de caja de herramientas de Python herramientas que operan en el Mapa Marcos?
La razón que pido es que estoy atascado al intentar hacer lo siguiente:
- Inicio De ArcGIS Pro 1.1.1
- Crear un nuevo proyecto - me llama la mina TestProject y puesto en C:\Temp
- Utilice el panel Proyecto para Agregar Conexión de Carpetas donde tengo un shapefile de los países del mundo Natural de la Tierra ()
- Arrastrar y soltar ne_10m_admin_0_countries.shp en el Mapa para crear una capa llamada ne_10m_admin_0_countries
- Insertar un nuevo Diseño - he utilizado A3 horizontal
- Insertar un nuevo Marco de Mapas en el Diseño
- En el panel Proyecto de crear una Nueva caja de herramientas de Python en el TestProject carpeta - me llama la mina TestPYT
- Haga clic derecho en TestPYT en el panel Proyecto para editarlo
- Reemplace el código con la de abajo a dar a la caja de herramientas de Python dos herramientas llamado Chile y Suiza
- Guardar la secuencia de comandos y la Actualización de la caja de herramientas de Python para ver las dos nuevas herramientas de
- Ejecute la herramienta de Chile para ver el mapa de marco en el diseño de zoom para Chile
- Ejecutar la Suiza herramienta para ver el mapa de marco en el diseño de zoom a Suiza
- Insertar un Nuevo Elemento de Tarea
- En el Elemento de Tarea 1 insertar una Nueva Tarea y llamar a Chile
- En el Chile de la tarea de insertar un Nuevo Paso y llamar a Acercar a Chile
- Para el Paso de Comportamiento de modo Automático, y Oculto
- En la ficha Acciones, trato de Comando set/Geoprocesamiento como una Herramienta de Geoprocesamiento la elección de la herramienta de Chile
- Parece pegarse a la hora de elegir OK
- Se parece a "perder" la herramienta cuando hago clic en Hecho
Específicamente, lo que estoy tratando de crear un flujo de trabajo con dos tareas que puedo hacer clic en Zoom a Chile o Zoom a Suiza, pero estoy atascado en el paso 19.
Lo que estoy tratando de hacer en general es encontrar un ArcPy (para ArcGIS Pro) equivalente a la de una serpiente Pitón de Complemento de la barra de herramientas en ArcPy (para ArcGIS 10.x de la arquitectura), con dos botones (Chile y Suiza) para acercar a esos países.
He corrido a través de este procedimiento un par de veces, y en una ocasión yo era capaz de conseguir el Chile y Suiza herramientas para el palo como de las tareas, pero que aun así, no parece interactuar con el Mapa de Marco (ningún error, simplemente no hay cambio a lo que se muestra en el Mapa de Marco cuando se toparon), aunque las herramientas cuando se ejecuta desde la caja de herramientas de Python continuó trabajando sin problema.
Este es el código para copiar/pegar en la caja de herramientas de 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