2017年10月,国家正式启动第三次全国土地调查。国务院机构改革中自然资源部组建后,第三次全国土地调查报经国务院同意正式更名为“第三次全国国土调查”,最终正式形成了涵盖各类自然资源在国土空间上分布的调查数据,并作为后续国土空间规划编制的底图数据。国土空间数据具有统一的分类标准与数据存储方式,使用Python语言和地理信息处理工具可以实现多个地理处理功能的组合嵌套、循环执行,使国土空间数据分析批量化、流程化,有效提高自然资源资产审计工作数据分析效率。本文以某省领导干部自然资源资产离任审计为例,介绍这一技术的应用逻辑和方法。
一、Python技术与Arcpy模块
Python作为一种通用的编程语言,不仅可用于编写大型程序,更适用于交互式操作并快速编写批处理脚本,因此许多地理信息系统软件提供了适用于Python的模块。以Arcpy模块为例,审计人员可以高效地通过 Python语言对地理空间数据进行管理、处理和分析,且只需在Python中安装该模块即可使用各种空间数据处理功能,完成对国土空间数据的自动处理。Arcpy模块的以下功能适用于国土空间数据的分析。
(一)数据读取功能
为实现国土空间数据批处理,审计人员首先需要在遍历过程中读取地理信息数据。Arcpy模块提供了多个函数用于读取矢量数据,并可以将这些矢量数据返回为一个矢量数据组成的列表。审计人员得到矢量数据列表后,可以通过Python脚本对列表中的数据进行遍历实现自动处理多项数据的功能。
(二)数据分析功能
空间数据处理与分析是地理信息系统软件的核心功能,类似于结构化数据分析。通过叠加、擦除等各类空间数据操作,审计人员可以得到以空间数据形式反映的分析结果。Arcpy模块通过Python脚本代码将一系列空间数据处理分析函数嵌套在数据流程中,实现多个地理信息数据处理功能的组合嵌套、循环执行,进一步实现国土空间数据分析的流程化、自动化。
(三)常用的Arcpy函数
使用Arcpy函数前,审计人员需要在脚本中使用import语句导入Arcpy,然后使用Arcpy提供的空间数据读取和分析功能。表1列示了在自然资源资产审计中常用的函数。
二、审计应用实例
以某省领导干部自然资源资产离任审计为例,由于审计内容涉及生态环境中的土地、林草、水等各类资源保护和自然保护区建设管理和污染防治等事项,审计人员需要进行分析的数据范围及工作量庞大。笔者以建设项目、光伏项目和永久基本农田管护审计等事项为例,说明利用Python技术结合地类分析模块实现自动化数据分析的思路与操作流程。基本思路流程如图1所示。
(一)分析某建设项目违规占地的情况
审计人员叠加分析建设项目用地审批数据与土地范围数据,包括耕地数据、森林保护范围、河道管理范围等,得到建设项目违规占地的疑点线索,通过对项目审批文件进行核查,发现未审批先建设且违规占地等行为。具体操作流程如下。
步骤1:根据地理信息系统软件安装模块下附带的Python程序编辑器,编辑Python脚本程序。
步骤2:在Python脚本程序中导入Arcpy模块,利用Arcpy模块中的arcpy.env.workspace函数,将存储基础数据的文件路径设置为数据处理空间。
步骤3:利用Arcpy模块中的arcpy.ListFeatureClasses函数,读取当前数据处理空间中存储的建设用地和耕地、林草等各类管理范围数据,再通过arcpy.Intersect_analysis函数将建设用地与各类用地管理范围数据分别叠加比对,将得到的疑点项目输出到数据管理空间。
步骤4:利用地理信息系统软件重点分析得到的疑点项目与相关项目的批准文件进行比对,进一步分析项目建设程序是否合规。
(二)分析光伏项目建设是否破坏生态环境
审计人员将光伏项目用地与各类自然保护地、林草保护范围等进行比对。其中,国土变更调查数据量较大,一般分县区存储;光伏板区图层数据量较小,可以直接提取各县区光伏板区图层,将其合并为全省光伏板区图层,并与全省自然保护区、林草等保护范围数据相交作为数据分析结果。具体操作流程如下。
步骤1:打开程序编辑器,设置工作空间。
步骤2:利用P yth o n 程序循环控制函数和A r cp y模块中的arcpy.ListFeatureClasses函数,循环读取基础数据文件夹中不同县区土地利用数据库中的光伏板区图层,并在循环控制结构中通过arcpy.Merge_management函数,将读取到的各县区光伏板区数据合并为一个待处理的数据图层。
步骤3:将步骤2生成的待处理数据图层分别与自然保护区、林草保护范围等图层通过arcpy.Intersect_analysis函数相交,获得重叠的疑点图斑,输出为数据分析疑点数据,并利用地理信息系统软件进行后续内业影像分析和现场核查。
(三)分析永久基本农田被占用情况
审计人员分析自然资源耕地保护部门的永久基本农田保护区划定数据和自然资源调查监测部门的土地利用现状数据时发现,两项数据均以县为单位进行存储,文件名称均包含行政区划代码,各县区数据量均比较大,如果合并后相交十分耗费计算资源。因此,审计人员读取永久基本农田保护区和国土变更调查地类图斑数据,以行政区划代码进行匹配,分别相交并提取属性为非耕地的图斑进行合并得到数据分析结果,再进行重点核实确认。具体操作流程如下。
步骤1:打开程序编辑器,设置工作空间。
步骤2:利用P yth o n 程序循环控制函数和A r cp y模块中的arcp y.ListFeatureClasses函数,循环读取各县区永久基本农田保护数据和土地调查数据,并在循环控制结构中依次存储在Python程序的列表数据结构中,形成两类数据的存储路径列表。
步骤3:利用Python程序的双重循环控制功能,在两层循环控制的过程中分别读取两类数据列表中存储的各县区数据,并通过Python程序的分支结构判断读取的两类数据是否为同一行政区域。如果行政区划代码相同,则视为同一地区,进入下一步骤;如果行政区划代码不同,则视为不同地区,重复本步骤的循环结构,直至依次读取完数据存储空间中全部待比对县区的土地利用现状数据与永久基本农田划定数据。
步骤4:利用Arcpy模块中的arcpy.ListFeatureClasses函数,读取两类数据,并用arcpy.Intersect_analysis函数进行相交,将结果存放在临时存储路径中,在循环结构完成后,将临时存储路径存放的所有相交结果通过arcpy.Merge_management函数合并,得到全区域的数据分析结果。
步骤5:利用地理信息系统软件打开数据分析结果,结合内业影像分析和现场核查,确定问题地块,延伸审查是否存在永久基本农田被占用的情况。
(作者:审计署驻郑州特派员办事处 刘巨峰)
(本文转载自《中国审计》2023年第19期)