20 votos

Directrices para la organización de cajas de Herramientas de Python (.pyt) en ArcGIS

Para uno de mis tareas necesito para crear una caja de herramientas con tres herramientas (secuencias de comandos de python).

En lugar de ordinario tbx me he decidido a escribir la caja de herramientas de Python (pyt).

Todo está claro, excepto la "buena" forma de organizar el código.

Como tengo tres herramientas no es una buena manera para que los guarde en un archivo (pyt). Así que, he decidido mantener cada herramienta en un aparte .py archivo.

Aquí hay un problema: ¿cuál es la buena manera de organizar varios archivos con PYT para la distribución o despliegue en ArcGIS for Server? Debo mantenerlos en el mismo nivel con PYT archivo o debo colocarlos en algún subdirectorio (es decir, "Herramientas")?

Puede recomendar a cualquier Esri pautas de referencia o "big PYT caja de herramientas" de la muestra?

Tengo no encuentro nada sobre este tema. En la versión 10.0 había llamado ToolShare estructura de carpetas que yo he utilizado.

Esto es más una cuestión de estilo de codificación. Porque la idea de crear una PYT archivo con 500 a 1000 o más líneas de código no se ven bien para mí y creo que no es "python".

Gracias!

18voto

Lucas Puntos 128

Eche un vistazo a este hilo en el ArcGIS foro. Básicamente, sólo tiene que utilizar el estándar de los módulos de python o de una estructura de paquete de importación y sus herramientas en la caja de herramientas de python.

Algo así como:

#  \--SomeDir
#     |  toolbox.pyt
#     \--toolpackage
#        |  __init__.py
#        |  script_a.py
#        |  script_b.py


#----------------------------
#The .pyt file
#----------------------------

import arcpy
import toolpackage.script_a.Tool1 as Tool1
import toolpackage.script_a.Tool2 as Tool2
import toolpackage.script_b.Tool3 as Tool3

class Toolbox(object):
    def __init__(self):
        """Define the toolbox (the name of the toolbox is the name of the
        .pyt file)."""
        self.label = "MultiTool Toolbox"
        self.alias = "mtt"

        # List of tool classes associated with this toolbox
        self.tools = [Tool1, Tool2, Tool3]

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X