Modelbuilder进阶教程
Modelbuilder进阶教程
By 李远祥
Modelbuilder 进阶1 自定义变量
参数是用来交互操作的,因此,参数具备非常大的灵活性,包括参数的定义和调用。
除了工具里面的参数之外,还可以通过自定义变量,自定义变量可以非常灵活的在工具的参数中调用。
变量包括了ArcMap大部分对象和数据,如文档、图层、数据类型、字段等,也包含了其他通用变量,如字符串、数值等



变量的调用一般使用%%括住变量名称,可以混合在参数中使用。
下面例子中使用一个行政代码区创建地理数据库,给字符串变量重命名为【行政代码】,在参数中使用了字符串的组合






模型构建器进阶2-前提条件
前提条件是工具在执行前首先检查的条件,如果条件满足,可以执行工具;不满足,则创建这些前提条件。
前提条件一般用在没有前后关系的操作,不同于前后参数;
另一方面,在没有前提条件的设置下,arcgis的某些操作也会执行,但约束性不强
前提条件可以很好的强制执行工具调用前的一些基本操作。
例子中使用了创建固定的目录作为前提条件,这样,可以限制在没有对应目录的情况下执行工具。




前提条件也可以用作异步操作
任何变量都可用作工具执行的前提条件,并且任何工具都可以有多个前提条件。
该例子是先检查是否存在对应的文件夹,如果没有,则创建目录,并在目录中创建符号命名规则的地理数据库。
模型构建器进阶3-迭代器
迭代是指以一定的自动化程度多次重复某个过程,通常又称为循环。迭代很重要,因为自动重复任务会节省执行这项任务所需的时间和精力。在"模型构建器"中进行迭代时,可以在每次迭代中使用不同的设置和数据来反复执行同一个过程。"模型构建器"中的迭代操作还具有灵活性,用户可以迭代整个模型,或只是重复执行单个工具或过程。


基本上自动化的操作都需要使用迭代器去构建模型,迭代器就是循环操作
下面的例子是利用行政区划的shapefile 数据,分别创建所有县的目录,并单独将县的边界到处到目录中













For 循环,执行多个操作。






使用迭代器的注意事项
- 同一个模型里面只能使用一次迭代器;如果需要多次迭代,可以将带迭代器的模型加载到另一模型再进行迭代
- 迭代器中没有针对数据本身的条件选择功能,这些条件设置一般可以在系统工具中进行设置(如筛选、过滤等)
- 迭代器的类型有限,但巧妙利用迭代器能够高效率的解决问题。
模型构建器进阶4-行内变量
在模型构建器中,可通过以百分号 (%) 将替换变量括起来的方式,用一个变量的内容替换另一变量。这种变量替换方式称为行内变量替换。

该例子中创建的地理数据是一个输出变量,但其使用了行政代码这个变量进行组合替换,则这个变量就是行内变量
- 行内变量可分为两类:
- 模型变量 - 模型中的任何变量:%variable name%。
- 系统变量 - 模型构建器中包含两个系统变量:表示变量列表编号的 %i% 和表示模型迭代次数的 %n%。
- 行内变量的使用规则
- 变量名称使用百分号 (%) 括起。
- 变量名称中允许存在空格。
- 替换不区分大小写。Initial Value 和 initial value 是等同的。
- 执行模型时,将按以下顺序确定和使用行内变量:
- 模型变量。
- 模型环境设置。
- 系统变量(%i% 和 %n%)。
- 父模型中的变量。如果当前运行的模型是一个子模型,则将一并搜索其父模型的变量。
模型构建器进阶6-仅模型工具
- 仅模型工具仅用于"模型构建器"中。其中的有些工具可用来控制处理流程,而其他工具则是些简单的支持工具。
- 模型构建器只提供7种仅模型工具
- 仅模型工具更像编程语言里面的条件控制、字符分析等方法和函数
- 仅模型工具可以用于模型运行过程中的计算和判断

例如:解析路径 工具,可以很好的反映数据的各层路径

模型构建器进阶5-工具帮助
在工具中加入适当的说明是十分有必要,方便模型的使用
模型的说明可以ArcCatalog中使用右键【项目描述】进行设置

