基于ArcGIS的耕地坡度级别赋值方法研究与应用
2022-04-27刘建华
刘建华
(1.江西省国土空间调查规划研究院,江西 南昌 330025)
2017-10-08,国务院下发《关于开展第三次全国土地调查的通知》(国发〔2017〕48号),通知中明确要求根据《中华人民共和国土地管理法》和《土地调查条例》,国务院决定自2017年起开展第三次全国土地调查(2018年修改为第三次全国国土调查)(以下简称三调),耕地调查是三调的重要任务。耕地净面积计算是耕地调查的核心关键内容,耕地坡度级别属性是影响耕地净面积计算准确性和效率的重要环节。第二次土地调查以来,耕地坡度级别赋值方法研究较多,有最小面积分割法,定量融合指标与软件相结合的方法,基于栅格坡度分级数据完成耕地坡度级别赋值,但赋值速度都较慢[1-4]。江西省三调的地类图斑数量与坡度图图斑数量在第二次土地调查的基础上成倍增长,提升耕地坡度级别赋值速度和效率显得尤为重要。本文重点研究耕地坡度级别赋值方法,并基于此,设计耕地坡度级别赋值技术流程和方法。
1 数据源分析
三调的精度是从第二次土地调查的1:10 000提升到1:5 000,最小上图面积也有所减小,耕地的最小上图面积从600 m2减小到400 m2[5]。耕地最小上图面积的减小,使耕地的调查更加精确,导致地类图斑的数量比第二次土地调查增长了一倍。三调耕地图斑数量见表1(江西省第三次全国国土调查初步成果)。
为了使耕地坡度级别值更加符合耕地精细化调查要求,江西省第三次全国国土调查领导小组办公室决定基于最新的1:10 000万高精度的DEM重新生产全省坡度图,以满足耕地调查的要求。重新生产的坡度图图斑数量与第二次土地调查使用的1:50 000万DEM制作的坡度图图斑数量相比成几何级数增加。三调坡度图图斑数量见表1。
表1 全省二调与三调耕地图斑数量、坡度图图斑数量对比表
2 耕地坡度级别赋值原则
在《第三次全国国土调查技术规程》和《国土调查数据库标准》的基础上,充分考虑江西省三调实际情况,耕地坡度级别赋值主要遵循以下4个原则[6]。
1)不能打破三调调查地类图斑的耕地图斑界线,地类图斑数据中的每个耕地图斑只能赋一个坡度级别。
2)当地类图斑数据中的耕地图斑涉及2个以上坡度级别时,占比面积最大的坡度级别为该耕地图斑的坡度级别。
3)当耕地图斑面积较大、含有2个以上坡度级,且各坡度级耕地面积相当时,可参照坡度分级界线,依据调查底图(DOM)上明显地物界线,可将该耕地图斑划分为2个以上不同坡度级的图斑。
4)对于破碎耕地,其整体视为一个图斑,按上述要求确定坡度级别。
3 耕地坡度级别赋值流程设计
3.1 Arc GIS开发语言实验
ArcEngine(以下简称“AE”)具有简洁、灵活、易用、可移植性强等的特点,大部分开发人员习惯用AE进行二次开发。江西省三调耕地坡度级别赋值功能开发时,利用AE开发的耕地坡度级别赋值功能,在用实例数据测试时发现,地类图斑数据的图斑个数和坡度图图斑个数较少时,功能运行效率未显示异常,图斑个数增多时,运行时间非常长,甚至死循环。通过反复测试分析发现,基于AE开发的耕地坡度级别赋值程序赋值之所以慢,主要是因为AE所消耗的内存极限仅为1 GB,在处理大数据量的坡度图和地类图斑空间赋值时,无法调用更多的内存去处理数据,而且处理大数据量时经常发生内存溢出的情况。
全省三调平均每个县的地类图斑个数在110 000个左右,坡度图图斑个数在240 000个左右。有一半以上的县地类图斑个数超过200 000个,有1/4的县超过300 000个。按照上述基于AE开发的耕地坡度级别赋值程序的赋值速度将严重影响耕地净面积计算效率和三调数据库建设进程,AE本身的局限已无法满足大数据量的处理,只能从底层接口上改变这种情况。
与AE相比,GeoProcessing(以下简称“GP”)运算内核是利用原生态语言C++直接编写,计算时根据输入数据特点直接计算,而利用AE发布的接口再进行调用时,中间多了一层,导致无法针对数据直接计算,所以只能封装成对数据要素多重循环交互计算,时间效率成指数减少。同时,GP运算时所能消耗的内存为2 GB,是AE的两倍,特别是在处理数据量比较大的空间赋值方面比AE优越。利用GP开发的耕地坡度级别赋值功能,在与上述同等基础条件下,地类图斑和坡度图20 000个图斑以内,2 min内完成赋值;图斑数50 000个时,4 min完成赋值;图斑数80 000个时,8 min完成赋值;图斑数100 000个时,9 min完成赋值;图斑数150 000个时,14 min完成赋值。利用GP开发的耕地坡度级别赋值程序在耕地图斑数量超过80 000个时明显优于AE,且随着图斑数量的增加,优势更加明显,大大缩短了耕地坡度赋值时间,从而节省了三调县级数据库建设时间(如图1)。
图1 基于AE和GP耕地坡度级别赋值速度对比
3.2 多线程赋值方法实验
利用GP开发耕地坡度级别赋值程序显著提升了赋值效率。为了进一步加快耕地坡度级别赋值速度,缩短建库时间。本文对赋值方法进一步改进探讨,利用GP构建多线程并行计算的赋值模式。
根据耕地图斑的属性坐落单位代码,将耕地图斑按照行政区划分成多个组,这样,按行政区划分组后的耕地图斑数据量减小,空间叠加效率提升。对分组后的耕地图斑数据同时采用多线程并行计算的方式,多个组并行叠加计算。这样充分利用计算机硬件资源,加快了赋值计算效率。通过实验,分组的个数为20个左右,线程数为4个左右为最佳选择。以县为单元建库,按照乡镇为组划分最为合理。如某县级单元有18个乡镇,根据地类图斑数据的坐落单位将耕地图斑分成18个组,耕地坡度级别赋值程序同时运行4个线程,多线程并行4个组的叠加分析计算,完成一批后再进行下一批计算,直至所有组完成赋值计算。
3.3 赋值技术流程设计
根据上述研究结果,基于ArcGIS GP服务,采用多线程、分乡镇并行技术的方式,针对地类图斑和坡度图大数据的耕地坡度级别赋值,研究制定高效完成耕地坡度级别赋值的技术路线图,为全省三调国土调查数据库建设提供技术保障[10](如图2)。
图2 全省耕地坡度级别赋值技术路线图
1)耕地数据提取。采用选取工具将县级地类图斑地类为“耕地”的数据进行提取。耕地坡度级别赋值时,仅对耕地数据进行加载,这样,可以减少数据叠加分析的数据量,加快计算效率。
2)按乡镇多线程并行进行叠加,为了避免分割耕地图斑,生成耕地数据与坡度图数据的交集表,并将叠加结果填充相应坡度级别和面积值。交集表见表2。
表2 耕地数据与坡度图数据生成的交集表
3)将按乡镇叠加计算的表格进行合并,形成全县耕地数据与坡度图数据的交集表排序表,见表3。
表3 耕地数据与坡度图数据生成的交集表排序表
4 应用实践
根据以上技术流程,在全省范围内,根据不同的地形、不同的地类图斑数量选取数据量较大的6个县级单元进行实验,实验结果见表4。
表4 6个实验区采用不同赋值方法效率统计表
从实验结果看,技术流程和方法切实可行,满足全省三调耕地坡度级赋值及建库要求[7-9]。在全省三调县级国土调查数据库建设应用中,平均每个县耕地坡度级别赋值需要15 min,最快的县只需1~2 min,最慢的县需要30 min。与全省第二次土地调查耕地坡度级别赋值相比,在耕地图斑数量增加2倍,坡度图图斑数量增加8倍的情况下,平均每县的耕地坡度级别赋值减少约30 min,全省减少3 000 min;与其他地区三调耕地坡度级别赋值相比,也有明显减少20 min的优势[6]。
5 结语
本文基于ArcGIS设计的三调耕地坡度级别赋值技术流程和方法,在江西省三调县级级建库工作中,运行稳定,计算准确。提升了县级三调数据库建设速度,加快了全省第三次国土调查工作进程。