隋正蘇
【摘要】隨著科技的日新月異,測量儀器新技術(shù)突飛猛進,電子水準儀不僅能提供高精度數(shù)據(jù),更以減輕作業(yè)勞動強度、效率高而得到越來越廣泛應用。雖然電子水準儀有諸多優(yōu)點,但輸出的原始數(shù)據(jù)存在缺陷,如可讀性差,不方便整理,無法滿足一般平差軟件格式要求,因此需要對其數(shù)據(jù)格式的轉(zhuǎn)換進行研究。本文以Leica DNA03水準儀為例,對其優(yōu)越性和測量原理進行闡述,對本文所使用的軟件平臺進行介紹,對Leica GSI格式的觀測數(shù)據(jù)進行解譯和分析,觀測數(shù)據(jù)的編程提取是基于VC6.0的MFC開發(fā)框架,用C++語言將提取出來的有效數(shù)據(jù)寫入Excel表格,用Excel自動計算功能將數(shù)據(jù)格式轉(zhuǎn)換成規(guī)范的水準手簿形式,并進行存儲。
【關(guān)鍵詞】DNA03水準儀;數(shù)據(jù)格式;MFC框架;C++語言
1、緒論
精密電子水準儀擁有較高觀測精度和觀測效率,便于記錄等優(yōu)點,降低人工勞動強度,越來越受到測繪生產(chǎn)單位青睞。[1]目前市場上常見數(shù)字水準儀型號等級都很齊全,完全能滿足不同工作的各種精度要求。[2]
雖然電子水準儀已經(jīng)實現(xiàn)讀數(shù)自動化、記錄電子化,但LeicaDNA03水準儀原始數(shù)據(jù)格式不易整理,需要人工編輯;外業(yè)觀測數(shù)據(jù)導出格式通常為默認的GSI,可讀性差,需要另行編制程序進行轉(zhuǎn)換。
本文通過對Leica DNA03數(shù)字水準儀數(shù)據(jù)文件格式分析,用VC6.0編程平臺,對數(shù)字水準儀的觀測數(shù)據(jù)文件進行處理,利用C++語言編程讀取數(shù)據(jù)文件并轉(zhuǎn)換,編程調(diào)用Excel生成水準測量外業(yè)記錄表,將數(shù)字水準儀文件格式轉(zhuǎn)換成外業(yè)規(guī)范水準手簿,便于直接導入常用的平差軟件進行計算。
本文研究的主要內(nèi)容包括對Leica GSI-8數(shù)據(jù)存儲格式的字段分析,GSI-8格式向水準記錄本格式轉(zhuǎn)換以及Excel表格水準數(shù)據(jù)的存貯,主要用到的理論方法有VC6.0編程平臺在MFC框架下的二次開發(fā),Excel電子表格與VC編程平臺的聯(lián)合。
2、DNA03水準儀編碼格式
2.1 Leica DNA03水準儀數(shù)據(jù)存儲格式介紹
Leica DNA水準儀記錄的信息較全面,數(shù)據(jù)下載可使用附帶軟件來完成。利用軟件下載數(shù)據(jù)默認格式為GSI,不便于編輯處理。Leica測量辦公系統(tǒng)提供了自定義下載格式功能,運行“格式管理器”根據(jù)所需下載自定義數(shù)據(jù)格式。在下載格式文件中可選擇包括文件頭、文件尾、工程名稱和線路名稱等,測站觀測數(shù)據(jù)中的必選內(nèi)容包括點名、距離、測量類型、標尺讀數(shù),這些是內(nèi)業(yè)平差中必要的基礎數(shù)據(jù)。另外,格式中還可根據(jù)需求自定義,包括觀測日期、觀測方法、觀測者、儀器型號等內(nèi)容。自定義數(shù)據(jù)類型下載的文件后綴為*.mdt,用文本編輯器打開閱讀、打印。但提取出平差所需數(shù)據(jù),形成符合平差軟件要求的數(shù)據(jù)文件,還需借助編程方法來實現(xiàn)。
2.2 GSI數(shù)據(jù)字段格式分析
Leica DNA03電子水準儀采用的是GSI格式存儲數(shù)據(jù),包括GSI-8和GSI-16格式。GSI數(shù)據(jù)以“塊”為單位進行傳送,每個數(shù)據(jù)塊包含若干個數(shù)據(jù)段,數(shù)據(jù)段用兩個或三個標志字符WI來區(qū)分不同數(shù)據(jù)。GSI-8數(shù)據(jù)格式中,每個數(shù)據(jù)段共有16個字符,包括7個信息字符,8個數(shù)據(jù)字符和一個空白字符;GSI-16數(shù)據(jù)格式中,每個數(shù)據(jù)段共有24個字符,其中有16個數(shù)據(jù)字符,可以存儲更多數(shù)據(jù)信息。[4]本文以GSI-8數(shù)據(jù)格式為例進行分析。
3、數(shù)據(jù)格式轉(zhuǎn)換存儲的設計實現(xiàn)
3.1 數(shù)據(jù)格式轉(zhuǎn)換與存儲的總體設計
兩種方法可將數(shù)據(jù)轉(zhuǎn)移到計算機中。一是通過通信接口設置好通信參數(shù)用專門通信軟件傳輸,二是用筆記本電腦讀卡功能直接拷貝測量數(shù)據(jù)。
目前已有專業(yè)軟件能將電子水準儀測量數(shù)據(jù)轉(zhuǎn)換成傳統(tǒng)的測量記錄手簿形式,但軟件專門性、針對性不強。為了使數(shù)據(jù)處理自動化程度更高,可以設計自己的算法,通過程序來處理數(shù)據(jù)。考慮到Excel軟件是比較優(yōu)秀的表格處理軟件,方案采用VC6.0設計可視化界面,用C++語言結(jié)合Excel對象來處理數(shù)據(jù)。
(1)設計思路
同一種儀器由于觀測方法不同,數(shù)據(jù)也存在差異,本文基于用Leica DNA03水準儀觀測的測量模式BFFB和測量模式BBFF的原始數(shù)據(jù)文件進行轉(zhuǎn)換。
本文設計思路考慮到手簿表格格式整齊有規(guī)律,首先將測量產(chǎn)生的有效數(shù)據(jù)利用程序代碼提取出來,保留原始數(shù)據(jù)格式,寫入Excel中通過公式進行格式轉(zhuǎn)換。
(2)數(shù)據(jù)提取
電子水準儀測量成果文件格式具有固定性,我們可通過編程開發(fā)用一定算法提取有效數(shù)據(jù),本文以水準線路為例對其數(shù)據(jù)提取及處理的基本思路進行說明。
要實現(xiàn)數(shù)據(jù)讀取,首先選擇要轉(zhuǎn)換的文件格式,再進行相應模式數(shù)據(jù)的逐行讀取,定義成員函數(shù)和用到的各個變量,利用類對象將數(shù)據(jù)段中的字符串寫入到所定義的變量中,再將字符串格式數(shù)據(jù)轉(zhuǎn)換成整型的數(shù)據(jù),為后續(xù)處理做準備。
(3) VC與Excel聯(lián)合
創(chuàng)建程序,在程序入口和出口處增加代碼支持COM庫。從Office安裝目錄中找到對VC操作Excel文件的動態(tài)庫,引入所需對象模型,添加具體代碼來響應操作Excel命令。
3.2 數(shù)據(jù)格式轉(zhuǎn)換與存儲的具體實現(xiàn)
(1)技術(shù)要點分析
仔細閱讀Leica GSI 格式說明文件,正確理解Leica DNA03水準儀的各項數(shù)據(jù)代碼,在具體設計時要注意以下幾點:
①文件頭獲取時間,觀測者,儀器型號等信息;②測段起始和結(jié)束標志;③測段異常處理,包括以下幾個情況:整站重測的處理和一次觀測重測的處理,可以利用“if/else”選擇結(jié)構(gòu),通過關(guān)鍵字符對所讀取的數(shù)據(jù)流進行篩選;采用“while”循環(huán),根據(jù)需要設置好循環(huán)結(jié)束和選擇條件,合并測站數(shù)據(jù)信息和測段數(shù)據(jù)信息。
(2)讀取數(shù)據(jù)
本文中的程序需要對txt文件中的數(shù)據(jù)進行逐行讀取,所以用CStdioFile中的ReadString函數(shù),讀取到CString中,再按所需進行拆分或截取,獲得有實際意義的測量數(shù)據(jù)段,[6]由于觀測方法不同,導致原始數(shù)據(jù)文件內(nèi)容存在差異,要正確的讀取到所需要的測量數(shù)據(jù),就需要編寫不同的代碼,觀測模式的不同選擇用對話框中的單選鈕來實現(xiàn),并且要將其與單擊按鈕聯(lián)系起來。
(3) 建立與Excel對象的聯(lián)系
利用Visual C++ 6.0,建立一個MFC基于對話框的工程項目,在主對話框中加入按鈕:
ID: IDC_BUTTON_XLC ?標題:存儲數(shù)據(jù);雙擊該按鈕,增加成員函數(shù)
(4) Excel單元格的寫入
表頭的寫入,例如:m_ExlSheet.SetName("原始數(shù)據(jù)導入");同理,其他單元格的內(nèi)容也依次進行設置,如:xlSheet.Cells(XX*3+9,2) = YY(i+1,3)通過設置循環(huán)和選擇將數(shù)組YY中的數(shù)據(jù)輸入到電子表格所對應的單元格中[4]。將上述取出的數(shù)據(jù),按表格中相應的位置循環(huán)寫入后,整個文件中相應的數(shù)據(jù)將會全部寫入表格中,從而實現(xiàn)數(shù)據(jù)的轉(zhuǎn)換。
(5) 程序設計成果
根據(jù)原始數(shù)據(jù)格式編寫具體代碼,添加到相應按鈕的編輯代碼處,過程中利用VC++6.0軟件的調(diào)試功能進行錯誤修改,最終使程序能夠順利的運行。
與原始數(shù)據(jù)相比較,可以看到,原始GSI-8格式數(shù)據(jù)已成功轉(zhuǎn)化成常用的觀測手簿形式,更方便進一步的整理和計算。
結(jié)論:
電子水準儀的出現(xiàn)實現(xiàn)了水準測量中的讀數(shù)自動化、記錄電子化,降低了外業(yè)強度,減少了讀數(shù)誤差,具有光學水準儀無可比擬的優(yōu)勢。但其結(jié)果電子文檔的呈現(xiàn)形式給數(shù)據(jù)可讀性帶來困難。本文分析Leica DNA03電子水準儀記錄格式的特點,用C++語言編寫了相關(guān)的數(shù)據(jù)預處理程序,對GSI格式的測量數(shù)據(jù)進行提取并用Excel實現(xiàn)格式的轉(zhuǎn)換,輸出為電子觀測手簿的文件,從而實現(xiàn)水準測量從外業(yè)觀測到內(nèi)業(yè)計算一體化,有很好的實踐意義。
參考文獻:
[1]劉萬松,張廣利,張景文,等.用VB6_0實現(xiàn)電子水準儀數(shù)據(jù)格式的轉(zhuǎn)換[J].中國非金屬礦工業(yè)導刊,2011,(90):43-47.
[2]劉洪濤,張鵬飛.Leica數(shù)字水準儀數(shù)據(jù)后處理經(jīng)驗淺談[J].工程勘察,2009,(2):423-426.
[3]李德龍,張文金.徠卡DNA03水準儀數(shù)據(jù)處理方案與實現(xiàn)[J].城市勘測,2009,(6):93-94.
[4]韋國和,李應超,高建盡,等.基于徠卡DNA03水準儀數(shù)據(jù)預處理程序設計[J].中國新技術(shù)新產(chǎn)品,2010,(19):37.
[5]楊震.電子水準儀的數(shù)據(jù)格式轉(zhuǎn)換研究[J].科技信息,2011,(27):107.