Modelbuilder进阶教程的更多相关文章
- duilib进阶教程 -- 总结 (17)
整个教程的代码下载:http://download.csdn.net/detail/qq316293804/6502207 (由于duilib进阶教程主要介绍界面,所以这个教程只给出界面相关的代码,完 ...
- duilib进阶教程 -- Container控件的bug (14)
在<duilib进阶教程 -- TreeView控件的bug (9)>里,Alberl发现了两个bug,并解决了其中一个,现在教程已经接近尾声啦,所以Alberl就解决了另外一个bug. ...
- Gensim进阶教程:训练word2vec与doc2vec模型
本篇博客是Gensim的进阶教程,主要介绍用于词向量建模的word2vec模型和用于长文本向量建模的doc2vec模型在Gensim中的实现. Word2vec Word2vec并不是一个模型--它其 ...
- Bash脚本15分钟进阶教程
转载: Bash脚本15分钟进阶教程 这里的技术技巧最初是来自谷歌的"Testing on the Toilet" (TOTT).这里是一个修订和扩增版本. 脚本安全 我的所有ba ...
- Android高手进阶教程(二十八)之---Android ViewPager控件的使用(基于ViewPager的横向相册)!!!
分类: Android高手进阶 Android基础教程 2012-09-14 18:10 29759人阅读 评论(35) 收藏 举报 android相册layoutobjectclassloade ...
- Nodejs爬虫进阶教程之异步并发控制
Nodejs爬虫进阶教程之异步并发控制 之前写了个现在看来很不完美的小爬虫,很多地方没有处理好,比如说在知乎点开一个问题的时候,它的所有回答并不是全部加载好了的,当你拉到回答的尾部时,点击加载更多,回 ...
- SpringBoot进阶教程(二十九)整合Redis 发布订阅
SUBSCRIBE, UNSUBSCRIBE 和 PUBLISH 实现了 发布/订阅消息范例,发送者 (publishers) 不用编程就可以向特定的接受者发送消息 (subscribers). Ra ...
- keil进阶教程
前言 keil只懂得创建软件工程是远远不够的,如果要想顺心使用,应该要懂得部分配置,这样使用心情顺畅,码代码也会越发高效. 设置字号字体 编辑点击编辑菜单,会出现很多子目录,找到配置,点击进入设置页面 ...
- 测试开发学习进阶教程 视频&PDF
测试开发学习进阶教程 视频&PDF,7天后失效,更多学习资料加Q群 https://pan.baidu.com/s/196KEo791NeZKyfV_E-36Uw 提取码: 41vu ...
随机推荐
- Linux 服务器 常规性能优化设置
为能使linux服务器能最大化的工作,通常需要对linux的通常设置做适当的更改,而这又往往会依据服务器的类型不同,而有所变化. 对于通常的多连接的服务器其参数设置,可在 /etc/sysctl.co ...
- android log写入机制
这几天和华为的leader面试了下.感觉不错.关键是小女.不容易.是技术面啊.我说的不容易不是面试不容易,是说在华为写代码的小女不容易.哥走南闯北这么多年,女人代码写的好真不多. 其实在任何时候,只要 ...
- 【POJ2104】【HDU2665】K-th Number 主席树
[POJ2104][HDU2665]K-th Number Description You are working for Macrohard company in data structures d ...
- 流水线技术原理和Verilog HDL实现(转)
源:流水线技术原理和Verilog HDL实现 所谓流水线处理,如同生产装配线一样,将操作执行工作量分成若干个时间上均衡的操作段,从流水线的起点连续地输入,流水线的各操作段以重叠方式执行.这使得操作执 ...
- slf4j与logback对接是如何将日志写到控制台的
今天一个以前同事问了个RT的问题 我翻了下代码,简单跟了下 很简单 1. demo代码 package org.simonme.demo.log; import org.slf4j.Logger; i ...
- 《javascript语言精粹》——第3章对象
第三章:对象: 属性名字:可以是包括空字符串在内的任意字符串: 属性值:是除undefined值之外的任何值; [1].对象字面量: var obj={}; //空对象 var obj = new O ...
- FireBug 调试工具(推荐)
Firebug是网页浏览器 Mozilla Firefox 下的一款开发类扩展,如同一把精巧的瑞士军刀,从各个不同的角度剖析Web页面内部的细节层面,给Web开发者带来很大的便利. 安装如下: 下面是 ...
- Qt下libusb-win32的使用(转)
源:Qt下libusb-win32的使用(一)打印设备描述符 主要是在前一篇的基础上,学习libusb-win32的API使用.程序很简单,就是打印指定USB设备的设备描述符(当然其他描述符也是可以的 ...
- Java编程思想非主流知识点
1. Java中的多态性理解(注意与C++区分) Java中除了static方法和final方法(private方法本质上属于final方法,因为不能被子类访问)之外,其它所有的方法都是动态绑定,这意 ...
- docker网络访问(三)
docker网络访问 ifconfig查看网卡,启动docker的时候,docker会帮我们创建一个docker0的网桥. 1.随机映射 docker run -P 2.指定映射 -p hostPor ...