ModelBuilder中的For循环和While循环
鸽了这么久了的ModelBuilder教程,开始恢复更新了,嘤嘤嘤
现在开始讲迭代器,迭代是指以一定的自动化程度多次重复某个过程,通常又称为循环。说的通俗点就是批量循环处理,简称批处理。
需要注意的是个模型仅可使用一个迭代器。如果模型中已经存在一个迭代器,那么就没办法再添加迭代器了,只能嵌套一个子模型,在子模型里使用。
ModelBuilder提供了四个大类,十二种迭代,在之后的文章中我会依次讲到,这次讲前两个,For循环和While 循环,本质上和编程中的For循环和While 循环工作原理完全相同
For循环,起始值到结束值按特定次数运行工作流,简单来说就是你给定一个循环次数,然后你的模型将从头到尾执行这个数量的项目。
下面以一个建立多环缓冲区的样例来介绍一下这个工具
For循环初始值设置为10m,之后每次自加10m直至100m停止循环,c108是一段道路数据
将值作为距离添加至缓冲区
最后输出文件为防止名称一样被覆盖,采用行内变量替换
运行结果如下
While 循环,模型会一直运行到特定变量或条件变为 True 或 False 时为止。简单来说,你可以把他理解成为一个开关,如果达到你设定的条件,循环会自动终止
还是这个多环缓冲区的案例,我们来深入了解一下While 循环
相较于上一个for循环的实现,这个While 循环添加了两个计算值工具和While 循环
两个计算值工具第一个是计算缓冲区距离,然后输出长整型字段,并将其作为距离添加到缓冲区工具中
如果我们不加以限制的话,他会无限循环,所以添加了第二个计算值工具来限制它所输出的value大小,输出类型为布尔型(布尔型的值只有两个:false(假)和true(真)。
然后将其作为输入值添加到while循环中
最后的文件存储依旧使用行内变量替换
运行结果如下