¿Por qué aprender / usar Python Toolboxes sobre Python Script Tools? [cerrado]

25

He escrito algunas cajas de herramientas de Python (que son nuevas en ArcGIS 10.1), pero todavía tengo que decidir si / cuándo debo escribirlas en lugar de Python Script Tools en una caja de herramientas estándar.

Pensé que la Ayuda en línea podría iluminarme cuando preceda algunos puntos con:

Una vez creadas, las herramientas en una caja de herramientas de Python brindan muchas ventajas

Sin embargo, las cinco ventajas enumeradas parecen estar sobre no poder usar Python para escribir herramientas, y ninguna parece especificar una ventaja de Python Toolboxes sobre Python Script Tools.

Las dos ventajas que se me ocurren son:

  • Ahora puedo escribir una herramienta Python "pura" en un solo script Python sin tener que conectarla a un diálogo creado por separado con su Validación de herramienta como si hubiera sido añadida pero estoy feliz de ser pragmático en lugar de puro.
  • Ahora podría usar código (Python o cualquier lenguaje capaz de escribir archivos de texto) para automatizar la escritura de cajas de herramientas de Python, pero todavía tengo que encontrar un requisito para hacerlo.

¿Estoy pasando por alto el convincente caso que llevó a Esri a proporcionar la capacidad de Python Toolbox y, de ser así, qué es?

PolyGeo
fuente

Respuestas:

34

Los dos son muy, muy cercanos en funcionalidad pero no completamente equivalentes.

Común para ambos

  • Incluye un conjunto de herramientas con un alias único para identificación
  • Puede llamar desde arcpy
  • Obtenga un cuadro de diálogo de herramienta de geoprocesamiento (esencialmente una IU completa) de forma gratuita para cada herramienta
  • Puede mantener todo el código de Python en un archivo (incrustando la fuente de la herramienta TBX, manteniendo toda la implementación en uno PYT) y distribuirlo por correo electrónico o unidades de red compartidas
  • Ejecutar siempre en primer plano para aplicaciones de escritorio. ¿Establecer "Ejecutar siempre en primer plano" dentro del código de ArcPy?

Exclusivo de los archivos TBX:

  • Puede incluir referencias a cajas de herramientas del sistema, herramientas COM personalizadas y herramientas .Net personalizadas
  • Las herramientas de Model Builder se pueden incluir en la caja de herramientas
  • La documentación de la herramienta se almacena dentro del archivo .tbx
  • Fácil interfaz de usuario del asistente para configurar parámetros y hacer el código de validación
  • Ejecutar Python Script en la propiedad de la herramienta de proceso
  • Desventaja: formato binario opaco, las versiones más nuevas de los archivos TBX deben guardarse explícitamente como versiones anteriores para funcionar en versiones anteriores del software, la interfaz de usuario puede ser un arma de doble filo, ya que debe cambiar entre páginas de propiedades para ver si se perdió un configuración (como rutas relativas)

Exclusivo de Python Toolboxes:

  • Texto sin formato, por lo que las cajas de herramientas se pueden tratar de la misma manera que cualquier otro código (útil en entornos donde se utilizan buenas herramientas de control de revisiones, ya que puede rastrear su historial de desarrollo; observe cuántos proyectos en GitHub usan PYTduranteTBX .)
  • Tener más control sobre ciertos tipos de parámetros (es decir, puede hacer tipos de datos compuestos y definir esquemas de tablas de valores)
  • tiene licencia propiedad se puede usar para deshabilitar una herramienta si un producto ("ArcInfo") o una extensión ("espacial") no está disponible.
  • La documentación de la herramienta se almacena en archivos XML en la misma carpeta que el .pyt
  • Desventaja: sin la interfaz de usuario del asistente para configurar los parámetros de la herramienta, significativamente más código de andamio en Python, el desarrollo de Toolbox se convierte en una tarea de desarrollo de software más formal que simplemente agregar un script de implementación. Recargar un pyt para cargar los cambios durante el desarrollo puede ser lento si pyt es grande (esto se puede evitar colocando herramientas en otros archivos e importando para que no necesiten volver a compilarse).

Hace un tiempo, cuando estaba trabajando en mi primera docena de PYTcajas de herramientas, me puse nervioso por la molestia de configurar una PYTpor primera vez, así que desarrollé una herramienta llamadatbx2pyt . Tomará una TBXcaja de herramientas y la convertirá en una PYTcon una pérdida mínima de código. De hecho, el PYTque los poderes fue primero a TBX. Esta puede ser una buena manera de hacer la transición de las herramientas existentes al formato Python Toolbox si así lo desea. Por lo menos, hace posible configurar los parámetros de sus herramientas usando la interfaz de usuario antes de cambiar al código.

Jason Scheirer
fuente
15

La sección de ayuda titulada Comparación de cajas de herramientas personalizadas y Python tiene una comparación bastante buena de por qué podría elegir una sobre la otra, aunque sería curioso escuchar las ventajas / desventajas del "mundo real" de aquellos con experiencia en la creación de cajas de herramientas de Python.

Una clara desventaja que leí es la incapacidad de mezclar / combinar modelos y scripts en Python Toolbox, como puede hacerlo en una Caja de herramientas personalizada estándar.

RyanDalton
fuente
11

Mi razón principal para inclinarme hacia las cajas de herramientas de Python es para el control de versiones y la administración del código fuente (consulte Aplicación del control de versiones a los modelos de ArcGIS ), seguido de cerca por la posibilidad de usar un editor de código / IDE con finalización de tabulación, expresiones regulares, bibliotecas de fragmentos, etc.

Sin embargo, como señala Ryan Dalton , al hacerlo, pierde la capacidad de usar Model Builder y herramientas de estilo antiguo, a menos que esté dispuesto a realizar el esfuerzo de construir el modelo como de costumbre y luego exportar a Python y luego reescribirlo para que se ajuste en el .pyt. (Si hace esto, eche un vistazo a las Directrices para organizar Python Toolboxes (.pyt) en ArcGIS ). En la actualidad, esta desventaja es lo suficientemente grande como para que aún me haya embarcado en usar seriamente las cajas de herramientas de Python.

Si tiene cajas de herramientas existentes que desea convertir a .pyt, puede encontrar tbxtopyt de Jason Scheirer útil el convertidor parcial .

En cuanto al "caso convincente"? parte de la pregunta: si ya tiene algunas opciones de desarrollo de software, sí, definitivamente. Si, como yo, eres 3 partes de SIG Tech / Analyst y 1 parte o menos de pythonista, no tanto. (Al menos todavía no, realmente espero que esta binaria u otra naturaleza de los dos cambios de enfoque en una versión futura próxima).

wilkie mate
fuente