¿Por qué aprender / usar las cajas de herramientas de Python sobre las herramientas de script de Python? [cerrado]

25

He escrito algunas Cajas de herramientas de Python (que son nuevas en ArcGIS 10.1), pero todavía tengo que decidir si debo escribirlas en lugar de las Herramientas de secuencias de comandos de Python en una caja de herramientas estándar.

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

  

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

Sin embargo, las cinco ventajas enumeradas parecen estar superadas al 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 "pura" de Python en un solo script de Python sin tener que conectarlo a un diálogo creado por separado con su Validación de la herramienta como si estuviera pegada pero estoy feliz de ser pragmático en lugar de puro en este sentido
  • Ahora podría usar el código (Python o cualquier otro lenguaje capaz de escribir archivos de texto) para automatizar la escritura de las cajas de herramientas de Python, pero aún tengo que cumplir con un requisito para hacer esto

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

    
pregunta PolyGeo 06.06.2013 - 05:37

3 respuestas

33

Los dos tienen una funcionalidad muy, muy cercana pero no completamente equivalentes.

Común a ambos

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

Único a los archivos TBX:

  • Puede incluir referencias a las 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
  • IU de asistente fácil para configurar parámetros y hacer el código de validación
  • Ejecutar el script Python en proceso propiedad de la herramienta
  • Desventaja: formato binario opaco, las versiones más recientes 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 tiene que cambiar de propiedad páginas para ver si se perdió una configuración (como rutas relativas)

Único a las cajas de herramientas de Python:

  • 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 usan buenas herramientas de control de revisión, ya que puede rastrear su historial de desarrollo; observe cuántos proyectos en GitHub usan PYT sobre TBX .)
  • Tenga más control sobre ciertos tipos de parámetros (es decir, puede hacer tipos de datos compuestos y definir esquemas de tablas de valores)
  • La propiedad isLicensed 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 la .pyt
  • Desventaja: la interfaz de usuario sin asistente para configurar parámetros de herramientas, significativamente más código de andamios en Python, convierte el desarrollo de Toolbox en una tarea de desarrollo de software más que simplemente agregando un script de implementación. Recargar un pyt para cargar cambios durante el desarrollo puede ser lento si pyt es grande (esto se puede evitar al colocar herramientas en otros archivos e importarlos para que no sea necesario volver a compilarlos).

Hace un tiempo, cuando estaba trabajando en mi primera docena de cajas de herramientas PYT , me puse nervioso por la molestia que tenía configurar un PYT por primera vez, así que desarrollé una herramienta llamada tbx2pyt . Tomará un cuadro de herramientas TBX y lo convertirá en un PYT con una pérdida mínima de código. De hecho, el PYT que lo potencia fue primero un TBX . Esta puede ser una buena forma de cambiar las herramientas existentes al formato de Python Toolbox si así lo desea. Como mínimo, hace posible configurar los parámetros de sus herramientas mediante la interfaz de usuario antes de cambiar al código.

    
respondido por el Jason Scheirer 02.04.2014 - 18:09
14

La sección de ayuda titulada Comparación de cajas de herramientas personalizadas y de Python tiene una comparación bastante buena de por qué puede elegir una sobre la otra, aunque me gustaría saber cuáles son las ventajas y desventajas del "mundo real" de quienes tienen experiencia en la creación de cajas de herramientas de Python.

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

    
respondido por el RyanDalton 06.06.2013 - 07:07
11

Mi principal razón para inclinarme hacia las cajas de herramientas de Python es para el control de versiones y la administración del código fuente (consulte Aplicando el control de versiones a ArcGIS Models ), seguido muy de cerca por ser capaz de usar un editor de código / IDE con el uso de tabulaciones, expresiones regulares, bibliotecas de fragmentos de código, etc.

Sin embargo, como notas de Ryan Dalton , al hacerlo pierde la capacidad de usar Model Builder y las herramientas de estilo antiguo - a menos que esté dispuesto a realizar el esfuerzo de construir el modelo como de costumbre y luego exportarlo a Python y luego volver a escribir para que quepa en el .pyt. (Si haces esto, echa un vistazo a Pautas para organizar las cajas de herramientas de Python (.pyt) en ArcGIS ). Actualmente, esta desventaja es lo suficientemente grande como para que me haya embarcado en el uso serio de las cajas de herramientas de Python.

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

En cuanto al "caso convincente?" parte de la pregunta: si ya tiene algunas habilidades de desarrollo de software, sí, definitivamente. Si como yo, eres 3 partes GIS Tech / Analyst y 1 parte o menos pythonista, no tanto. (Al menos, todavía no. Espero que realmente este binario u otra naturaleza de los dos cambios de enfoque en un futuro próximo).

    
respondido por el matt wilkie 12.06.2013 - 06:29

Lea otras preguntas en las etiquetas