Excle VBA在水准测量中的应用
2017-09-20刘洁
刘 洁
(湖南省公路设计有限公司,湖南 长沙 410011)
Excle VBA在水准测量中的应用
刘 洁
(湖南省公路设计有限公司,湖南 长沙 410011)
提出一种基于Excle VBA的水准记录及平差自动计算表,其可计算二、三、四等水准测量,自动检测测站数据。以四等闭合水准测量为例,本程序可以保存水准测量数据及水准平差结果、查询水准点间信息,满足实际外业数据记录及平差要求,具有一定的实际应用价值。
水准测量;Excel VBA;平差;检查
1 引 言
水准测量及其水准测量平差是测绘外业的基本任务之一,水准测量分为外业水准测量数据记录及内业水准测量平差计算。其中水准测量外业数据记录一般在相应的纸质记录表格上进行,水准平差则借助于相应的计算器进行人工计算。当某一测区水准测量路线较多时,水准测量的数据记录保存及水准平差计算的工作量则会成倍增加,严重影响工作效率。Microsoft Excel是大家比较熟悉且界面简单、易懂的办公软件。大多利用Excel提供的VBA编程检核外业数据或实现水准平差,两者成独立模块。本文利用其可视化表格及VBA语言,实现外业数据检核及内业平差相结合。本文在已有的水准测量平差计算的模块上增加了水准测量外业数据记录功能,实现水准测量平差计算与水准外业数据记录无缝连接,提高其实际应用价值。
2 水准测量记录、平差表界面设计
Excel中水准测量记录表及水准平差表的界面应与实际测量中纸质记录表界面一致,普通水准测量的外业数据记录表格表头,其主要包括前视尺与后视尺上的读数。
水准平差计算其包括水准路线类型的选择、水准点个数、已知高程点的输入、表格清屏、水准计算等功能。在水准网平差计算中,程序会根据水准测量中输入的水准点个数自动生成相应的计算表格。表格中涉及到Excel VBA中几类函数,如单元格的合并merge、单元格边框加粗函数border、颜色显示函数rgb等信息。
3 水准平差的计算
3.1 水准记录表数据的调用
由于水准记录表格与水准平差表分别在两个不同工作表中,而水准平差表中水准点之间距离、高差是根据水准记录表中记录数据生成的,因此涉及到两个工作表中数据调用。Excel VBA提供了较为方便的调用方式,如下面代码
Sheet2.cells(1,1)=sheet1.cells(1,1)
该代码实现工作表sheet1中cells(1,1)中数据赋值给sheet2中cells(1,1)中数据。使用这种原理,即可实现水准平差工作表中必要数据根据数据记录表自动生成。
3.2 高程闭合差计算
附和水准测量的闭合差可根据公式(1)计算得到
Fh=∑h测-(H终-H始)
(1)
其中,∑h测为相邻水准点高差之和,Fh为水准测量的闭合差。
在Excel VBA中的其实现的部分代码如下:
......
For i = 1 To n - 1
sumgcgz = Cells(2 * i + 6, 4) + sumgcgz
Next i
fh = Round((sumgc - (Cells(2 * n + 5, 6) - Cells(7, 6))) * 1000)
fh1 = Round(2 * (Cells(2 * i + 8, 2) / 1000) ^ 0.5)
If Abs(fh) > Abs(fh1) Then
MsgBox "数据有问题,超限", , "警告"
……
本段使用Excel VBA中for循环语句对所有水准点之间高差进行求和,再根据理论值与实际值求差得高程误差,并判断误差是否在容许误差范围之内。如果超出误差,则提示数据有问题的报错,否则进行下一步操作。
3.3 水准点间高差改正数计算
高差改正数可以按照测站间距离或测站数进行等比例分配误差。
每km高差的改正数可根据公式(2)计算
(2)
其中,L为水准点之间所有距离之和。
各水准点之间的高差改正数可根据公式(3)计算
vi=v×Li
(3)
其中Li为任意水准点之间的距离。
其实现的部分代码如下
…..
For i = 1 To n - 1
Cells(2 * i + 6, 5) = Cells(2 * i + 6, 3) + Cells(2 * i + 6, 4) / 1000
Next i
For i = 1 To n - 2
Cells(2 * i + 7, 6) = Cells(2 * i + 5, 6) + Cells(2 * i + 6, 5)
Next i
……
在容许误差范围内,使用for循环语句进行高差分配,其中相邻水准点之间的高差改正数按照与距离成比例进行。
3.4 生成平差报告文件
水准平差计算后得到未知点高程数据信息后,以文档形式进行保存,便于以后数据查询。在Excel VBA中,可以使用相应的函数对结果进行保存,Excel VBA中提供open与print函数,分别进行文件打开及写入。其中open函数格式为:
Open 文件名 for output as # 文件号
在使用open函数创建文件后,再使用print函数在文件中写入内容,如水准点高程。
如图1为某一水准路线水准平差后保存的水准点高程txt文件,其中包括各点高程、闭合水准的闭合差、容许误差以及每km改正数等信息。
图1 水准平差结果
4 实验验证
以一条闭合水准路线为例,输入起始数据及测站数,即可自动生成实际纸质水准记录表格,再按照表头相应内容填入各个测站观测数据。最后点击数据预处理,即可完成其他空余单元格的自动计算。
5 总 结
利用Excel VBA编程实现水准记录表格数据自动检查、保存及水准平差,生成水准点高程数据文件,在水准平差数据量较大时,可大大节省计算耗时。同时计算结果便于保存,便于今后查阅。
[1] 王汉雄,赵晓东. 基于Excel VBA的等级水准测量记录软件设计[J]. 勘察科学技术,2009,(4):24-26.
[2] 王保国,冯金福,苏小霞. 水准测量计算手簿自动生成的设计与实现[J].江西测绘,2012,(1):29-30+22.
[3] 潘建波,谢斌,,凯夫. EXCEL中应用VBA实现水准测量的原始计算[J].华北水利水电学院学报,2010,(4):114-115.
2017-04-28
刘洁(1969-),男,湖南长沙人,工程师,研究方向:工程测量。
U412
:C
:1008-3383(2017)07-0024-02