ArcGIS ModelBuilder可以打开Excel文件进​​行手动编辑,然后将这些编辑反馈回模型吗?


10

我的任务是使用ArcGIS ModelBuilder创建一个模型,该模型最初运行几个地理处理任务,然后再将Excel表连接到这些地理处理的结果。但是,模型需要首先实际打开Excel文件,以便用户手动编辑它,然后用户保存其编辑并关闭文件。然后,在模型继续执行许多其他地理处理任务之前,期望模型将这个Excel文件连接到数据集的属性表(模型的一部分)。

我在下面提供了一个高级示意图,以帮助说明这一点(我理解,开始时可能没有多大意义)。

在编辑Excel文件时,模型将暂停,然后在保存并关闭后恢复

因此,该模型将运行,完成一些地理处理任务,暂停以打开Excel文件,等待用户对其进行编辑,保存并关闭它,然后再继续将该Excel文件加入属性表,然后运行一个数字。其他地理处理任务。

我应该想象这将需要将一个或两个Python脚本合并到模型中。目前,尽管我只是想知道这个概念是否确实可行。


1
我敢肯定,使用标准模型构建器工具将无法执行此操作,因为无法暂停模型,您还需要触发一些触发器,以说用户已关闭Excel以重新启动模型。您可以通过生成一个单独的进程(Excel)后将其发送到一个无限循环中的脚本来查看文本文件中的标记,从而实现此目的?我从来没有做过,也不知道陷阱是什么。如果您想将其保留在modelbuilder中,请先进行excel编辑,然后运行模型。
Hornbydd 2013年

谢谢@Hornbydd-我也有同样的想法。我建议先编辑文件,然后运行模型,但是有人告诉我
说它

1
我认为脚本可以查看文件的日期和时间戳以了解它是否已被编辑,然后从那里恢复模型?我认为暂停是个问题。
the_bonze 2013年

是的,模型构建器旨在自动化工作流以加快处理速度,而中间不会出现不确定的停顿,例如,如果该用户去吃午餐会怎样?:)就像我现在!
Hornbydd 2013年

Answers:


1

听起来您需要开发更多的自定义Python工具,而不是ModelBuilder中的模型。xlwtxlutils通过http://www.python-excel.org/可以写入Excel文件(XlsxWriter将处理xlsx文件)。如果编辑较小,则可以将其合并到标准的ArcToolbox工具中(具有一些创造力)。如果您使用的是10.1+,则可以创建一个Python加载项或Python Toolbox来完成GUI的工作。


Python插件已经在10.1+中提供了完善的GUI选项吗?我以为只有.NET和Java插件可以提供这些... Python只提供没有任何GUI(命令,工具)的插件。
于尔根Zornig

1
@JürgenZornig这并不容易:anothergisblog.blogspot.com/2013/07/…–
乍得·库珀

谢谢@ChadCooper。我需要将模型保留在模型构建器中,因此Python加载项很好,但是作为实体的模型需要存在于模型构建器中,而不是完整的Python工具。
the_bonze 2013年

@Chad无论如何,感谢您提供的出色的ArcPy / Tkinter快速入门教程...必须尝试一下!
于尔根Zornig

1

我一直在考虑,有可能找到了一个新颖的解决方案。您在工具箱中使用两个用户参数(首先是Excel EXE的位置)设置python脚本。甚至可以对它进行巧妙地编码,以检查可能的文件路径位置(Office12,Office13等)的硬编码列表。

接下来使用subprocess.call函数。关于使用此方法,有一些非常整洁的事情:

  1. 不需要任何外部库
  2. 调用函数在excel关闭之前不允许继续执行脚本
  3. 您可以将excel文档指定为第二个参数
  4. 这是一行代码!

    import subprocess subprocess.call(["C:\Program Files (x86)\Microsoft Office\Office12\EXCEL.EXE", "Test.xlsx"]) #Replace args with user inputs (sys.argv[1], sys.argv[2] respectively)

唯一的事情是我不确定100%是否可以在模型构建器中使用,需要对此进行测试,但是我不知道为什么不这样做,但是我确定您知道Arc是气质的野兽。

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.