APP下载

基于VBA的土地勘测定界面积计算方法*

2021-04-21谢文珠林童新谢荣安刘桂霞

地矿测绘 2021年1期
关键词:定界汇总勘测

谢文珠,林童新,谢荣安 ,刘桂霞

(1.广东省地质测绘院,广东 广州 510800;2.广州市花都区地籍测量队,广东 广州 510800)

0 引言

土地勘测定界是为自然资源管理部门提供用地审批和地籍管理的技术服务性工作,其成果的准确性、规范性和科学性是自然资源管理部门土地管理的重要依据[1]。土地勘测定界面积量算内容主要包括项目用地面积、项目用地占用基本农田面积、用地范围内原不同权属单位及不同土地利用类型面积。在量算不同权属、不同土地利用类型面积的基础上,分别以市(县)、乡(镇)、村(组)为单位按不同的土地利用类型进行面积汇总,项目用地若占用基本农田,则基本农田保护区划内的土地和基本农田保护区划外的土地应分别统计汇总。

目前常用的面积统计汇总方法是利用CASS软件或者ArcGIS软件将项目用地红线与权属界线、基本农田界线及不同年份的土地利用图斑等采用人工方式进行土地分类面积统计分析。该方法存在一定的弊端,如:人工统计分析面积,逐一填入土地地类分类面积汇总表及集体建设用地变更情况说明表,容易产生错漏;一旦源数据发生错误,则每一步均需重新计算、重新分类统计,工作量大;不同项目之间不能重复使用,可移植性差;检查工作困难等问题[2-3]。因此,本文利用VBA语言编写了一个操作简单的应用程序,该程序能实现土地勘测定界面积汇总的自动批量化处理。

1 技术原理与方法

1.1 程序制作的原理

在利用ArcGIS模型构建器(Model Builder)构建年度土地利用现状分类自动计算面积模型的基础上,使用VBA语言编写程序来提取数据表格并整理数据,最终自动生成土地地类分类面积汇总表及集体建设用地变更情况说明表。

1.2 模型构建器Model Builder

模型构建器Model Builder是一个用来创建、编辑和管理模型的应用程序。使用Model Builder将ArcGIS中的工具串联起来,将复杂的工作流程简化为一个工具,当保存模型时,该模型将变成一个模型工具,实现流程重用,系统工具丰富,采用可视化的方式构建数据处理工作流,基于工具箱内的工具构建自己的建模工具[4]。

1.3 编程语言VBA

VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。它与传统的宏语言不同,传统的宏语言不具有高级语言的特征,没有面向对象的程序设计概念和方法,而VBA 提供了面向对象的程序设计方法,提供了相当完整的程序设计语言,它的编写是以子过程和函数为单位,使用宏记录器记录用户的各种操作并将其转换为VBA 程序代码,这样可以容易地将日常工作转换为VBA 程序代码,使工作自动化[5]。

1.4 程序编制流程

在编写程序前应先收集项目所需要的数据资料:报批范围数据CAD、权属文件shp、报批所需年份土地利用现状等数据资料,然后利用ArcGIS平台的Model Builder访问“空间相交分析”“汇总统计数据”“ 筛选”“合并”等地理处理工具整合所有数据、进行面积统计分析;接着利用VBA如函数Getpivotdata、Iferror等进行二次开发完成制作各类面积表格模板、自动填写表格、检查等工作;最后创建操作窗口界面实现一键提取数据并整理好的数据表格。制作土地勘测定界面积汇总表自动生成程序的流程,如图1所示。

图1 土地勘测定界面积汇总表自动生成程序的流程

2 应用实例

2.1 制作变更数据库

根据《广东省自然资源厅关于建设用地报批地类有关问题的通知》(粤自然资管制[2019]1439号):在建设用地报批组卷时,应按最新的年度土地利用变更调查成果(包括即将发布的“三调”成果及以“三调”为基础的年度土地变更调查成果)确定报批地类。报批用地中涉及违法用地的,必须依法处理到位后,按照违法用地前的地类报批。

依上文要求,在计算过程中需要对建设用地进行年度变更情况说明,因此可以先收集测区报批所需年份变更调查成果,并对测区内所有建设用地的变更情况进行汇总制作变更数据库。

2.2 搭建面积计算模型

在收集项目报批范围数据CAD、权属文件(Shapefile)格式后,利用ArcGIS平台Model Builder工具箱中的工具搭建模型,首先对上述数据进行整合如:统一数据格式、坐标系等工作。完成坐标系定义后再通过“相交”等工具与权属数据、最新年度DLTB变更调查数据、最新年度XZDW变更调查数据进行叠加分析以得到最新年度土地分类数据,再利用“筛选”“相交”等工具,将范围内建设用地地类图斑与变更数据库数据进行叠加分析以得到建设用地年度变更数据(即违法用地变更前地类数据)。最后通过“筛选”及“擦除”工具将最新年度土地分类数据中建设用地图斑删除,利用“合并”工具与建设用地年度变更数据进行合并从而得到报批所组卷时所需的汇总数据[6]。

