“三调”是一次重大国情国力调查,其数据成果可以全面客观地反映我国国土利用状况,以及耕地保护、生态建设、集约用地等方面存在地问题。
单单有“三调”数据库的矢量数据,并不能对土地利用现状的分类、总体情况有一个整体的把握。这时候,我们就需要对“三调”数据做地类汇总的统计工作。
本文利用FME对“三调”数据作多表格的统计,统计级别到县、镇、村。
表内部:
对于多个表格的统计,我们可以添加多个excel的读写模块,一个一个地统计表格并写出。但是由于各个表格之间的统计过程有一定的相似性,我们可以合并中间相似过程,以提高模板的可维护性,并考虑用一个excel写模块完成上述统计。
进行地类统计前,首先需要解决三个问题:
- 汇总表格保留各自的表头
- 汇总表格要适用不同县、镇、村
- 不同表格按表头所对应列数写出
针对第一个问题,为每个统计项建立excel模板文件,在模板文件名末尾加上行数(从第几行开始插入统计数据),以此来传入保留表头需要用到的参数。
因为我们只用一个excel写模块,对于多个表格,excel模板文件也有多个,因此,无法使用excel的Template File参数。考虑在写出excel表格之前将需要输出的excel模板文件复制过去,然后再插入数据。
在插入数据时,按照行数,在excel的写模块处设置插入的行位置:
对第二个问题,由于不同的县级行政区,有不同数量的镇、村,因此需根据“三调”数据库的行政区划图层,将县、镇、村按等级排序,并计算相应的县、镇、村所在的行数,再写入模板文件,结果如下:
可以看到,除了按等级写出县、镇、村,还可以在每个等级之间插入一行空白行,以此间隔县、镇;并加黑县、镇、村所在单元行,提高excel的可读性。要加黑县、镇、村所在行,需要在FME中将excel单元格的格式属性读取出来:
并对该属性值作相应的修改,以达到加黑单元格的目的。
对第三个问题,由于不同的表格对应的列数不同,列的属性不同,我们在写出时,需根据不同的表写出对应的列。可以利用excel写模块的动态输出模式达到该效果:
在写出前自行算出需要写出的列名,列名按照A,B,C,…Z,AA,AB,…AZ,BA…排列。
如此,我们可以着眼于“三调”数据的统计了。统计时,主要用到FME的StatisticsCalculator和Pivoter转换器。StatisticsCalculator完成地类的统计功能,Pivoter实现透视表功能:
完成透视表之后,便获取到相应的数据汇总结果。
为了在输出时可以选择计算、输出某些表,可以在FME中设置choice参数,以此来选择输出哪些表格:
针对“三调”的统计,还有一个不可忽略的问题是各地类数据,各镇、村汇总数据,保留两位小数后,需要做面积平差,这可根据不同的平差要求做相应的处理。
如此,完成“三调”数据汇总统计。