ArcGIS中提供了多个用于数据转换的工具,可以实现多种数据格式之间的相互转换:
如果要批量转换的话, 一般常用的方法有2种,
批处理
和
模型构建器的迭代
。
个人感觉批处理不灵活,扩展性差,不能应对复杂的转换要求。
实际工作中,模型构建器的迭代方法更为方便和好用。
下面以几个例子介绍模型构建器的迭代方法在数据转换中的应用。
【shp转gdb】
这里有一份shp数据,分布在同一个的文件夹的不同位置:
转成gdb可以有几种方式,比如把所有shp合并成一个要素类放进gdb数据库里:
这里需要注意几个点:
1、因为shp可能分布在文件下的子文件夹,所以【迭代要素类】需要勾选上【递归】。
2、【迭代要素类】后需要跟着【收集值】,这样才能正常合并。
3、【合并】的输出路径直接放在gdb数据库下,就自动完成了shp转gdb的过程。
再比如:需要把每个shp分别放入单独的gdb数据库中,并以shp名称来命名。
这里需要注意几个点:
1、因为每个shp需要1个单独的gdb,所以迭代后需要创建gdb,并把迭代后的【名称】参数作为新建的gdb名称。
2、迭代后【复制要素】即可转换为gdb,这里的输出路径是动态的,需要引用上面生成的2个参数【要素类.gdb】和【名称】。
3、【创建文件地理数据库】和【复制要素】2个工具的执行是并行的,但是【复制要素】需要【
创建文件地理数据库
】生成的
【要素类.gdb】参数作为输出路径的命名,因此
【要素类.gdb】需要作为
【复制要素】的
前提条件
。
生成结果如下:
【
gdb
转
shp
】
gdb转shp就是个逆向过程,思路基本是一致的。
有这样一个gdb要素类,3个要素,有1个字段用于标记不同的项目名称:
现在要做的是将3个要素分别导出为shp,分装到3个文件夹中,并以项目名来命名shp和子文件夹。
这里需要注意几个点:
1、这次要获取的是要素类下的所有要素,所以用的是【迭代要素选择】。
2、【创建文件夹】的结果作为【复制要素】的前提条件。
3、注意输出要素类的路径,最后需要加上【.shp】,才能正常输出为shp要素。
生成结果如下:
上面例子基本已经把批量转换的思路讲完了,其它格式只差在转换的那一个工具有变化罢了,比如gdb转cad,就不是使用【复制要素】工具,而是【导出为CAD】了。
还以上面的那个要素类为例,将3个要素导出为3个CAD:
生成结果如下:
如果想把gdb数据转为单个cad,并且按字段名分图层:
这里重要的是需要添加1个【layer】字段,通过【计算字段】把名称值赋给【layer】,这样当要素转为cad的时候,就会认到这个【layer】并转为cad中的图层名。
生成结果如下:
其它的转KMZ,Excel等情况,都和以上类似,就不缀述。