李 冰,余代俊
(成都理工大學 地球科學學院,四川 成都610059)
徠卡數字水準儀質量好、精度高、操作方便,適應多種惡劣環境并且可以在保證測量精度的同時進行夜間作業[1],因而廣泛用于地鐵、高速鐵路、基坑、大壩等監測以及各種精密水準測量中。
對水準原始數據的編輯目前以兩種方法為主,一種是基于C#語言對已有平臺進行二次開發,比如對徠卡的數據處理軟件LGO進行的二次開發[2]、基于PDA平臺的水準一體化測量系統的開發[3];另外一種是基于VB語言以EXCEL為平臺的后處理程序設計。
可是當前多數徠卡數字水準儀數據處理程序大多以GSI格式原始數據為對象,以測量結果平差為導向進行設計[4],忽略了測量數據的增減變更、替換,致使最終所需原始觀測數據紊亂。本文提出了原始觀測數據的整理重構技術與方法,解決了在工程實踐中對原始觀測數據進行增減、替換繼而重新計算、輸出的難題。
徠卡數字水準儀測量的數據會自動以二進制格式存儲在儀器內存中,并且將數據轉換成多種格式,可以在數據輸出菜單下操作完成,格式分兩類,標準格式與自定義格式,標準格式分為XML與GSI,其中GSI分為GSI-8(數據位為8位)和GSI-16(數據位為16位);自定義格式主要為TXT文本格式:英文顯示、只顯示測站高差、中文顯示。GSI與XML格式是以固定格式存儲的測量文件,處理時需采用徠卡公司研發的軟件Leica Geo Office(LGO)或Level Pak-Pr o進行處理[5],由于 LGO 支持Leica所有儀器類型,以統一的方式管理TPS、GPS和水準數據,界面稍顯復雜,對使用者而言操作略顯繁瑣。使GSI與XML類文件時,需用專業軟件或程序語言進行訪問,并且熟悉其測量格式,對于多數工程人員而言操作過于復雜。
中文顯示的數據由標題部分(名稱、測段名、時間、起始點、開始高程)、數據部分(點號、中絲讀數、視距)和統計部分(本站視距、本站高差、累計視距、累計高差、目標高程、精度檢查)三部分構成,并且數據部分文字與讀數的字符間隔固定。其樣式如圖1所示。

圖1 原始格式
水準測量及數據整理中,對原始數據要求:
1)不得擅自修改原始觀測數據。
2)原始觀測數據隨水準路線前進方向按照測段有序排列。
3)能夠快速讀取每個測段的高差與距離數據。
4)原始數據中間出現不合格數據時,可以用新觀測的數據進行替代,并且保持測段整體數據的規整。
對原始數據格式分析后,采用易于操作的EXCEL平臺,通過調用宏,用VBA程序語言在后臺進行編輯處理,實現精確重構,最后輸出原始格式的數據[6-7]。
本程序導入數據時采用EXCEL導入文本功能,使用分隔符時采用空格與自定義西文冒號,導入新建表格中。此外也可使用VBA程序語言中Add方法或者open語句實現將文本數據合理導入EXCEL文件。
在程序中預置各等級水準測量限差。對于四等水準測量前后視距差應小于3 m,前后視距累計視距差應小于10 m[8],部分代碼:
For i=1 To 180
If Abs(Sheet1.Cells(11+10*(j-1),5).Val ue-Sheet1.Cells(12+10* (j-1),5).Val ue)>3 Then
Msg Box"超限!",vb OKCancel,"提醒"
End If
Next i
分析固定規律排列的原始數據,用For循環與if條件語句嵌套實現限差檢查[9]。
復制功能主要是防止初始導入數據被改動,對部分數據賦予復制后的數值。
Sheets("Sheet1").Select
Range("A1:G1800").Select
Selection.Copy’對選中的單元格復制
Sheets("Sheet3").Select
Cells.Select
ActiveSheet.Paste’對選中的單元格粘貼
程序實現對測站高差、測站視距、累計高差、累計視距的計算,計算通過調用單元格的VALUE屬性(cells().val ue),用賦值語句和計算公式實現,然后通過For循環計算出各個測站的數據與累計數據。實現界面如圖2所示。界面右側即為實現各項數據的統計計算。