2.3 自动填写模板表格属性

虽然利用Model Builder搭建的面积计算模型可以很快进行汇总,但是经过模型计算得到的成果数据结构比较分散且无用字段多,与土地勘测定界项目要求的数据表格结构相差甚远,只能经过人工手动慢慢整理。为了让复杂的工作简易化,避免数据回填出现错误,可以通过Excel表格的数据透视表工具对原始数据表格进行重新汇总,同时使用“GetpivotData” 函数(返回存储在数据透视表中的数据),通过行标签及列标签的对应关系,将数据填充到土地分类面积表模版表格中[7-8]。

在数据自动填充后,如果单元格中没数据时,模板表格的单元格在透视表中会显示“#REF!”错误,在此可以增加一个“Iferror” 函数(判断数据的正确性并返回值)清理空值数据,具体公式:Iferror(GETPIVOTDATA("面积",[表一数据.xls]Sheet1!$A$3,"经济社汇",$B7,"DLBM",B$5),""),利用Iferror函数前后效果对比,如图2所示。

图2 利用Iferror函数前后效果对比

2.4 程序实现

在完成面积计算模型及模板表格的制作等工作后,可利用VBA语言编写程序来提取数据表格并整理数据,编制勘测定界程序的主要工作内容及语言如下:

1)制作自动插入数据透视表汇总和成果表格整饰VBA语言模块,部分代码如下:

Sub 表1()

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=

"Database").CreatePivotTable TableDestination:="", TableName:="数据透视表1",DefaultVersion:=xlPivotTableVersion10

ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)

ActiveSheet.Cells(3, 1).Select

With ActiveSheet.PivotTables("数据透视表1").PivotFields("经济社汇总")

.Orientation=xlRowField

.Position=1

End With

With ActiveSheet.PivotTables("数据透视表1").PivotFields("权属")

.Orientation=xlRowField

.Position=2

End With

With ActiveSheet.PivotTables("数据透视表1").PivotFields("DLBM")

.Orientation=xlColumnField

.Position=1

End With

ActiveSheet.PivotTables("数据透视表1").AddDataField ActiveSheet.PivotTables("数据透视表1" _).PivotFields("面积"), "求和项:面积", xlSum

ActiveSheet.PivotTables("数据透视表1").PivotFields("经济社总").RepeatLabels=True

End Sub

2)制作程序窗体,主要代码如下:

复制文件夹并重命名

(CreateObject("Scripting.FileSystemObject").CopyFolder"…",router "...")

删除文件(Kill "…")

调用数据表格及模板表格 (Workbooks.Open Filename:="…")

在不同表格中调用VBA模块(Application.Run "…")

输出成果表格 (ActiveWorkbook.SaveAs Filename:="…")

程序最终操作界面,如图3所示。运行该程序,在界面中输入项目号,然后单击“开始整理面积表”按钮,根据项目号对应的项目所需的各个土地勘测定界面积汇总表就会按土地勘测项目技术要求的格式自动生成[9-10]。

图3 软件操作界面

2.5 应用效果分析

将广清城际轨道项目京广信号楼、狮岭镇军田经济发展用留地、花都区大陵河三华净水厂工程等土地勘测定界项目用传统的方法与本文所述勘测定界程序方法进行比对,对比结果见表1。经比对,所有项目利用本程序能有效减少人工误差,本程序一键生成的土地分类面积汇总表的数据精度均满足每个项目的技术要求,同时本程序操作简单,所投入的人工少,工作效率高。

表1 勘界定界程序与传统方法比较表

3 结束语

本文基于ArcGIS中Model Builder建模与编程语言VBA脚本二次开发等技术,设计并编写了土地勘测定界面积汇总表自动生成程序,并实现了自动化、批量化、一体化的功能,保证了从数据采集、面积计算到表格输出的全过程无缝对接,计算结果准确。实践证明,利用该程序可以减少人工操作,避免人工干预多造成的差错,极大地提高了工作效率。

猜你喜欢

定界汇总勘测
RTK技术在土地勘测定界中的应用研究
常用缩略语汇总
小型无人机在水利工程勘测中的应用研究
系统抽样的非常规题汇总
一类DC规划问题的分支定界算法
勘测设计
基于外定界椭球集员估计的纯方位目标跟踪
水利勘测
勘测设计
供应商汇总