杜亮
?
利用Excel VBA結合Access數據庫處理徠卡DNA03測量數據
杜亮
江蘇省劉老澗閘站管理所,江蘇 宿遷 223800
通過Excel自帶VBA語言,對徠卡DNA03的原始數據進行處理,自動將原始數據轉化成江蘇省《水利工程觀測規程》(DB32/T 1738—2011)要求的成果表,繪制垂直位移量圖,同時識別超限數據并標記。將測量數據及處理成果存入Access數據庫。
Excel VBA;Access;成果表;垂直位移量圖;徠卡DNA03電子水準儀
徠卡DNA03電子數字水準儀憑借其出色的性能,高精度(可達到一等水準)以及自動化存儲測量數據功能,廣泛應用于水利系統各大小工程的高程測量中。但是仍存在一些不足,其原始文件(GSI文件)數據生澀,不易解讀(圖1)。按照江蘇省《水利工程觀測規程》(DB32/T 1738—2011)(以下簡稱《規程》)中關于垂直位移觀測相關要求,仍需人工對原始數據進行大量規范化處理及制表。因此按照《規程》開發一套自動化工具用于處理存儲數據,可在提高工作效率的同時進一步精細化、規范化管理工程。

圖1 二等水準原始數據實例
Visual Basic for Applications(簡稱VBA)是Visual Basic的一種宏語言,可用于Microsoft Office軟件功能擴展。由于微軟Office軟件的普及,常見的辦公軟件Office軟件中的Word、Excel、Access、Powerpoint都可以利用VBA實現復雜的邏輯統計,從而提高效率。
本文將簡述利用Excel自帶的VBA語言結合徠卡DNA03原始GSI文件實現數據的處理并生成規范表格及繪制曲線圖,并將成果存入Access數據庫,以實現管理和查詢。
本工具通過VBA修改Excel工作表內的右鍵彈出菜單,選擇菜單內運行工具或者通過快捷鍵(Ctrl+J)即可調出程序。
點擊主程序界面上的“文件導入GSI”彈出選擇文的對話框,用s=Application.GetOpenFilename("gsi文件,*.gsi")篩選文件名后綴為gsi的文件,選擇文件完成導入。用Open s For Input As #1逐行讀取數據,在讀取每行數據時根據GSI文件中的特征值取出觀測等級、高程、距離、高差等數據并進行運算與《規程》中規定的限差一一比較,發現超限的數據便加入程序界面的“檢測信息”欄,雙擊該條目可以快速定位到該數據所在的工作表行列,表內超限數據以高亮標紅并注釋的方式出現(見圖2)。

圖2 二等水準中視視距超限實例
導入GSI測量數據后需要對數據的必要信息進行設置,文件屬性包括測量日期和所屬工程,用于確保數據的唯一性,以存入數據庫便于歸檔、查詢。在日期輸入框內輸入測量日期,輸入框默認為紅色,程序將判斷輸入日期是否合法,如果全部合法將會變為綠色,確定后即可提交。“選擇工程/單位”將會給出已有的工程/單位名稱,如果數據庫中無滿足條件的項目,那么可以根據需要自行添加。完成后,測量數據將會同時獲取該工程所有的測點及編號,同樣測點編號亦可自行添加及修改(見圖3)。

圖3 選擇單位/工程界面
導出成果表最主要的一步是如何獲知該測量數據的觀測路線,這里若是首次使用就必須自行輸入觀測路線。在“工具”的“拓展功能”里有一欄“GSI數據內高程信息”存放著該數據內的所有有效高程。對照觀測路線圖找到對應的高程,雙擊即可輸入該高程對應的測點及編號(見圖4、圖5)。
表1 垂直位移觀測成果表


圖5 添加效果
路線圖將會存入與該數據對應的數據庫內,對于觀測路線固定的工程只需輸入一次即可,再次調用時通過“選擇已有的觀測路線”選擇對應的路線便可以自動與高程數據匹配,極大地減少了內業的重復操作(見圖6)。

圖6 選擇已有的觀測路線
完成以上輸入保存設置,即可生成如表1所示成果表(《規程》格式)。
按照《規程》要求每次觀測均要繪制“垂直位移量分布圖”,即為相鄰底板高程點累計位移量變化曲線。繪制該圖要獲取相鄰底板的位置編號,以及對應的累計位移量。累計位移量在生成成果表的時候已自動存入數據庫,而相鄰的底板位置及編號則要在首次輸入時手動添加一次。
根據水利工程設計或者位置不同底板上的觀測點埋設基本分成兩種:一種為大部分工程底板同側至少安裝兩個觀測點;另一種很多原有工程同側只有一個觀測點,因此成圖也大致分為以下兩種(如圖7、圖8所示)。

