相比较ArcMap的模型构建器,Pro里最主要的变化就是增加了一组逻辑工具:
逻辑工具用于控制模型中的流程流,它们返回的结果是true或false。
这个结果一般用于 if-else 分支逻辑,例如:如果某字段存在的时候,执行流程1,否则,执行流程2。
是不是有点写代码的感觉了?其实这也算是低代码模型。
逻辑工具可以让工作流程变得更复杂,实现的功能也就更多。
这也算是Pro的一大进步之处。
一、逻辑工具介绍
1、如果数据已存在
检查模型参数中的输入数据是否存在。几乎任何数据都能检索。
2、如果字段已存在
检查数据集中是否已存在给定名称的字段。字段测试有多种模式。
3、如果选择已存在
检查输入是否具有任何所选要素。也可以检查所选要素的数量。
4、如果坐标系为
检查数据集是否具有特定坐标系。这一般用于在流程中作前置判断,避免不同坐标系要素的空间处理。
5、如果数据类型为
检查输入数据集的数据类型。加强流程的稳定性。
6、如果表达式为
通过具体表达式来获取判定结果。表达式采用python,有了表达式,可做到的事情就非常多了。
7、如果要素类型为
检查特定数据集是否为某种要素类。和【如果数据类型为】类似,不过只针对要素类进行判断。
8、如果字段值为
检查输入数据在属性字段中是否有特定值。另外还有多种选择条件,内容非常丰富。
9、如果行计数为
检查输入数据集中的记录数。借此也可以判断数据集中是否有内容。
10、如果空间关系为
检查图层是否具有与其他图层要素有空间关系的要素。比如判断两个要素是否相交。
11、如果值为
检查输入数据是否存在特定值。这个值的类型也很广,基本包括所有数据类型。
二、应用示例
有了这些逻辑工具,模型构建器也可以玩很多花活。
1、清理GDB数据库里的所有空要素
有时候GDB数据库因为来自于标准空库,可能会存在一些没经过处理的空要素,需要手动删除掉。一个个检查就有点麻烦,用模型构建器来吧。
这其中最主要的就是用到【如果行计数为】工具,找出计数为0,也是空要素,删除即可。
2、删除GDB数据库里不在规划范围内的所有要素
另一种情况,GDB数据库存在不在规划范围内的要素,也可以批量清理掉。
主要用到【如果空间关系为】工具,将关系设为相交,结果为false的就是不相交,删除即可
3、批量字段计算GDB数据库里的所有要素
例如要给GDB数据库里的所有要素的【BSM】字段赋值,迭代要素后加一个【如果字段已存在】的判断,只有存在该字段,才进行计算字段的操作,避免可能存在的错误:
一时想不出其它方便的实际应用场景,有待慢慢开发,后面如果有遇到,再补充吧。