多个数据库的合并底层逻辑就是多个同名要素类的合并,配合ModelBuilder里仅模型工具中的收集值工具,收集值作为追加\合并工具的输入,即可实现同名要素类的合并。
我的想法是:输入一个模板数据库,使用迭代、嵌套子模型的方式依次建立数据库、数据集、要素类建立起一个空要素的成果数据库,然后使用追加的方式将空数据库里的空要素类图层作为追加工具的目标数据集(输出端),输入端为上述所说的通过收集值工具获取的要素类。
迭代创建空数据库方式的难点在于:在创建要素类的时候需要输入几何类型(点、多点、线、面),而在ModelBuilder中无法直接获取,找遍了全网都说由于是图层的固有属性因此无法传递该值,处理这个问题的方法最开始想着是在遍历模板数据库的要素类时通过计算图层Name的方式获取,后来想想该处理方式在数据命名错误后会出错,因此转向另一通过直接复制模板图层并锁定输出位置然后再删除其中所有要素数据的方式获得一个新的空图层,这样的好处在于,获得的图层与模板图层属性结构完全一致,坏处在于,当某一模板数据要素类数据量大时处理时间可能会较长。(能处理标准组织结构的GDB,待完善)
①准备待合并数据
②建立工具箱及几个模型(在模型右键属性勾选“存储相对路径名”以便移植使用)
③迭代要素类并收集值子模型
④迭代创建要素类子模型
⑤迭代创建要素集子模型
⑥合并主模型
⑦运行主模型
⑧运行完成日志
⑨合并成果