劉 潔
(湖南省公路設(shè)計有限公司,湖南 長沙 410011)
Excle VBA在水準測量中的應(yīng)用
劉 潔
(湖南省公路設(shè)計有限公司,湖南 長沙 410011)
提出一種基于Excle VBA的水準記錄及平差自動計算表,其可計算二、三、四等水準測量,自動檢測測站數(shù)據(jù)。以四等閉合水準測量為例,本程序可以保存水準測量數(shù)據(jù)及水準平差結(jié)果、查詢水準點間信息,滿足實際外業(yè)數(shù)據(jù)記錄及平差要求,具有一定的實際應(yīng)用價值。
水準測量;Excel VBA;平差;檢查
水準測量及其水準測量平差是測繪外業(yè)的基本任務(wù)之一,水準測量分為外業(yè)水準測量數(shù)據(jù)記錄及內(nèi)業(yè)水準測量平差計算。其中水準測量外業(yè)數(shù)據(jù)記錄一般在相應(yīng)的紙質(zhì)記錄表格上進行,水準平差則借助于相應(yīng)的計算器進行人工計算。當某一測區(qū)水準測量路線較多時,水準測量的數(shù)據(jù)記錄保存及水準平差計算的工作量則會成倍增加,嚴重影響工作效率。Microsoft Excel是大家比較熟悉且界面簡單、易懂的辦公軟件。大多利用Excel提供的VBA編程檢核外業(yè)數(shù)據(jù)或?qū)崿F(xiàn)水準平差,兩者成獨立模塊。本文利用其可視化表格及VBA語言,實現(xiàn)外業(yè)數(shù)據(jù)檢核及內(nèi)業(yè)平差相結(jié)合。本文在已有的水準測量平差計算的模塊上增加了水準測量外業(yè)數(shù)據(jù)記錄功能,實現(xiàn)水準測量平差計算與水準外業(yè)數(shù)據(jù)記錄無縫連接,提高其實際應(yīng)用價值。
Excel中水準測量記錄表及水準平差表的界面應(yīng)與實際測量中紙質(zhì)記錄表界面一致,普通水準測量的外業(yè)數(shù)據(jù)記錄表格表頭,其主要包括前視尺與后視尺上的讀數(shù)。
水準平差計算其包括水準路線類型的選擇、水準點個數(shù)、已知高程點的輸入、表格清屏、水準計算等功能。在水準網(wǎng)平差計算中,程序會根據(jù)水準測量中輸入的水準點個數(shù)自動生成相應(yīng)的計算表格。表格中涉及到Excel VBA中幾類函數(shù),如單元格的合并merge、單元格邊框加粗函數(shù)border、顏色顯示函數(shù)rgb等信息。
3.1 水準記錄表數(shù)據(jù)的調(diào)用
由于水準記錄表格與水準平差表分別在兩個不同工作表中,而水準平差表中水準點之間距離、高差是根據(jù)水準記錄表中記錄數(shù)據(jù)生成的,因此涉及到兩個工作表中數(shù)據(jù)調(diào)用。Excel VBA提供了較為方便的調(diào)用方式,如下面代碼
Sheet2.cells(1,1)=sheet1.cells(1,1)
該代碼實現(xiàn)工作表sheet1中cells(1,1)中數(shù)據(jù)賦值給sheet2中cells(1,1)中數(shù)據(jù)。使用這種原理,即可實現(xiàn)水準平差工作表中必要數(shù)據(jù)根據(jù)數(shù)據(jù)記錄表自動生成。
3.2 高程閉合差計算
附和水準測量的閉合差可根據(jù)公式(1)計算得到
Fh=∑h測-(H終-H始)
(1)
其中,∑h測為相鄰水準點高差之和,F(xiàn)h為水準測量的閉合差。
在Excel VBA中的其實現(xiàn)的部分代碼如下:
......
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 "數(shù)據(jù)有問題,超限", , "警告"
……
本段使用Excel VBA中for循環(huán)語句對所有水準點之間高差進行求和,再根據(jù)理論值與實際值求差得高程誤差,并判斷誤差是否在容許誤差范圍之內(nèi)。如果超出誤差,則提示數(shù)據(jù)有問題的報錯,否則進行下一步操作。
3.3 水準點間高差改正數(shù)計算
高差改正數(shù)可以按照測站間距離或測站數(shù)進行等比例分配誤差。
每km高差的改正數(shù)可根據(jù)公式(2)計算
(2)
其中,L為水準點之間所有距離之和。
各水準點之間的高差改正數(shù)可根據(jù)公式(3)計算
vi=v×Li
(3)
其中Li為任意水準點之間的距離。
其實現(xiàn)的部分代碼如下
…..
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
……
在容許誤差范圍內(nèi),使用for循環(huán)語句進行高差分配,其中相鄰水準點之間的高差改正數(shù)按照與距離成比例進行。
3.4 生成平差報告文件
水準平差計算后得到未知點高程數(shù)據(jù)信息后,以文檔形式進行保存,便于以后數(shù)據(jù)查詢。在Excel VBA中,可以使用相應(yīng)的函數(shù)對結(jié)果進行保存,Excel VBA中提供open與print函數(shù),分別進行文件打開及寫入。其中open函數(shù)格式為:
Open 文件名 for output as # 文件號
在使用open函數(shù)創(chuàng)建文件后,再使用print函數(shù)在文件中寫入內(nèi)容,如水準點高程。
如圖1為某一水準路線水準平差后保存的水準點高程txt文件,其中包括各點高程、閉合水準的閉合差、容許誤差以及每km改正數(shù)等信息。
圖1 水準平差結(jié)果
以一條閉合水準路線為例,輸入起始數(shù)據(jù)及測站數(shù),即可自動生成實際紙質(zhì)水準記錄表格,再按照表頭相應(yīng)內(nèi)容填入各個測站觀測數(shù)據(jù)。最后點擊數(shù)據(jù)預(yù)處理,即可完成其他空余單元格的自動計算。
利用Excel VBA編程實現(xiàn)水準記錄表格數(shù)據(jù)自動檢查、保存及水準平差,生成水準點高程數(shù)據(jù)文件,在水準平差數(shù)據(jù)量較大時,可大大節(jié)省計算耗時。同時計算結(jié)果便于保存,便于今后查閱。
[1] 王漢雄,趙曉東. 基于Excel VBA的等級水準測量記錄軟件設(shè)計[J]. 勘察科學技術(shù),2009,(4):24-26.
[2] 王保國,馮金福,蘇小霞. 水準測量計算手簿自動生成的設(shè)計與實現(xiàn)[J].江西測繪,2012,(1):29-30+22.
[3] 潘建波,謝斌,,凱夫. EXCEL中應(yīng)用VBA實現(xiàn)水準測量的原始計算[J].華北水利水電學院學報,2010,(4):114-115.
2017-04-28
劉潔(1969-),男,湖南長沙人,工程師,研究方向:工程測量。
U412
:C
:1008-3383(2017)07-0024-02