利用VB编程实现电子水准测量手簿的自动检查
2018-02-03王凯
王凯
摘 要:随着现代测绘科技、仪器的发展进步,测绘技术装备发生了革命性变化。电子水准仪逐渐取代了传统光学水准仪,在水准测量作业中发挥着越来越重要的作用。外业利用电子水准仪进行水准测量结束后,通过内业处理将数据转换为ExcelL格式的电子水准测量记录手簿,但是由于数据量较大,因此手工检查比较费时,且容易出现漏检的情况。本文论述了利用VB编程,实现对电子水准测量记录手簿中单元格的数据进行检查,自动标记出超限的数据,实现水准手簿内业检查的自动化,提高内业工作效率。
关键词:VB Excel 电子水准测量手簿 自动检查
中图分类号:P22 文献标识码:A 文章编号:1674-098X(2017)10(c)-0140-03
1 引言
水准测量是利用水准仪提供的水平视线测定两点间的高差,进而求得测点高程的方法,它是高程测量中最基本、精度最高的一种方法,在国家高程控制测量、工程勘察和施工放样中得到广泛应用。
电子水准仪在现今的水准测量中发挥着重要作用,与传统光学水准仪相比有以下特点。
(1)读数客观:不存在误记问题,没有人为读数误差。
(2)精度高:视线高和视距读数都是采用大量条码分划图像经处理后取平均得出来的,因此削弱了标尺分划误差的影响。多数仪器都有进行多次读数取平均的功能,可以削弱外界条件影响,不熟练的作业人员也能进行高精度测量。
(3)速度快:由于省去了报数、听记、现场计算的时间以及人为出错的重测数量,测量时间与传统仪器相比可以节省1/3左右。
(4)效率高:只需调焦和按键就可以自动读数,减轻了劳动强度。
电子水准仪外业测量结束后,内业数据处理软件可以将外业测量数据处理成规范的电子水准测量记录手簿。图1为一段标准的电子水准手簿记录格式,计算机中电子文档保存为Excel软件的XLS或XLSX格式。
实际测量工作中,由于路线较长,观测天数多,测站较多,某些测站难免会产生一些超限的读数,如视线长度、视距差、视距累积差超限等。在测站较多的情况下,内业检查工作将会花费较长的时间,于是笔者尝试使用VB编程来实现手簿的自动检查。
VB是Visual Basic的简称,是由微软公司开发的结构化、模块化、面向对象的、包含协助开发环境的事件驱动为机制的可视化程序设计语言。从任何标准来说,VB都是世界上使用人数最多的语言。它源自于BASIC编程语言,拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以轻易地使用DAO、RDO、ADO连接数据库,或者轻松地创建ActiveX控件。程序员可以轻松地使用VB提供的组件快速建立一个应用程序。Excel软件本身提供对VBA的支持,VBA是Visual Basic的一种宏语言,主要能用来扩展Windows的应用程式功能,特别是Microsoft Office软件套装。通过Excel的录制宏功能就可以查看到VBA代码,VBA代码通过简单的修改就可以应用于VB编程中来,为软件的编制带来很大的便利。
2 软件设计思路
内业需要进行检查的数据包括视线长度、前后视距差、前后视距累积差、视线高度、高差较差和路线长度。其中视线长度与视线高度即为水准手簿中视距读数和标尺读数,此两项数据是外业观测获得,其余4项均根据视距读数与标尺读数计算得来。因此软件运行时,首先计算前后视距差、前后视距累积差、高差较差和路线长度,然后再判断每个测站有无超限的数据,如果有则弹出提示等待用户检查,如果没有则结束程序(见图2)。
3 软件设计
3.1 软件界面
软件界面分别放置3个下拉列表框,让用户选择所引用的规范、水准等级和水准仪型号,选择完成后在表格中显示对应的水准测量观测技术要求数据,以这些数据作为检查的依据。点击“开始检查”按钮即可开始检查手簿。
3.2 软件代码
由于文章篇幅限制,这里仅列出部分代码:
‘分别定仪EXCEL软件对象、工作簿和工作表
Dim Xlapp As Excel.Application
Dim Xlbook As Excel.Workbook
Dim Xlsheet As Excel.Worksheet
‘定義6个变量,分别获取软件中设置的各项限差
Dim GdSxcd As Single ‘视线长度
Dim GdSjc As Single ‘前后视距差
Dim GdSjljc As Single ‘前后视距累积差
Dim GdSxgd As Single ‘视线高度
Dim GdGcjc As Single ‘高差较差
Dim GdLxcd As Single ‘路线长度
GdSxcd = Val(Lable1.Caption)
GdSjc = Val(Lable2.Caption)
GdSjljc = Val(Lable3.Caption)
GdSxgd = Val(Lable4.Caption)
GdGcjc = Val(Lable5.Caption)
GdLxcd = Val(Lable6.Caption)
‘检查各项数据是否符合水准观测技术要求,如不符合要求,则把此单元格颜色设为红色(单元格的Font.ColorIndex 设为3)
For i = 1 To ZongCeZhan
‘检查视线长度
If Xlsheet.Cells(6 + i * 3, 3) > GdSxcd Thenendprint
Xlsheet.Cells(6 + i * 3, 3).Font.ColorIndex = 3
End If
‘检查前后视距差
If Abs(Xlsheet.Cells(8 + i * 3, 3)) > GdSjc Then
Xlsheet.Cells(8 + i * 3, 3).Font.ColorIndex = 3
End If
‘检查前后视距累积差
If Abs(Xlsheet.Cells(8 + i * 3, 4)) > GdSjljc Then
Xlsheet.Cells(8 + i * 3, 4).Font.ColorIndex = 3
End If
‘视线高度
If Xlsheet.Cells(6 + i * 3, 5) < GdSxgd Then
Xlsheet.Cells(6 + i * 3, 5).Font.ColorIndex = 3
End If
‘检查前后尺两次读数之差,高差较差
If Abs(Xlsheet.Cells(6 + i * 3, 7)) > GdGcjc Then
Xlsheet.Cells(6 + i * 3, 7).Font.ColorIndex = 3
End If
Next i
'检查路线长度
If Xlsheet.Cells(ZongCeZhan * 3 + 11, 4) > GdLxcd Then
Xlsheet.Cells(ZongCeZhan * 3 + 11, 4).Font.ColorIndex = 3
End If
4 结语
软件运行过程中不需要人工进行干预,实现了水准手簿的自动检查,经实测,一个总测站数300站的水准手簿,检查时间仅用5s,大大节省了内业检查的时间。该软件已在笔者单位实际工作中取得了很好的应用效果。
参考文献
[1] GB50026-2007,工程測量规范[S].
[2] GBT12897-2006,国家一二等水准测量规范[S].
[3] 王保国.水准测量计算手簿自动生成的设计与实现[J].江西测绘,2012,91(1):29-30.endprint