圖7 樣式1

圖8 樣式2
在選擇成圖“樣式”后,輸入需要成圖的底板信息即可(見圖9)。

圖9 按順序選擇需要成圖的部位及編號
完成以上設置,確認無誤之后,成圖參數將會保存在對應的數據庫中作為默認參數,地板信息一般不會更改,因此只需首次輸入即可,點擊成圖將自動繪制“垂直位移量分布圖”(見圖10)。

圖10 垂直位移量分布圖
至此由GSI文件導入數據的操作及處理已全部完成,經過以上的設置及輸入,在生成成果的同時,一套完整的工程數據(測點、觀測路線、成果表、垂直位移量分布圖等)也被存入了Access數據庫中。
考慮到以往的觀測數據有很多使用非徠卡DNA03儀器測量或者原GSI文件丟失只有成果表的情況,為了能夠繼續使用該“工具”處理數據并存入數據庫以達到規范化、精細化管理的目的,因此加入了由“成果表導入數據庫”的功能。
在ExceL工具表內任意位置點擊鼠標右鍵,選擇“成果表導入數據庫”,利用RefEdit控件可實現鼠標框選工作表數據源的效果,直接框選成果表(《規程》格式Excel表格)內包含“部位”“編號”及含高程信息的數據源(見圖11)。點擊“數據預覽”(見圖12),如果框選的信息無誤,所選數據將會自動添加入“工具”的Listview控件顯示區域。然后依次選擇工程名稱,輸入測量時間,選擇需要保存入庫的高程信息(單擊高程所處列頂,選擇的列頭將以以“*”顯示),即可存入數據庫[1]。

圖11 選擇數據源

圖12 數據預覽
解決數據處理,提高工作效率固然很重要,但保證原始數據的安全及觀測成果的延續性更是重中之重。因此運用數據庫不僅可以滿足以上要求,更能夠迅速快捷地查詢歷史數據。數據庫的錄入及查詢需要用到SQL語言,該語言可得到VBA的全面兼容。
為了保證數據的正確性和嚴謹性,錄入操作在使用“工具”對數據處理期間同時進行。為防止數據重復,確保數據唯一,每個數據錄入之前均會使用SQL語言的“select”語句對庫內數據進行判斷,如果不存在將作為新數據使用“insert”語句插入,如果已存在就使用“update”語句將原有數據更新為此次輸入的信息[2]。
選擇“數據庫導入”,依次錄入庫中已存在的工程名稱和觀測時間,前面數據處理的時候已經提過,同時滿足這兩個條件即可保證所查數據的唯一性,程序通過篩選將對應的信息概況以控件“Checkbox”顯示出來,存在數據的對應項目名稱前面將會出現“√”。如果發現數據有誤可以選擇“刪除數據”或者“重置”具體的項目。通過該功能可以輕松查看對歷史數據以及其詳細成果分析、成圖[3](見圖13)。

圖13 數據庫操作界面
通過對徠卡DNA03數字水準儀數據文件格式的探討,解決了“水準觀測手簿”格式與“國家水準測量規范”格式的統一,同時也為內業資料處理做好了數據準備,真正做到了內外業數據處理一體化。利用該程序處理數據,節省了大量時間,減少了內業工作量和數據錯誤概率,取得了較好的效果。
[1]徐育康,秦志遠. 測量學[M]. 北京:解放軍出版社,1999.
[2]趙瓊. Visual Basic程序設計[M]. 北京:中國勞動社會保障出版社,2003.
[3]何征坤. 應用Excel批量處理測量數據[J]. 城市勘測,2006(4):49.
Processing Leica DNA03 Measurement Data with Excel VBA Combined with Access database
Du Liang
Jiangsu Liulaojiao Station Management Office, Jiangsu Suqian 223800
The original data of Leica DNA03 is processed by Excel with VBA language, and the original data is automatically converted into the results table required by Jiangsu Province Hydraulic Engineering Observation Regulations (DB32/T 1738—2011), and the vertical displacement map is drawn. At the same time, identify the overrun data and mark it. The measurement data and processing results are stored in the Access database.
Excel VBA; Access; results table; vertical displacement map; Leica DNA03 electronic level
P224.1
A