王凱
摘 要:隨著現(xiàn)代測繪科技、儀器的發(fā)展進步,測繪技術(shù)裝備發(fā)生了革命性變化。電子水準儀逐漸取代了傳統(tǒng)光學水準儀,在水準測量作業(yè)中發(fā)揮著越來越重要的作用。外業(yè)利用電子水準儀進行水準測量結(jié)束后,通過內(nèi)業(yè)處理將數(shù)據(jù)轉(zhuǎn)換為ExcelL格式的電子水準測量記錄手簿,但是由于數(shù)據(jù)量較大,因此手工檢查比較費時,且容易出現(xiàn)漏檢的情況。本文論述了利用VB編程,實現(xiàn)對電子水準測量記錄手簿中單元格的數(shù)據(jù)進行檢查,自動標記出超限的數(shù)據(jù),實現(xiàn)水準手簿內(nèi)業(yè)檢查的自動化,提高內(nèi)業(yè)工作效率。
關(guān)鍵詞:VB Excel 電子水準測量手簿 自動檢查
中圖分類號:P22 文獻標識碼:A 文章編號:1674-098X(2017)10(c)-0140-03
1 引言
水準測量是利用水準儀提供的水平視線測定兩點間的高差,進而求得測點高程的方法,它是高程測量中最基本、精度最高的一種方法,在國家高程控制測量、工程勘察和施工放樣中得到廣泛應(yīng)用。
電子水準儀在現(xiàn)今的水準測量中發(fā)揮著重要作用,與傳統(tǒng)光學水準儀相比有以下特點。
(1)讀數(shù)客觀:不存在誤記問題,沒有人為讀數(shù)誤差。
(2)精度高:視線高和視距讀數(shù)都是采用大量條碼分劃圖像經(jīng)處理后取平均得出來的,因此削弱了標尺分劃誤差的影響。多數(shù)儀器都有進行多次讀數(shù)取平均的功能,可以削弱外界條件影響,不熟練的作業(yè)人員也能進行高精度測量。
(3)速度快:由于省去了報數(shù)、聽記、現(xiàn)場計算的時間以及人為出錯的重測數(shù)量,測量時間與傳統(tǒng)儀器相比可以節(jié)省1/3左右。
(4)效率高:只需調(diào)焦和按鍵就可以自動讀數(shù),減輕了勞動強度。
電子水準儀外業(yè)測量結(jié)束后,內(nèi)業(yè)數(shù)據(jù)處理軟件可以將外業(yè)測量數(shù)據(jù)處理成規(guī)范的電子水準測量記錄手簿。圖1為一段標準的電子水準手簿記錄格式,計算機中電子文檔保存為Excel軟件的XLS或XLSX格式。
實際測量工作中,由于路線較長,觀測天數(shù)多,測站較多,某些測站難免會產(chǎn)生一些超限的讀數(shù),如視線長度、視距差、視距累積差超限等。在測站較多的情況下,內(nèi)業(yè)檢查工作將會花費較長的時間,于是筆者嘗試使用VB編程來實現(xiàn)手簿的自動檢查。
VB是Visual Basic的簡稱,是由微軟公司開發(fā)的結(jié)構(gòu)化、模塊化、面向?qū)ο蟮?、包含協(xié)助開發(fā)環(huán)境的事件驅(qū)動為機制的可視化程序設(shè)計語言。從任何標準來說,VB都是世界上使用人數(shù)最多的語言。它源自于BASIC編程語言,擁有圖形用戶界面(GUI)和快速應(yīng)用程序開發(fā)(RAD)系統(tǒng),可以輕易地使用DAO、RDO、ADO連接數(shù)據(jù)庫,或者輕松地創(chuàng)建ActiveX控件。程序員可以輕松地使用VB提供的組件快速建立一個應(yīng)用程序。Excel軟件本身提供對VBA的支持,VBA是Visual Basic的一種宏語言,主要能用來擴展Windows的應(yīng)用程式功能,特別是Microsoft Office軟件套裝。通過Excel的錄制宏功能就可以查看到VBA代碼,VBA代碼通過簡單的修改就可以應(yīng)用于VB編程中來,為軟件的編制帶來很大的便利。
2 軟件設(shè)計思路
內(nèi)業(yè)需要進行檢查的數(shù)據(jù)包括視線長度、前后視距差、前后視距累積差、視線高度、高差較差和路線長度。其中視線長度與視線高度即為水準手簿中視距讀數(shù)和標尺讀數(shù),此兩項數(shù)據(jù)是外業(yè)觀測獲得,其余4項均根據(jù)視距讀數(shù)與標尺讀數(shù)計算得來。因此軟件運行時,首先計算前后視距差、前后視距累積差、高差較差和路線長度,然后再判斷每個測站有無超限的數(shù)據(jù),如果有則彈出提示等待用戶檢查,如果沒有則結(jié)束程序(見圖2)。
3 軟件設(shè)計
3.1 軟件界面
軟件界面分別放置3個下拉列表框,讓用戶選擇所引用的規(guī)范、水準等級和水準儀型號,選擇完成后在表格中顯示對應(yīng)的水準測量觀測技術(shù)要求數(shù)據(jù),以這些數(shù)據(jù)作為檢查的依據(jù)。點擊“開始檢查”按鈕即可開始檢查手簿。
3.2 軟件代碼
由于文章篇幅限制,這里僅列出部分代碼:
‘分別定儀EXCEL軟件對象、工作簿和工作表
Dim Xlapp As Excel.Application
Dim Xlbook As Excel.Workbook
Dim Xlsheet As Excel.Worksheet
‘定義6個變量,分別獲取軟件中設(shè)置的各項限差
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)
‘檢查各項數(shù)據(jù)是否符合水準觀測技術(shù)要求,如不符合要求,則把此單元格顏色設(shè)為紅色(單元格的Font.ColorIndex 設(shè)為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
‘檢查前后尺兩次讀數(shù)之差,高差較差
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 結(jié)語
軟件運行過程中不需要人工進行干預(yù),實現(xiàn)了水準手簿的自動檢查,經(jīng)實測,一個總測站數(shù)300站的水準手簿,檢查時間僅用5s,大大節(jié)省了內(nèi)業(yè)檢查的時間。該軟件已在筆者單位實際工作中取得了很好的應(yīng)用效果。
參考文獻
[1] GB50026-2007,工程測量規(guī)范[S].
[2] GBT12897-2006,國家一二等水準測量規(guī)范[S].
[3] 王保國.水準測量計算手簿自動生成的設(shè)計與實現(xiàn)[J].江西測繪,2012,91(1):29-30.endprint