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