圖2 編輯界面
對原始數據進行精確重構并且以原格式輸出,要保證原始數據的準確無誤,因此在輸出前對數據進行檢核。
若原始數據中有一部分數據用剔除或重測后的新數據替代,累計視距和累計高差將不再正確,替換處相鄰測站的點號也不再連續。因此替換不正確的數值,用賦值以及For循環語句實現此功能,而點號要重新排列,代碼部分如下:
Sub變換點號()
Di m i As Integer
For i=1 To 180
Sheet3.Cells(11,3).Value=0
Sheet3.Cells(11+10*i,3).Val ue=Sheet3.
Cells(11+10* (i-1),3).Value+1
Next i
For i=1 To 180
Sheet3.Cells(12,3).Val ue=1
Sheet3.Cells(12+10*i,3).Value=Sheet3.
Cells(12+10* (i-1),3).Val ue+1
Next i
End Sub
各項功能實現后可對原始數據進行原格式輸出:創建文本、寫入數據。創建文本代碼:
Set fso=Create Object("Scripting.FileSystemObject")
filename="c:重構后原始數據.txt"
Set sfile=fso.Create Text File(filename)
寫入數據通過函數writeline()循環調用逐行將未輸出的原始數據寫入文本[10]。需要注意的是,將原始數據引入時使用西文冒號以便分離文字與數值,因此重構還應將冒號寫入輸出數據,此外文字之間、數字之間、文字與數字間的空格長短須與原格式保持一致。
以雅安市某測區四等水準測量為例。作為雅安市山區土地確權項目控制測量的一部分,在I成雅41基(09)和I成雅45基(09)二個I等水準點的控制下,聯測了13個D級GPS點,由2條附合路線和2條閉合路線及1條支線組成四等水準網,共20個測段,計114.81 k m,平均測段長5.74 k m,最短測段長1.39 k m,最長測段長10.50 k m,如圖3所示。

圖3 水準線路
因項目工期緊迫,采取了先水準后聯測GPS點的施測方案,于是觀測數據主要分為一期水準觀測記錄,二期聯測GPS點水準記錄,而提交水準部分成果資料則要求按照GPS點分測段整齊提交,要求將兩期的水準外業觀測資料按測段整齊排列,方便檢查驗收,并且各測段高差與測段長度能夠方便取出。水準路線較長,數據量較大,如果采用傳統辦法只能使用表格分段處理,處理后在原始數據中進行編輯,耗時耗力易出差錯。在此采用水準數據重構程序進行快速分類、處理。
重構前如圖4所示第一張圖片中的數據,相鄰測段不同周期的觀測數據統計結果(累計視距、累計高差等)在上個測段的第12站與下個測段的第1站出現不連續。第二張重構輸出后的數據與重構前的相比,排列有序一致,各項統計數值正確,所需測段高程(或高差)可在測站末尾準確讀取。

圖4 成果圖
采用此程序設計方案,在保證原始數據完整性的前提下快速實現了數據的替換、變更、處理以及精確重構,在內業處理中節省了大量時間,發揮了重要的作用。
本文采用的平臺實現了徠卡數字水準儀原始觀測數據可以增減變更、替換,通過程序計算、檢核,最終精確重構輸出。整個過程也提供了一整套完整的原始數據編輯處理方案,與其他類似程序相比,其使用更加靈活簡便,只須調用對部分程序模塊,為水準測量觀測數據整理提供了一種簡單快捷的工具。
[1] 陳小歌,余代俊,毛川.弱光線對數字水準儀測量的影響分析[J].測繪工程,2014,23(2):64-65.
[2] 徐昌榮,鄔雪江.采用C#語言實現LGO的二次開發方法探討[J].工程勘察,2013(11):60-62.
[3] 楊睿,尹暉.Smart Sur vey水準測量一體化系統設計與開發[J].測繪工程,2009,19(6):49-52.
[4] 李德龍,張文金.徠卡DNA03水準儀數據處理方案與實現[J].城市勘測,2009(6):93-94.
[5] 孔祥元,郭際明.控制測量學[M].武漢:武漢大學出版社,2006:215-220.
[6] 汪平,孫雪潔,許家琨,等.基于Visual Basic實現徠卡DNA03電子水準儀數據處理[J].海洋測繪,2013(6):56-58.
[7] 賈丙普,彭喜林.徠卡DNA03數字水準儀數據處理研究[J].測繪工程,2015,24(2):75-77.
[8] 中國國家標準化管理委員會.GB/T 12891-2006國家三四等水準測量規范[S].北京:中國標準出版社,2006.
[9] 佟彪.VB語言與測量程序設計[M].北京:中國電力出版社,2007:116-119.
[10]馬前雪.文件操作之 VB篇[J].中文信息,2002(12):24-28. ?