我已经编写了一些Python工具箱(这是ArcGIS 10.1中的新增功能),但是尚未决定是否/何时应该在标准工具箱中编写而不是Python脚本工具。

我认为在线帮助以以下几点开头可能会启发我:


创建后,Python工具箱中的工具具有许多优势


但是,列出的五个优点似乎全部在于无法使用Python编写工具,似乎没有一个比Python脚本工具更能说明Python Toolboxes的优点。

这两个优点我可以想到的是:


我现在可以在一个Python脚本中编写一个“纯” Python工具,而不必将其连接到一个单独编写的对话框,其工具验证看起来像它已经解决了,但我很高兴在这方面务实而不是单纯
我现在可以使用代码(Python或任何能够编写文本文件的语言)来自动编写Python工具箱但是我还没有遇到执行此操作的要求

我是否忽略了导致Esri提供Python Toolbox功能的引人注目的案例,如果是的话,它是什么?

#1 楼

两者在功能上非常非常接近,但并不完全等效。

两者都通用


包括一组带有唯一别名的工具
/>可以从arcpy调用
为每个工具免费获取一个地理处理工具对话框(实质上是完整的UI)
可以将所有Python代码保存在一个文件中(嵌入TBX中的工具源,保留所有实现)一个PYT)并通过电子邮件或共享的网络驱动器进行分发

始终在桌面应用程序的前台设置中运行。在ArcPy代码中设置“始终在前台运行”吗?


TBX文件唯一:


可以包括对系统工具箱的引用,自定义COM工具和自定义.Net工具
工具箱中可以包含模型构建器工具
工具文档存储在.tbx文件内
易于使用的向导UI,用于设置参数和执行验证代码

在“处理”工具属性中运行Python脚本

缺点:不透明的二进制格式,需要将TBX文件的较新版本明确保存为较旧版本,才能在该软件的早期版本(即用户界面)中使用可以是一把双刃剑,因为您必须在属性页之间切换以查看是否错过了设置(例如相对路径)。

Python工具箱所独有的:


为纯文本,因此工具箱可以与其他任何代码一样对待(在使用良好版本控制工具的环境中很有用,因为您可以跟踪其开发历史记录-查看Gi上有多少个项目tHub使用PYT而不是TBX。)
对某些参数类型有更多控制(即,您可以执行复合数据类型并定义值表的模式)产品(“ ArcInfo”)或扩展名(“ spatial”)不可用。
工具文档存储在XML文件中与.pyt相同的文件夹中。

缺点:没有用于配置工具参数的向导UI,Python中更多的脚手架代码使工具箱开发变成了更多的正式软件开发任务,而不仅仅是添加实现脚本。如果pyt很大,则在开发过程中重新加载pyt来加载更改可能会很慢(可以通过将工具放到其他文件中并进行导入来避免重新编译它们的方法来避免这种情况。)前一阵子,当我在开发第一个十几个PYT工具箱时,我为第一次设置PYT感到很烦恼,于是我开发了一个名为tbx2pyt的工具。它需要一个TBX工具箱,然后将其转换为一个PYT,而代码损失最少。实际上,为其供电的PYT首先是TBX。如果您愿意,这可能是将现有工具转换为Python Toolbox格式的好方法。至少,它可以在切换到代码之前使用UI设置工具的参数。

#2 楼

帮助标题为“比较自定义工具箱和Python工具箱”的部分很好地比较了为什么您可能会选择一个而不是另一个,尽管我很想听听创建Python工具箱的人的“现实世界”优点/缺点。 >
我读到的一个明显的缺点是,无法像在标准“自定义工具箱”中那样在Python工具箱中混合/匹配模型和脚本。

#3 楼

我偏爱python工具箱的第一原因是用于版本控制和源代码管理(请参阅将版本控制应用于ArcGIS Models),其次是能够使用带有制表符补全,正则表达式,摘要库,等。

但是,正如Ryan Dalton所指出的那样,您将失去使用模型构建器和旧式工具的能力-除非您愿意按照常规方式进行模型构建然后导出到python,然后重写以适合.pyt。 (如果这样做,请参阅在ArcGIS中组织Python工具箱(.pyt)的准则)。目前,这个缺点非常严重,以至于我还没有认真使用python工具箱。有用。

关于“令人信服的案子”?问题的一部分:如果您已经有一些软件开发经验,肯定可以。如果像我一样,您是GIS Tech / Analyst的3部分,而pythonista则是1部分或更少。 (至少还没有-我真的希望两种方法的这种二进制的一种或另一种性质在不久的将来有所改变。)