Pourquoi apprendre / utiliser les boîtes à outils Python sur les outils de script Python? [fermé]

25

J'ai écrit quelques boîtes à outils Python (qui sont nouvelles dans ArcGIS 10.1), mais je n'ai pas encore décidé si / quand je devrais les écrire plutôt que les outils de script Python dans une boîte à outils standard.

J'ai pensé que l' aide en ligne pourrait m'éclairer lorsqu'elle préfacerait certains points avec:

Une fois créés, les outils d'une boîte à outils Python offrent de nombreux avantages

Cependant, les cinq avantages répertoriés semblent tous ne pas pouvoir utiliser Python pour écrire des outils, et aucun ne semble spécifier un avantage des boîtes à outils Python par rapport aux outils de script Python.

Les deux avantages auxquels je peux penser sont:

  • Je peux maintenant écrire un outil Python "pur" dans un seul script Python sans avoir à le raccorder à une boîte de dialogue créée séparément avec sa validation d'outil comme s'il avait été cloué, mais je suis heureux d'être pragmatique plutôt que pur à cet égard
  • Je pourrais maintenant utiliser du code (Python ou tout autre langage capable d'écrire des fichiers texte) pour automatiser l'écriture des boîtes à outils Python mais je n'ai pas encore rencontré d'exigence pour ce faire

Suis-je en train de négliger le cas convaincant qui a conduit Esri à fournir la capacité Python Toolbox et, si oui, qu'est-ce que c'est?

PolyGeo
la source

Réponses:

34

Les deux fonctionnalités sont très, très proches mais pas complètement équivalentes.

Commun aux deux

  • Comprend un ensemble d'outils avec un alias unique pour l'identification
  • Peut appeler depuis arcpy
  • Obtenez gratuitement une boîte de dialogue d'outil de géotraitement (essentiellement une interface utilisateur complète) pour chaque outil
  • Peut conserver tout le code Python dans un seul fichier (incorporer la source de l'outil TBX, contenir toute l'implémentation dans un PYT) et distribuer par e-mail ou lecteurs réseau partagés
  • Toujours s'exécuter au premier plan pour les applications de bureau. Définir "Toujours exécuter au premier plan" dans le code ArcPy?

Unique aux fichiers TBX:

  • Peut inclure des références aux boîtes à outils système, aux outils COM personnalisés et aux outils .Net personnalisés
  • Les outils Model Builder peuvent être inclus dans la boîte à outils
  • La documentation de l'outil est stockée dans le fichier .tbx
  • Interface utilisateur simple pour configurer les paramètres et faire le code de validation
  • Exécuter la propriété de l'outil Script Python dans le processus
  • Inconvénient: format binaire opaque, les versions plus récentes des fichiers TBX doivent être explicitement enregistrées en tant que versions plus anciennes pour fonctionner dans les versions précédentes du logiciel, l'interface utilisateur peut être une épée à double tranchant car vous devez basculer entre les pages de propriétés pour voir si vous avez manqué un paramètre (tels que les chemins relatifs)

Unique aux boîtes à outils Python:

  • Texte brut, donc peuvent être traités toolboxes les mêmes que tout autre code (utile dans des environnements où l' outillage bon contrôle de révision est utilisé comme vous pouvez tracer son histoire de développement - regardez combien de projets sur GitHub utilisent PYTplus TBX.)
  • Ayez plus de contrôle sur certains types de paramètres (à savoir, vous pouvez créer des types de données composites et définir les schémas des tables de valeurs)
  • La propriété isLicensed peut être utilisée pour désactiver un outil si un produit ("ArcInfo") ou une extension ("spatial") n'est pas disponible.
  • La documentation de l'outil est stockée dans des fichiers XML dans le même dossier que le .pyt
  • Inconvénient: aucune interface utilisateur de l'assistant pour configurer les paramètres de l'outil, beaucoup plus de code d'échafaudage en Python, transforme le développement de Toolbox en une tâche de développement de logiciel formelle plutôt que d'ajouter simplement un script d'implémentation. Le rechargement d'un pyt pour charger les modifications pendant le développement peut être lent si le pyt est volumineux (cela peut être évité en plaçant des outils dans d'autres fichiers et en les important afin qu'ils n'aient pas besoin d'être recompilés).

Il y a quelque temps, lorsque je travaillais sur ma première douzaine de PYTboîtes à outils, je me suis énervé à quel point c'était compliqué d'en installer un PYTpour la première fois, alors j'ai développé un outil appelétbx2pyt . Il faudra une TBXboîte à outils et le convertir en un PYTavec une perte minimale de code. En fait, le PYTpouvoir qui a été le premier a TBX. Cela peut être un bon moyen de faire la transition des outils existants au format Python Toolbox si vous le souhaitez. À tout le moins, il permet de configurer les paramètres de vos outils à l'aide de l'interface utilisateur avant de passer au code.

Jason Scheirer
la source
15

La section d'aide intitulée Comparaison des boîtes à outils personnalisées et Python a une assez bonne comparaison des raisons pour lesquelles vous pouvez choisir l'une plutôt que l'autre, bien que je serais curieux d'entendre les avantages / inconvénients du "monde réel" de ceux expérimentés dans la création de boîtes à outils Python.

Un inconvénient évident que je lis est l'incapacité de mélanger / faire correspondre les modèles et les scripts dans une boîte à outils Python, comme vous pouvez le faire dans une boîte à outils personnalisée standard.

RyanDalton
la source
11

Ma principale raison de m'orienter vers les boîtes à outils python est le contrôle de version et la gestion du code source (voir Application du contrôle de version aux modèles ArcGIS ), suivi de très près par la possibilité d'utiliser un éditeur de code / IDE avec complétion d'onglet, expressions régulières, bibliothèques d'extraits de code, etc.

Cependant, comme le note Ryan Dalton , ce faisant, vous perdez la possibilité d'utiliser Model Builder et les outils de style ancien - sauf si vous êtes prêt à passer par l'effort de construire le modèle comme d'habitude, puis d'exporter en python, puis de réécrire pour l'adapter dans le .pyt. (Si vous procédez ainsi, consultez les instructions pour l'organisation des boîtes à outils Python (.pyt) dans ArcGIS ). À l'heure actuelle, cet inconvénient est suffisamment important pour que je ne me sois pas encore sérieusement engagé dans l'utilisation des boîtes à outils python.

Si vous avez des boîtes à outils existantes que vous souhaitez convertir en .pyt, vous pouvez trouver le convertisseur partiel tbxtopyt de Jason Scheirer utile.

Quant au "cas convaincant?" une partie de la question: si vous avez déjà des côtelettes de développement logiciel, oui certainement. Si comme moi vous êtes 3 parties GIS Tech / Analyst et 1 partie ou moins pythonista, pas tellement. (Du moins pas encore - j'espère vraiment que cette nature binaire ou l'autre des deux approches changera dans une version future proche.)

Matt Wilkie
la source