李 冰,余代俊
(成都理工大學 地球科學學院,四川 成都610059)
徠卡數(shù)字水準儀質(zhì)量好、精度高、操作方便,適應多種惡劣環(huán)境并且可以在保證測量精度的同時進行夜間作業(yè)[1],因而廣泛用于地鐵、高速鐵路、基坑、大壩等監(jiān)測以及各種精密水準測量中。
對水準原始數(shù)據(jù)的編輯目前以兩種方法為主,一種是基于C#語言對已有平臺進行二次開發(fā),比如對徠卡的數(shù)據(jù)處理軟件LGO進行的二次開發(fā)[2]、基于PDA平臺的水準一體化測量系統(tǒng)的開發(fā)[3];另外一種是基于VB語言以EXCEL為平臺的后處理程序設計。
可是當前多數(shù)徠卡數(shù)字水準儀數(shù)據(jù)處理程序大多以GSI格式原始數(shù)據(jù)為對象,以測量結(jié)果平差為導向進行設計[4],忽略了測量數(shù)據(jù)的增減變更、替換,致使最終所需原始觀測數(shù)據(jù)紊亂。本文提出了原始觀測數(shù)據(jù)的整理重構(gòu)技術(shù)與方法,解決了在工程實踐中對原始觀測數(shù)據(jù)進行增減、替換繼而重新計算、輸出的難題。
徠卡數(shù)字水準儀測量的數(shù)據(jù)會自動以二進制格式存儲在儀器內(nèi)存中,并且將數(shù)據(jù)轉(zhuǎn)換成多種格式,可以在數(shù)據(jù)輸出菜單下操作完成,格式分兩類,標準格式與自定義格式,標準格式分為XML與GSI,其中GSI分為GSI-8(數(shù)據(jù)位為8位)和GSI-16(數(shù)據(jù)位為16位);自定義格式主要為TXT文本格式:英文顯示、只顯示測站高差、中文顯示。GSI與XML格式是以固定格式存儲的測量文件,處理時需采用徠卡公司研發(fā)的軟件Leica Geo Office(LGO)或Level Pak-Pr o進行處理[5],由于 LGO 支持Leica所有儀器類型,以統(tǒng)一的方式管理TPS、GPS和水準數(shù)據(jù),界面稍顯復雜,對使用者而言操作略顯繁瑣。使GSI與XML類文件時,需用專業(yè)軟件或程序語言進行訪問,并且熟悉其測量格式,對于多數(shù)工程人員而言操作過于復雜。
中文顯示的數(shù)據(jù)由標題部分(名稱、測段名、時間、起始點、開始高程)、數(shù)據(jù)部分(點號、中絲讀數(shù)、視距)和統(tǒng)計部分(本站視距、本站高差、累計視距、累計高差、目標高程、精度檢查)三部分構(gòu)成,并且數(shù)據(jù)部分文字與讀數(shù)的字符間隔固定。其樣式如圖1所示。
圖1 原始格式
水準測量及數(shù)據(jù)整理中,對原始數(shù)據(jù)要求:
1)不得擅自修改原始觀測數(shù)據(jù)。
2)原始觀測數(shù)據(jù)隨水準路線前進方向按照測段有序排列。
3)能夠快速讀取每個測段的高差與距離數(shù)據(jù)。
4)原始數(shù)據(jù)中間出現(xiàn)不合格數(shù)據(jù)時,可以用新觀測的數(shù)據(jù)進行替代,并且保持測段整體數(shù)據(jù)的規(guī)整。
對原始數(shù)據(jù)格式分析后,采用易于操作的EXCEL平臺,通過調(diào)用宏,用VBA程序語言在后臺進行編輯處理,實現(xiàn)精確重構(gòu),最后輸出原始格式的數(shù)據(jù)[6-7]。
本程序?qū)霐?shù)據(jù)時采用EXCEL導入文本功能,使用分隔符時采用空格與自定義西文冒號,導入新建表格中。此外也可使用VBA程序語言中Add方法或者open語句實現(xiàn)將文本數(shù)據(jù)合理導入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
分析固定規(guī)律排列的原始數(shù)據(jù),用For循環(huán)與if條件語句嵌套實現(xiàn)限差檢查[9]。
復制功能主要是防止初始導入數(shù)據(jù)被改動,對部分數(shù)據(jù)賦予復制后的數(shù)值。
Sheets("Sheet1").Select
Range("A1:G1800").Select
Selection.Copy’對選中的單元格復制
Sheets("Sheet3").Select
Cells.Select
ActiveSheet.Paste’對選中的單元格粘貼
程序?qū)崿F(xiàn)對測站高差、測站視距、累計高差、累計視距的計算,計算通過調(diào)用單元格的VALUE屬性(cells().val ue),用賦值語句和計算公式實現(xiàn),然后通過For循環(huán)計算出各個測站的數(shù)據(jù)與累計數(shù)據(jù)。實現(xiàn)界面如圖2所示。界面右側(cè)即為實現(xiàn)各項數(shù)據(jù)的統(tǒng)計計算。
圖2 編輯界面
對原始數(shù)據(jù)進行精確重構(gòu)并且以原格式輸出,要保證原始數(shù)據(jù)的準確無誤,因此在輸出前對數(shù)據(jù)進行檢核。
若原始數(shù)據(jù)中有一部分數(shù)據(jù)用剔除或重測后的新數(shù)據(jù)替代,累計視距和累計高差將不再正確,替換處相鄰測站的點號也不再連續(xù)。因此替換不正確的數(shù)值,用賦值以及For循環(huán)語句實現(xiàn)此功能,而點號要重新排列,代碼部分如下:
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
各項功能實現(xiàn)后可對原始數(shù)據(jù)進行原格式輸出:創(chuàng)建文本、寫入數(shù)據(jù)。創(chuàng)建文本代碼:
Set fso=Create Object("Scripting.FileSystemObject")
filename="c:重構(gòu)后原始數(shù)據(jù).txt"
Set sfile=fso.Create Text File(filename)
寫入數(shù)據(jù)通過函數(shù)writeline()循環(huán)調(diào)用逐行將未輸出的原始數(shù)據(jù)寫入文本[10]。需要注意的是,將原始數(shù)據(jù)引入時使用西文冒號以便分離文字與數(shù)值,因此重構(gòu)還應將冒號寫入輸出數(shù)據(jù),此外文字之間、數(shù)字之間、文字與數(shù)字間的空格長短須與原格式保持一致。
以雅安市某測區(qū)四等水準測量為例。作為雅安市山區(qū)土地確權(quán)項目控制測量的一部分,在I成雅41基(09)和I成雅45基(09)二個I等水準點的控制下,聯(lián)測了13個D級GPS點,由2條附合路線和2條閉合路線及1條支線組成四等水準網(wǎng),共20個測段,計114.81 k m,平均測段長5.74 k m,最短測段長1.39 k m,最長測段長10.50 k m,如圖3所示。
圖3 水準線路
因項目工期緊迫,采取了先水準后聯(lián)測GPS點的施測方案,于是觀測數(shù)據(jù)主要分為一期水準觀測記錄,二期聯(lián)測GPS點水準記錄,而提交水準部分成果資料則要求按照GPS點分測段整齊提交,要求將兩期的水準外業(yè)觀測資料按測段整齊排列,方便檢查驗收,并且各測段高差與測段長度能夠方便取出。水準路線較長,數(shù)據(jù)量較大,如果采用傳統(tǒng)辦法只能使用表格分段處理,處理后在原始數(shù)據(jù)中進行編輯,耗時耗力易出差錯。在此采用水準數(shù)據(jù)重構(gòu)程序進行快速分類、處理。
重構(gòu)前如圖4所示第一張圖片中的數(shù)據(jù),相鄰測段不同周期的觀測數(shù)據(jù)統(tǒng)計結(jié)果(累計視距、累計高差等)在上個測段的第12站與下個測段的第1站出現(xiàn)不連續(xù)。第二張重構(gòu)輸出后的數(shù)據(jù)與重構(gòu)前的相比,排列有序一致,各項統(tǒng)計數(shù)值正確,所需測段高程(或高差)可在測站末尾準確讀取。
圖4 成果圖
采用此程序設計方案,在保證原始數(shù)據(jù)完整性的前提下快速實現(xiàn)了數(shù)據(jù)的替換、變更、處理以及精確重構(gòu),在內(nèi)業(yè)處理中節(jié)省了大量時間,發(fā)揮了重要的作用。
本文采用的平臺實現(xiàn)了徠卡數(shù)字水準儀原始觀測數(shù)據(jù)可以增減變更、替換,通過程序計算、檢核,最終精確重構(gòu)輸出。整個過程也提供了一整套完整的原始數(shù)據(jù)編輯處理方案,與其他類似程序相比,其使用更加靈活簡便,只須調(diào)用對部分程序模塊,為水準測量觀測數(shù)據(jù)整理提供了一種簡單快捷的工具。
[1] 陳小歌,余代俊,毛川.弱光線對數(shù)字水準儀測量的影響分析[J].測繪工程,2014,23(2):64-65.
[2] 徐昌榮,鄔雪江.采用C#語言實現(xiàn)LGO的二次開發(fā)方法探討[J].工程勘察,2013(11):60-62.
[3] 楊睿,尹暉.Smart Sur vey水準測量一體化系統(tǒng)設計與開發(fā)[J].測繪工程,2009,19(6):49-52.
[4] 李德龍,張文金.徠卡DNA03水準儀數(shù)據(jù)處理方案與實現(xiàn)[J].城市勘測,2009(6):93-94.
[5] 孔祥元,郭際明.控制測量學[M].武漢:武漢大學出版社,2006:215-220.
[6] 汪平,孫雪潔,許家琨,等.基于Visual Basic實現(xiàn)徠卡DNA03電子水準儀數(shù)據(jù)處理[J].海洋測繪,2013(6):56-58.
[7] 賈丙普,彭喜林.徠卡DNA03數(shù)字水準儀數(shù)據(jù)處理研究[J].測繪工程,2015,24(2):75-77.
[8] 中國國家標準化管理委員會.GB/T 12891-2006國家三四等水準測量規(guī)范[S].北京:中國標準出版社,2006.
[9] 佟彪.VB語言與測量程序設計[M].北京:中國電力出版社,2007:116-119.
[10]馬前雪.文件操作之 VB篇[J].中文信息,2002(12):24-28. ?