ModelBuilder.docx

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ModelBuilder

ModelBuilderModelBuilder 是 ArcGIS for Desktop 产品中最可爱的功能之一,它可以尽可能免代码地将我们从重复劳动中解放出来。使用 ModelBuilder 的过程常常被比喻为“搭积木”,我们只需要拿着 ArcGIS for Desktop 中为我们提供的“积木”去搭建满足于自己的特定工作流模型。1 明确需求我们从一个简单常见的实例开始……需求:现有一些表示各种研究对象的地理数据,小明希望把所有研究数据变换到需要的坐标系统,并且全部裁剪至研究范围。如果只有一份数据,小明会不假思索的找到 ArcToolbox中的 Project和Clip工具,顺序执行即可解决问题;如果是3+份数据,小明可能会想,该做个工具了。2 构建工作流从【地理处理】菜单,打开 这里写图片描述 ModelBuilder,依次拖拽和连接 Project 和 Clip 两个工具。Project 工具的输出作为 Clip 工具的输入。双击工具可以打开工具继续填补工具需要的参数,直至Model因参数完全而变成彩色。3 使用迭代器前一步的工具已经满足一次任务的需要了,接着就是解决批量处理的问题。ModelBuilder提供了一些额外的自带工具来满足我们的一些高级需求,其中一类就是 迭代器,它用来实现循环。在这个例子中,需要遍历的对象是表示各种研究对象的要素类,因此选择 迭代要素类 / Iterate Feature Classes。当然也可以根据自己的实际需求选择其他迭代器。接下来就是把迭代器与工具串联起来。首先,双击迭代器的六边形为迭代器设置工作空间,即地理数据库/GDB,或者文件夹目录(例如shapefile所在的目录)。这样,迭代器会在指定的工作空间遍历要素类。删除现有Project工具的输入数据,将迭代器的输出数据连接到Project工具。工具基本准备完毕,但是还差了重要的一步。目前,最后的输出数据是常量,也就是说,即使前面的工具执行了N次,那结果都将被同名覆盖。那么,行内变量 就显出用武之地了。迭代器每次遍历到一个要素类,会返回一个 Name,内容是当前要素类的名称,这个Name就是行内变量。引用的方法就是使用百分号括起来,即 %Name% 。输出数据设置示例:4 复用工具如果我们以后想按照这个相同的需求处理数据,完全可以将其做成模型工具。将输入数据和输出数据设置为模型变量,我们就可以在“运行”状态下使用。设置方法,在需要作为参数方便后续修改的项目上右键,勾选 “模型参数”即可,然后项目的头上顶了个“P”,( ̄▽ ̄)”。将模型保存至工具箱后,双击运行工具。5 注意事项下面是些有用的提示,FYI:每个模型仅可使用唯一一个迭代器。如果模型中已经存在一个迭代器,那么用于添加迭代器的菜单就不可用了。这是限制之一。如果将含有迭代器的模型导出为 Python 脚本,则导出的脚本中将不会包括迭代逻辑。这是限制之二。Python中有list函数,也可以实现类似的需求,但是需要重写。尽管Model可以嵌套调用,但是迭代器的嵌套循环逻辑不佳,不建议使用。如果需要实现嵌套循环,强烈建议使用python脚本。例如,实现遍历工作空间内每个要素类中的每个要素(记录)这样的需求,可以使用 ArcPy中的函数 ListFeatureClasses 和 SearchCursor来实现。

您可能关注的文档

文档评论(0)

haihang2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档