基于FME实现国土二调图斑地类净面积高效自动化计算技术研究
2023-09-23韦前
韦前
(黔南州自然资源调查规划院 贵州黔南 558000)
FME 软件是加拿大Safe Software 公司开发的空间数据转换处理系统。支持超过270多种不同空间数据格式(模型)之间的转换,为进行快速、高质量、多需求的数据转换应用提供了高效、可靠的手段[1]。FME 致力于将GIS要素同构化并向用户提供组件以使用户能够将数据处理为所需的表达方式,整个过程无须写任何代码,直接调用相应的转换器即可。
目前,建设用地审查报批地类认定需追溯至2009年,“二调”图斑地类净面积计算较为复杂,目前主流做法主要是使用ArcGIS空间分析功能,人工一步步地分析统计[2];或基于ArcGIS 的模型构造器搭配Python 脚本,即“建模+人工统计”等半自动方式来实现图斑净面积的测算[3],但由于“二调”数据的DLTB、LXDW、XZDW内部以及各图层之间存在拓扑错误,导致该方法计算得到的图斑净面积精度不高,加上计算过程较复杂、不够严谨,导致适应性不佳。
本文针对“二调”图斑地类净面积计算的特点,通过基于FME 软件开发了一套实现高效读取基础数据库、精准处理、自动生成地类结构面积表的模板,有效解决了自然资源管理领域需要计算图斑地类净面积的耗费的大量人力物力。
1 研究思路
首先研究“二调”数据库标准[4],确定图斑面积、零星地物面积、线状地物面积和田坎面积的计算方法、计算路径,以及各项参数的数据来源。数据库在建立之初,以上各类面积已经计算好并存在DLTB、LXDW、XZDW这3个要素类中。但是在实际使用时会有图斑发生分割的情况,此时就需要以上几类面积进行重新计算。
图斑地类净面积在数据库中对应的字段名称为TBDLMJ,其计算过程如式(1)所示:
式(1)中:TBDLMJi为图斑i的地类净面积;TBMJi为图斑面积;XZDWMJj该图斑内线状地物j的面积;LXDWMJj为该图斑内零星地物j的面积;TKMJi为田坎面积。
线状地物面积在数据库中对应的字段名称为XZDWMJ,其计算过程如式(2)所示:
式(2)中:CDi为线状地物宽度;KDi为线状地物宽度;KCBLi为线状地物扣除比例,取值为0.5或者1。
田坎面积在该图斑内的所有线状地物和零星地物面积计算完毕之后,根据田坎系数来计算得到,其计算过程如式(3)所示:
式(3)中,TKXSi为该图斑的田坎系数。
文章基于FME 实现国土二调图斑地类净面积的技术路线如图1所示。
图1 技术路线图
1.1 线状地物扣除分析
根据“二调”数据库标准分析得知,线状地物扣除比例是由线状地物与图斑的关系决定的。当线状地物位于两个图斑的边界上,则该线状地物分别被两个图斑各扣除50%,KCBL 取值为0.5,KCTBBH1 和KCTBBH2记录相应两个地类图斑的图斑编号;当线状地物位于单个图斑内,则该线状地物全部被这个图斑扣除,KCBL取值为1,KCTBBH1 记这个地类图斑的图斑编号,KCTBBH2为空。这里如果采用ArcGIS软件相交分析,受拓扑不严谨和软件容差的影响,可能使本来与某个地类图斑存在继承扣除关系的线状地物没有与对应地类图斑相交上,导致后面的计算全错。FME 可以根据TBBH 和KCTBBH 来实现线状地物和地类图斑之间的继承关系来挂接,完美避开了这种问题。
1.2 零星地物扣除分析
零星地物只会位于某个地类图斑的内部,LXDW的ZLTBBH 记录所属地类图斑的图斑编号,ZLDWDM 记录该零星地物所属的村级坐落代码,TBBH的值只会在一个村范围内是唯一的。同样,如果这里采用ArcGIS相交分析,受拓扑不严谨和软件容差的影响,本来属于某个地类图斑的零星地物可能会落在边界上或边界外的情况。而FME可以根据TBBH和ZLDWDM来实现零星地物和地类图斑图层之间的继承关系来挂接,就不存在这种错误。
2 数据处理工作流程
2.1 高效读取数据
由式(1)可知,计算图斑净面积时需要DLTB、XZDW、LXDW这3个图层。在ArcGIS中需把3个图层所有要素全部读取参与计算,读取慢、程序运行也慢。FME可以实现按范围读取数据,只需在Feature Reader 转换器的Spatial Filter(空间过滤)选中Bounding Boxes OGCIntersect(外接矩形相交)即可实现只读取与项目范围线的外接矩形相交或包含的所有要素。
2.2 扣除面积的计算步骤
(1)通过项目范围线使用Clipper转换器得到项目范围内的DLTB、XZDW、LXDW这3个图层。
(2)DLTB、LXDW 和XZDW 的整理。DLTB 使用Aggregator 转换器添加BSM 字段来分组融合DLTB 要素,使往下的步骤都还原到原始的图斑上去。重新计算面积,并过滤掉小于0.1 m2因容差产生的细小碎斑。LXDW只需换算单位。XZDW需重新计算长度并根据宽度计算面积,因为一个线要素有KCTBBH1和KCTBBH2,需要分离成两个要素,分别去参加下一步的挂接。
(3)LXDW、XZDW挂接到DLTB。LXDW使用FeatureMerger转换器,通过TBBH和ZLDWDM的一致性匹配来挂接。因一个DLTB要素可能会涉及多个LXDW,所以此处需勾选FME软件强大的Generate List(生成列表)功能,使多个LXDW以List(列表)的形式挂接到同一个DLTB要素上去,实现一对多的连接,这是ArcGIS软件无法实现的[5]。XZDW采用KCTBBH和ZLDWDM来挂接,同时勾选列表。
(4)汇总各类扣除面积。使用ListSummer 转换器分别汇总每个地类图斑要素的线状地物和零星地物面积,分别存放在XZDWMJ和LXDWMJ字段中。
(5)计算田坎面积。根据前面步骤计算并存放在字段中的图斑面积、线状地物面积和零星地物面积,使用式(3)计算田坎面积。
3 分类计算图斑地类净面积
根据以上步骤计算汇总之后,此时用式(1)计算图斑地类净面积,可能会出现扣除面积大于图斑面积而地类净面积位为负值的异常情况。根据图斑面积与扣除面积之间大小关系分3种情形分别处理(见图2)。
图2 分不同情况分别计算地类净面积
(1)当“图斑面积-线状地物面积-零星地物面积-田坎面积>0”时,直接按式(1)计算图斑地类净面积和田坎面积,而线状地物和零星地物直接使用List Exploder 转换器把每个地类图斑要素挂接的所有的线状地物和零星地物分离开来,然后使用Statistics Calculator转换器按地类名称分组分别统计各地类面积[6]。
(2)当零星地物大于图斑面积时,按图斑地类净面积直接取值为图斑面积,地类按全是零星地物的地类,其余同上。
(3)当线状地物大于图斑面积时,按图斑地类净面积直接取值为图斑面积,地类按全是线状地物的地类,其余同上。
4 汇总项目区范围内各地类面积
(1)首先使用读入一个地类结构面积表,然后通过使用Feature Merger转换器,以DLMC作为匹配字段,使上一步按3种情形计算得到的各类面积挂接到面积表中去,因为一个地类名称会有多个匹配项,只有一个图斑地类,但是零星地物和线状地物,需要在Feature Merger转换器中开启列表功能[7]。
(2)使用List Summer 对上一步的列表记录分别每种地类图斑汇总零星地物面积和线状地物面积。
(3)将每种地类的图斑地类面积、线状地物面积和零星地物面积合计,存入地类面积字段。
5 成果输出
经过排序、删除数据处理过程产生的多余字段等整理工作后,在FME软件写模块的Parameter(参数)里的Templatefile(模板文件)选择二调地类结构面积表作为模板输出表格[8],最后直接在项目范围线所在文件夹生成结果表格。
6 典型应用案例
本文介绍的图斑地类净面积计算程序应用于某公路项目地类面积统计,该项目占地面积为56.59 hm²,全长为52.63 km,涉及214个“二调”地类图斑、7个零星地物和247条线状地物,整个FME模板运行仅用了6.1 s。应用于某水库项目地类面积统计,该项目占地面积114.18 hm²,涉及71个“二调”地类图斑、5个零星地物和89条线状地物,整个FME模板运行仅用了4.0 s。可以概略估算本文介绍的图斑地类净面积比传统方法快上百倍。
7 结语
本文在研究国土二调数据标准和分析图斑地类净面积计算公式的基础上,利用FME软件只需选定需要查询的“二调”年度和需要查询的范围线,通过多个功能转换器数据处理,在没有使用专门建库软件和敲写代码编程的情况下,实现了零代码计算图斑地类净面积,门槛低、便于操作,方便进一步修改,运行效率高,程序均在几秒之内运行结束。整个计算过程流程化,可读性强和方便推广;同时能根据实际情况和各地要求,对程序进行针对性调整,具有很好的适应性,能胜任快速地计算图斑地类净面积,为国土空间用途管制、耕地保护等领域提供高效的解决方案。