李張華 姚連璧
摘要:本文主要探討如何利用Microsoft Excel內置的VBA來編寫導線網平差的計算程序的方法。該方法具有計算步驟、計算方法可視化,計算原理、計算公式緊密結合的解題式特點,非常適合剛剛進入測量工作中的工作人員解決測量實踐中平差計算問題并能從基礎逐步掌握測量平差的原理。
關鍵詞:測量誤差;測量平差;導線網;平差計算;最小二乘法
1引言
Microsoft Excel是微軟公司開發(fā)的Office辦公軟件之一,是目前市面上使用率最高也是功能最全面的電子表格軟件。它不僅擁有豐富的電子表格制作和編輯功能,還擁有功能強大的函數(shù)計算功能,能夠創(chuàng)建和編輯函數(shù)公式,可以利用軟件系統(tǒng)本身提供的函數(shù)公式來完成各項復雜的數(shù)學計算。
本文在介紹Microsoft Excel基本的運算操作方法的基礎上,結合平差算例全面闡述Microsoft Excel在導線測量平差中的應用方法。
2閉合導線平差和附合導線平差的基本原理和方法
2.1角度閉合差的計算與調整
(1)計算閉合差:
(2)計算限差:
(3)若在限差內,則按平均分配原則,計算改正數(shù):
(4)計算改正后新的角值:
2.2 坐標增量閉合差的計算與調整
(1) 計算坐標增量閉合差。 有:
導線全長閉合差:
導線全長相對閉合差:
(2)分配坐標增量閉合差
若 K不大于1/2000 ,則將fx、fy以相反符號,按邊長成正比分配到各坐標增量上去。并計算改正后的坐標增量。
2.3坐標計算
根據起始點的已知坐標和經改正的新的坐標增量,來依次計算各導線點的坐標。兩相鄰導線點i,j,已知點的坐標及i點至j點的坐標增量,用下式推算j點的坐標:
閉合導線從已知點開始進行推算回已知點應當與原來的已知數(shù)據值相同,作為推算正確性的檢核。
3基于Excel實現(xiàn)測量平差程序
3.1 Microsoft Excel的基本功能
Microsoft Excel中有大量的數(shù)學公式和數(shù)學函數(shù)可以選擇使用,利用Microsoft Excel可以執(zhí)行許多數(shù)學計算,并且在分析信息和管理電子表格中的數(shù)據信息列表中,可以實現(xiàn)許多便利的功能。
3.2 公式及函數(shù)
3.3 Excel與VBA
Excel 之所以能在工程測量上發(fā)揮其獨到的作用,關鍵在于其有強大的函數(shù)功能。Excel 內置的函數(shù)約 9大類 333 種,還能利用宏自定義函數(shù)。準確使用Excel內置的函數(shù),可以輕松解決各種常見計算問題。
(1) SUB過程
Sub函數(shù)是以Sub…End Sub語句封閉起來的程序塊。每當該函數(shù)被調用時,就會將存放在函數(shù)塊內的語句執(zhí)行一次。執(zhí)行中若碰到End Sub 、Exit Sub或Return便離開函數(shù),回到調用此函數(shù)的下一個語句繼續(xù)望下執(zhí)行。編寫程序時,在模塊、對象類模塊和結構中定義Sub函數(shù)。模塊內的Sub函數(shù)都默認為Public,表示可以從應用程序任何位置調用此Sub函數(shù)。除了Main函數(shù)外,其他函數(shù)是在被調用才執(zhí)行。
Sub函數(shù)定義的語法如下:
[Private∣Public]Sub函數(shù)名稱([參數(shù)類表])
[程序塊]
[Exit Sub]
End Sub
Sub函數(shù)是以Public Sub或Private Sub開頭,最后以End Sub結束。當執(zhí)行到End Sub后即返回緊接再原調用處的下一個語句繼續(xù)往下執(zhí)行。若中途要離開函數(shù),可使用Exit Sub語句。
調用Sub函數(shù)的語法有下列兩種方式:
語法1:Call函數(shù)名稱([參數(shù)列表])
語法2:函數(shù)名稱([參數(shù)列表])
調用程序與被調用程序之間若無數(shù)據傳遞,參數(shù)列表可省略(即不傳任何參數(shù));若不省略,參數(shù)列表的數(shù)目可以是一個或一個以上的參數(shù)。
(2) Function過程
Sub函數(shù)和Function函數(shù)兩者都可以做參數(shù)傳遞,但兩者使用上的主要差異是Sub函數(shù)沒有返回值,F(xiàn)unction函數(shù)則有返回值。有關Function函數(shù)的語法如下:
[Public∣Private] Function函數(shù)名稱([參數(shù)列表]) [As數(shù)據類型]
[語句塊]
函數(shù)名=表達式
[Exit Function]
或(Return表達式)
End Function
測試函數(shù)
IsNumeric(x) 是否為數(shù)字, 返回Boolean結果,True or False
IsDate(x) 是否是日期, 返回Boolean結果,True or False
IsEmpty(x) 是否為Empty, 返回Boolean結果,True or False
IsArray(x) 指出變量是否為一個數(shù)組。
IsError(expression) 指出表達式是否為一個錯誤值
IsNull(expression) 指出表達式是否不包含任何有效數(shù)據 (Null)。
IsObject(identifier) 指出標識符是否表示對象變量
4基于Excel的閉合導線測量平差
4.1表格創(chuàng)建與數(shù)據錄入
4.2 VBA程序設計
打開VBAProject的sheet1代碼窗口錄入代碼,并添加窗口,界面及運算結果如下圖所示:
點擊計算后,顯示計算結果如下:
5結論
Excel 功能強大,易學易操作,如果將相關程序編在一個文件下不同的工作簿中,并用適當語句將計算結果傳至其它工作簿,就會形成數(shù)據共享,大大提高計算速度,而且對老版本下所編程序,新版本對其有自動升級功能。總之只要Excel 軟件有一定了解,同時參考本例的基本思路,結合各自單位儀器、《規(guī)范》 及具體作業(yè)習慣,量體裁衣,大家一定能在較短的時間內編出適合自己具體情況的專用程序。
參考文獻:
[1]李孟山、張文彥編.工程測量概論.西安地圖出版社.2004.
[2]美John Walkenback著.Excel 2003 高級VBA編程寶典.電子工業(yè)出版社.
[3]孔祥元.國家標準新版GB50026-2007工程測量規(guī)范.武漢大學出版社.
(作者單位:同濟大學)