共享ArcGIS Python代码的文件组织


13

共享ArcGIS python代码和地理处理工具的最佳组织结构是什么?甚至共享代码和共享工具是否是单独的问题?

Esri具有针对Arcgis 9.3和10.0发布的“ 工具分发方法”结构:

分发工具文件夹结构示例

但是在其他地方,人们却在说类似Also do avoid distributing your code the way its done in Arc Scripts or Code Galleries本地python Distutils的说法。Esri似乎没有对应于10.1(ref)的发行工具文章,这为反论点增加了一些分量。

GIS.se怎么说?

更新:虽然可能为时已晚,但是这个问题的重点是在用于共享工具(在线ArcGIS,Google驱动器,Dropbox,github,bitbucket等)出现之前,有关文件和文件夹结构的最佳做法。玩。

Update2:而且没有人会说显然是孤立的distutils方法吗?


您是否曾经为此提出过可行的解决方案?
traggatmot

@traggatmot不,我没有。今天,我将检查Esri的Github站点,以获取具有最多星星和/或最活跃贡献历史的python-with-toolboxes-project(由于此Q涉及共享和重复使用,因此在第二个位置上进行强调)
matt wilkie

Answers:


10

在10.1和10.2中,您说明的Toolshare文件夹似乎不再记录。

我怀疑这是因为当前的建议是使用地理处理程序包而不是工具共享文件夹:

地理处理包是从“结果”窗口中的一个或多个结果创建的。包中包含用于创建结果的所有数据和工具。您可以将其他文件添加到程序包中,例如文本文档,幻灯片和压缩的ZIP文件。您的同事将包装打开包装,立即开始使用其中的物品。

根据组织的最佳实践,我存储工具箱及其使用的任何Python代码的方式都位于同一文件夹结构中,该文件夹结构仍可用于协助分发它们,即Toolshare文件夹结构。


...我认为这意味着可以通过手动解压缩地理处理程序包文件并检查其内部结构来找到“组织结构是什么”的答案。
马特·威尔基

我没有尝试重命名为* .zip并解压缩* .gpk,但我的理解是您可以做到这一点。我怀疑它看起来像Toolshare文件夹一样可怕。
PolyGeo

5

我一直在使用Google云端硬盘在同事之间共享Python脚本和脚本工具。所有脚本均与ArcGIS工具箱一起存储在共享文件夹中,该工具箱包含所有链接的脚本工具(和模型)。这种方法有很多好处:1)每个人都可以使用相同的脚本版本; 2)您可以设置写或只读特权; 3)例如,使用不同的工作场所,大学和国家/地区进行协作要容易得多,与尝试在您可能会或可能不会在服务器上设置用户访问权限相比,驱动器要强。



因此,您将所有脚本和工具箱存储在同一文件夹级别,对吗?
RyanKDalton 2012年

@RyanDalton为简单起见,我通常将文件夹深一层地存储在与工具箱相同的级别。虽然,Gdrive也支持复杂的文件结构。
亚伦

2
任何发现此工作流程有吸引力的人都应该看看版本控制软件Git及其流行的存储库共享网站GitHub。它为您提供了上述所有功能-主脚本,定义的权限和广泛的可访问性-能够跟踪对脚本所做的所有更改(包括日期和作者),在保留生产版本的同时尝试新功能,管理多个同时编辑相同的文件,等等。使用起来更加复杂,但是我发现它非常有用。
马特·帕克

Google Drive,Dropbox,Git + Github,Mercurial + Bitbucket朋友 都是共享文件和代码的绝佳途径,但这并不是这个问题的重点。在使用用于共享的工具之前,我一直遵循文件和文件夹结构的最佳实践。
马特·威尔基

1

Esri的ArcGIS Pro doc 通过Python模块扩展地理处理显示了如何构建Distutils友好的项目,包括构建Windows和Linux二进制安装程序。

(注意:这是用于共享脚本和工具,不是一个将脚本,地图和数据作为一个包共享的好模型。)

源项目布局:

Src树

在最终用户的系统上成为此 C:\Path\to\ArcGIS\Desktop\python

目标文件夹树

他们没有提到点子,但通过研究示例,我看不出为什么它不起作用。例如:对于协作编辑和/或经常更改的工具集,请使用进行安装pip install --editable X:\path\to\srcpip install --editable http://github.com/project/path/to/master

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.