数据检查
在进行数据转换之前,我们需要对数据的有效性进行检查,剔除无效的数据。比如,在客户提供的数据中存在坐标字段为空值的情况,对于需要转线的数据存在起点和终点相同的数据,以及从数据库中导出数据存在非法字符的情况等,我们都应该在进行数据转换之前检查出错误数据并进行处理。
图1.待转换的点数据
图2.待转换的线数据
空间ETL使用的流程
在确保数据已经符合转换要求的情况下,开始进行数据转换。使用空间ETL的一般流程是提取——转换——加载三个过程,如图3
图3.空间ETL使用流程
下面我们来看一下在ArcMap里面进行CSV到Shape数据转换的具体操作流程:
- 首先,我们需要新建一个工具箱,并在工具箱中新建Spatial ETL Tool工具,如图4接下来会打开创建转换工作空间的向导,如图5
图4.新建空间ETL工具
图5创建转换空间向导
2.选择需要转换的数据格式,点击右侧按钮可以打开数据选择列表,如图6为ArcGIS空间数据互操作模块支持的数据格式,我们选择CSV格式,点击Ok,点击下一步,打开数据选择对话框,如图7。
图6.数据格式选择窗体
图7. 添加数据对话框
3.点击右侧按钮,找到需要转换的CSV数据并添加,然后,点击Parameters按钮勾选File Has Field Names和Field Names Follow Header两个选项,可以提取CSV数据的列名作为转换数据的属性列名(如果不勾选的话,当我们要选择属性列时,他们都是col0,col1等显示,不便于我们分辨属性字段)。
图8.提取数据属性设置对话框
4.点击Ok按钮,进入到输出数据类型的选择界面,方法与选择输入转换数据格式相同,打开界面也相同,我们选择Esri Shape作为转换结果的输出格式类型,如图9所示。
图9.转换结果输出类型
直接点击下一步,其他设置都采用默认到最后点击完成就会打开空间数据互操作的工作空间,如图10所示。
图10.空间数据互操作工作空间操作窗体
5.删除数据提取器与载入器之间的连线,然后在左下角的转换库里面找到2DPointAdder工具双击或者拖动到画布区,如图11。
图11.从转换库里面添加转换工具
6.点击数据提取器右侧的绿色箭头拖到转换工具2DPointAdder的输入项INPUT里面,然后点击2DPointAdder工具右侧的红色按钮设置转换参数,在X Value和Y Value右侧的按钮点击会弹出Set To Attribute Value框,如图12所示,并点击右侧的箭头会看到CSV数据中的各列数据的列名,选择对应的X、Y字段。
图12.2DPointAdder转换工具参数设置
图13.输出要素几何类型设置
然后将2DPointAdder转换工具输出口OUTPUT右侧的箭头连接到载入器的左侧箭头处,并点击载入工具右侧的按钮,设置载入要素的几何类型为shape_point,如图13所示。
点击OK后保存,完成空间ETL工具的构建,如图14在上面的工具栏中可以选择三种运行方式执行(批量、单文件、调试)。
图14.空间ETL工作空间工具条
查看执行结果,会显示读入和写入记录条数以及相应的日志记录情况,如图15。
图15.空间ETL转换结果
这样就完成CSV点数据到Shape点要素的转换工作。那么对于线数据的转换与点数据类似,需要注意的是在转换数据选择时选择对应的线数据文件,然后在选择转换工具时需要添加两个2DPointAdder转换工具,然后添加一个PointConnect转换工具将两个2DPointAdder转换工具的结果转换为线要素。2DPointAdder转换工具需要设置的参数与点数据转换类似,分别选择对应的坐标X0,YO和X1,Y1即可,PointConnect转换工具需要将2DPointAdder工具的输出作为它的输入参数,然后点击右侧黄色按钮设置要素区分字段ID0,如图16所示。
图16.线数据转换工具及参数设置
接下来点击载入器右侧的按钮设置载入要素的几何类型为shape_polyline,如图17。同样,保存就完成了线数据转换工具的构建,运行方式与点数据转换相同。
图17.载入要素几何类型选择
7.查看转换结果
图18.点数据转换结果
图19.线数据转换结果
空间ETL与ArcToolbox对比
以上的转换工具在ArcMap的ArcToolbox也能够找到对应的工具。点数据转换工具——ArcToolbox—Data Management Tools—Layers and Table Views—Make XY Event Layer工具和ArcToolbox—Data Management Tools—Features—XY to Line工具。如图20和21所示,只需要选择需要转换的文本文件,然后选择坐标字段,就可以得到对应的要素文件。
图20.XY事件图层工具
图21.XY转线工具
处理结果对比分析。首先,在处理时间上来看。同样280万条记录的点数据,尽管使用ArcToolbox可以采用64位后台处理服务,但是使用空间ETL处理仍然比使用ArcToolbox处理要高效很多。其次,在结果文件(shape)大小方面,空间ETL处理生成的点要素Shape文件要比ArcToolbox工具生成的文件体积小很多。它生成的文件包含三个必须文件(*.shp、*.dbf、*.shx),大小为500多M,而是ArcToolbox处理得到的点要素包含五个文件,大小竟为2G左右,主要差别在dbf文件。再次,在数据完整性方面。使用ETL转换生成的线数据包含了原始文本文件中的所有属性,而使用ArcToolbox处理的线数据文件仅包含坐标字段,如果进行属性关联操作耗时更是无法估计。另外,使用空间ETL还可以进行额外的属性挂接,而ArcToolbox中处理是不支持这些功能的。
总结:在进行空间数据转换过程中应该视具体数据考虑处理方式的选择,对于简单数据处理,可以考虑ArcGIS数据互操作中的快速导入导出以及ArcToolbox中的相关工具。对于海量数据或者需要进行复杂处理的数据,应该直接考虑空间ETL,这样不仅能够提高数据转换处理的灵活性和高效性,在一定程度上还可以保证数据质量。