森林资源年度监测变化小班提取及数据检查工具开发
2019-12-26代劲松
代 劲 松
森林资源年度监测变化小班提取及数据检查工具开发
代 劲 松
(浙江省森林资源监测中心 浙江杭州 310020)
借助ArcGIS强大的功能扩展能力,使用Python脚本语言,定制了一套专门的工具,主要功能包括:矢量数据多部件检查、小班号重复检查、因子逻辑关系检查、小班拓扑检查和年度监测变化小班提取等,作为森林资源年度监测的专用扩展工具,以减少更新数据中的各种问题。
森林资源;年度监测;GIS开发;Python
作为地球上最重要的资源之一,森林资源处于长期不断变化当中。积极开展森林资源动态监测,及时准确地掌握森林资源状况,可以为更加科学合理地制定林业方针政策提供数据支撑[1, 2]。在森林资源动态监测方面,浙江省近年来开展了大量的工作,其整个监测体系分为省、市、县三级,其中省市级采用样地抽样的方式,而县级监测以二类小班区划为基础,结合每年度的林业生产经营档案、两期遥感判读变化图斑与现地核实的方式逐年更新变化小班[3]。县级森林资源年度监测在经过了几年试点后,从2018年开始在87个县(区、县级市)全面开展。ArcGIS软件作为开展这项工作使用较为广泛的数据处理软件之一,为了保证更新数据质量,减少数据中的错误,借助ArcGIS强大的扩展能力,开发专为森林资源年度监测服务的扩展工具十分必要。
研究基于ArcGIS for Desktop平台进行功能定制,使用Python计算机编程语言为其开发一套专门的工具,以期减少更新数据中的各种问题。
1 开发环境
由美国ESRI公司开发的ArcGIS地理信息系统软件,具有空间分析、数据管理、制图可视化、地理编码等方面的功能,同时还具备高度灵活的定制功能。在ArcGIS for Desktop中,可以使用Python、NET、Java等计算机编程语言通过Addin或调用ArcObjects组件的方式来添加和移除按钮、菜单项、停靠工具栏等,能够轻松定制用户界面,或者使用ArcGIS Engine开发定制GIS桌面应用[4]。
Python是由荷兰科学家Guido van Rossum于1989年设计的一门计算机编程语言,具有以下优点:(1)开源、解释性、面向对象、跨平台的编程语言;(2)把其它语言制作的各种模块轻松地联结在一起的胶水语言;(3)历史悠久,成熟稳定,具有脚本语言中最丰富和强大的类库;(4)简洁清晰的语法,代码强制要求缩进换行;(5)开发效率高[5]。ArcGIS中已经对Python进行了高度集成,主要包括ArcPy包、Python window、Python script tool及Python Addin。ArcPy包是一个Python包,包含对地图操作和地图代数的支持,支持编辑处理和几何操作;Python window使得ArcGIS中可以访问Python,灵活调用GP(Geoprocessing)工具;Python script tool用于创建自定义的GP工具(本研究的扩展工具通过其实现);Python Addin可以利用Python创建自定义的插件。
2 关键技术与运行界面
2.1 工具总体设计
整个工具的设计流程如图1所示。扩展工具包括“年度监测变化小班提取”“多部件检查”“小班号重复检查”“因子逻辑检查”及“小班拓扑检查”。输入数据包括“前期小班”“本期小班”及“标准县界”,均为面状矢量数据。“小班逻辑条件配置文件”和“变化图斑逻辑条件配置文件”作为辅助输入数据,为文本文件格式。“输出结果”中包含了各种检查工具的运行结果,对应的输出格式见表1。其中“多部件检查”及“小班号重复检查”输出格式为标准的DBF文件格式,可以直接用Excel打开查看。“因子逻辑检查”工具输出为CSV文件格式,同样可以直接用Excel打开查看。“小班拓扑检查”工具输出为ArcGIS的文件型地理数据库(File Geodatabase)格式。
图1 变化小班提取及数据检查流程图
表1 数据检查工具输出文件格式
2.2 数据检查工具
数据检查工具设置界面如图2所示。“多部件检查”工具的结果中包含2个字段,“tempUID”字段中记录存在多部件小班的唯一标识,“FREQUENCY”字段中记录该小班的多部件数量(示例见表2)。“小班号重复检查”工具输出结果中包含6个字段,“XIAN”“XIANG” “CUN”“LIN_BAN”及“XIAO_BAN”,分别对应小班的县代码、乡镇代码、村代码、林班号及小班号,“FREQUENCY”记录“县代码+乡镇代码+村代码+林班号+小班号”组合的重复个数(示例见表2)。“因子逻辑检查”工具根据“逻辑配置文件”中的SQL语句查询错误记录数,输出结果中每一条错误对应一行信息,包含逻辑条件的序号、错误解释说明、SQL条件查询语句、涉及的错误记录条数(示例见表2)。“小班拓扑检查”工具主要检查2个方面的内容,分别为小班是否有重叠及小班与县界范围是否完全一致,输出的文件型地理数据库中包含了小班及县界的矢量数据、需满足的拓扑关系和错误信息,可以用ArcGIS打开直接查看。
图2 数据检查工具设置界面
表2 数据检查工具输出结果示例
2.3 变化小班提取
“年度监测变化小班提取”工具设置界面如图3。通过设置“提取条件”“最小变化面积”“变化面积小数位数”,该工具将对“前期小班”和“本期小班”矢量数据进行叠加分析,生成符合浙江省森林资源年度监测格式要求的小班变化矢量数据。“提取条件”为符合ArcGIS标准的SQL查询语句,以9大主要小班因子(地类、起源、优势树种、树种组成、林种、森林类别、事权等级、林地保护等级、国家级公益林保护等级)发生变化为例,其格式可以参考:。
图3 变化小班提取设置界面
3 结语
研究以浙江省森林资源年度监测要求为依据[6],借助ArcGIS的强大扩展能力,使用Python语言定制了一套专门的年度监测工具,包括“多部件检查”“小班号重复检查”“因子逻辑检查”“小班拓扑检查”及“年度监测变化小班提取”。与以往基于开源[7, 8]或商业GIS组件[4, 9-12]的二次开发独立的森林资源管理系统相比,研究所用的方法不仅可以更好地利用现有软件的强大功能,还能够快速地定制出所需的功能模块,更好地应对需求多变的应用场景[13]。
[1] Wang W, Wei X, Liao W, et al. Evaluation of the effects of forest management strategies on carbon sequestration in evergreen broad-leaved (Phoebe bournei) plantation forests using FORECAST ecosystem model[J]. Forest Ecology and Management, 2013,300(2013): 21-32.
[2] 张婉洁, 潘瑶, 王俊, 等. 亚太森林资源可持续发展探析[J]. 西南林业大学学报(社会科学), 2018,2(2): 61-65.
[3] 陶吉兴, 季碧勇, 张国江, 等. 浙江省森林资源一体化监测体系探索与设计[J]. 林业资源管理, 2016,(3): 28-34.
[4] 李超, 罗传文. 基于ArcGIS Engine的森林资源管理系统的设计与实现[J]. 森林工程, 2013,29(1): 15-20+25.
[5] 连高欣, 王琪, 沈岳峰. Python语言在CIMISS中的应用[J]. 气象科技, 2018,46(4): 699-706.
[6] 浙江省林业厅. 浙江省森林资源规划设计调查技术操作细则[M]. 2014.
[7] 糜新宇. 基于开源WebGIS的时态森林资源管理系统研建[D]: 中南林业科技大学, 2017.
[8] 代劲松, 曹林, 温小荣, 等. 基于开源GIS的森林资源管理信息系统设计与实现——以江苏省云台山为例[J]. 南京林业大学学报(自然科学版), 2012,36(5): 174-178.
[9] 任怡, 许等平, 赵彬柱, 等. 内蒙古大兴安岭林区森林资源管理系统的设计与实现[J]. 林业资源管理, 2018,(4): 112-119.
[10]张扬. 基于WebGIS在森林资源管理系统中的应用研究[J]. 中国林业, 2012,(13): 57.
[11]于丽珠, 范文义, 金森, 等. 基于SuperMap IS.NET的分布式森林资源管理系统的设计与实现[J]. 东北林业大学学报, 2011,39(06): 119-124.
[12]葛荣, 高心丹. 基于WEBGIS的塔河林业局森林资源管理系统的设计[J]. 中国林业经济, 2008,(2): 54-56.
[13]Omran A, Dietrich S, Abouelmagd A, et al. New ArcGIS tools developed for stream network extraction and basin delineations using Python and java script[J]. Computers & Geosciences, 2016,94(2016): 140-149.
2019-07-11
代劲松(1985-),博士,工程师,主要从事森林资源监测及GIS、RS林业应用研究;E-mail: 441736944@qq.com。
仙居县2018年度森林资源监测项目(191018-1)
TP319
B
1004-7743(2019)04-0065-04