上一篇我们介绍了模型构建器的基础,将一个工作流串联起来,然后做成模型工具。今天我们介绍模型构建器的第二个重要功能——迭代,也就是程序中的循环。
先来看一个例子。要给数据库中所有要素类添加一个相同的字段,该怎么做?硬套模型构建器,要做成下面这个样子?这样减少了工具量了吗?只是工具的堆叠。
对于这个需求,我们就可以使用迭代器中的迭代要素类。新建模型,插入迭代要素类。
迭代要素类已经添加到模型中了,双击迭代要素类,我们只添加一个地理数据库就好。
再添加工具【添加字段】。使用连接符将其与循环中的要素类连起来,再设置添加字段工具中的参数,运行模型就可以了。
迭代器的输出有两个参数:要素类 和 要素类的名字。
循环要素类时,每次获取到一个要素类,也就是上方名为 编辑 的变量,这个名字是读取的第一个要素类的名字,添加的数据库不一样,这个名字也会不同。
还会获取到要素类的名字,也就是上方名为 名称 的变量。我们通过一个批量裁剪的例子,看下 名称 变量的使用。
每次读取一个要素类,然后进行裁剪,输出的要素类名为编辑_Clip。第二次再读取一个要素类,结果还是编辑_Clip,结果被覆盖了。裁剪10个要素类,最后只剩一个。那么怎么改呢?
结果要素类的名字就用迭代要素类的另一个变量 名称。用英文的%括起来变量的名字,每次结果输出的是读取的要素类的名字。
若这个名称变量名字是英文的Name,结果就写 %Name%。
一个模型中只能使用一个迭代器,所以对于两重或多重循环,模型构建器不是很友好。要使用多重循环,可以将模型做成工具(要有输入输出参数),然后将这个工具添加到另一个模型中。
Pro中的迭代器的功能如下表所示。要迭代栅格,就选栅格迭代器。这里我们不对迭代器的使用场景一一举例了,点击文末的 原文 可查看官方文档中的示例。