劉永琦 蘇明娟
(1.山東正維勘察測繪有限公司,山東 濟(jì)南250101;2.正元地理信息有限責(zé)任公司山東分公司,山東 濟(jì)南250101)
隨著計(jì)算機(jī)科學(xué)和光電技術(shù)的發(fā)展,測繪儀器制造業(yè)取得了飛速的發(fā)展。全站儀,是一種集光、機(jī)、電為一體的高技術(shù)測量儀器,是集水平角、垂直角、距離(斜距、平距)、高差測量功能于一體的測繪儀器系統(tǒng)。全站儀具有數(shù)據(jù)采集存儲自動化、測量精度高、功能齊全、操作方便等特點(diǎn),廣泛應(yīng)用于控制測量、地形測繪、變形監(jiān)測、施工放樣及地籍測量等領(lǐng)域。在開展這些測量工作時(shí)需將全站儀存儲的測量數(shù)據(jù)及時(shí)下載到計(jì)算機(jī),經(jīng)過數(shù)據(jù)格式轉(zhuǎn)換獲取內(nèi)業(yè)軟件可以直接識別的數(shù)據(jù)文件。ES-600G系列全站儀是拓普康(北京)科技發(fā)展有限公司2012年最新出品的新一代普及型全站儀,其國際品質(zhì)的優(yōu)良性能確保您在測量工作中輕松自如,保質(zhì)保量。其USB接口讀取數(shù)據(jù)方便自由,用戶可以插入U(xiǎn)盤直接下載數(shù)據(jù)。然而,通過USB下載的數(shù)據(jù)為SDR33格式。繪圖軟件(如南方CASS)無法直接使用此格式文件。為了解決這個問題,利用Visual C#編程實(shí)現(xiàn)SDR33數(shù)據(jù)格式到南方CASS數(shù)字化成圖軟件所需數(shù)據(jù)格式的轉(zhuǎn)換。
全站儀采集到的數(shù)據(jù)是以文件的形式存儲在儀器內(nèi)存中,這些數(shù)據(jù)文件可以通過通訊下載至計(jì)算機(jī),經(jīng)分離、組合、轉(zhuǎn)換等處理后便可提供給繪圖等應(yīng)用軟件使用,而了解文件的原始數(shù)據(jù)記錄格式是進(jìn)行這些處理的前提。如圖1所示為SDR33格式的數(shù)據(jù)文件。
圖1 SDR33格式數(shù)據(jù)文件
第1行“00NMSDR33 V04-04.02 07-Dec-13 19:19 113111”是SDR33格式數(shù)據(jù)文件的表頭記錄,長度為46個字符。1~2字符“00”為類型碼,表示此行記錄為“表頭記錄”。3~4字符“NM”為來源碼,表示此行記錄為“非測量值”。5~20字符“SDR33 V04-04.02”為版本號,21~24字符為編號,25~40字符“07-Dec-13 19:19”為日期和時(shí)間。41~46字符“113111”分別表示角度單位、距離單位、氣壓單位、溫度單位、坐標(biāo)格式和水平角格式。
第2行“10NM1206 121111”是SDR33格式數(shù)據(jù)文件的文件記錄,長度為26個字符。1~2字符“10”為類型碼,表示此行記錄為“文件記錄”。3~4字符“NM”為來源碼,表示此行記錄為“非測量值”。5~20字符“1206 ”為文件名。21~26字符“121111”分別表示點(diǎn)名類型、含高程、氣象改正、Cffamp;R改正、折射系數(shù)和海平面改正。
第3行“06NM1.00000000 ”是SDR33格式數(shù)據(jù)文件的比例尺因子記錄,長度為20個字符。1~2字符“06”為類型碼,表示此行記錄為“比例尺因子記錄”。3~4字符“NM”為來源碼,表示此行記錄為“非測量值”。 5~20字符“1.00000000 ”為比例尺因子。
第4行“01NM:ES-602G V03-23 FH0912ES-602G V03-23 FH091231 0.000 ”是SDR33格式數(shù)據(jù)文件的儀器記錄,長度為99個字符。1~2字符“01”為類型碼,表示此行記錄為“儀器記錄”。3~4字符“NM”為來源碼,表示此行記錄為“非測量值”。5字符“:”為測距儀類型,6~21字符“ES-602G V03-23 ”為測距儀說明,22~27字符“FH0912”為測距儀編號,28~43字符“ES-602GV03-23”為經(jīng)緯儀說明,44~49字符“FH0912”為經(jīng)緯儀編號,50字符“3”為基座類型,51字符“1”為豎角格式,52~67字符為測站偏心值,68~83字符為目標(biāo)偏心值,84~99字符“0.000 ”為棱鏡常數(shù)值。
第6行和第11行是SDR33格式數(shù)據(jù)文件的目標(biāo)點(diǎn)記錄,長度為20個字符。1~2字符“03”為類型碼,表示此行記錄為“目標(biāo)點(diǎn)記錄”。3~4字符“NM”為來源碼,表示此行記錄為“非測量值”。 5~20字符“1.389 ”或“0.000 ”為目標(biāo)高。
第5行、第7~10行和第12~13行都是SDR33格式數(shù)據(jù)文件的坐標(biāo)觀測值記錄,長度為84個字符。1~2字符“08”為類型碼,表示此行記錄為“坐標(biāo)觀測值記錄”。3~4字符“KI”或“TP”為來源碼,分別表示此行記錄為“已知點(diǎn)數(shù)據(jù)類”或“碎部點(diǎn)數(shù)據(jù)類”。 5~20共16個字符為目標(biāo)點(diǎn)名,21~36共16個字符為N坐標(biāo)值,37~52共16個字符為E坐標(biāo)值,53~68共16個字符為Z坐標(biāo)值,69~84共16個字符為說明編碼。例如,第8行記錄“08TP 349967.479 50005.803 0.369 Z ”表示:點(diǎn)名:3,N坐標(biāo)值:49967.479,E坐標(biāo)值:50005.803,Z坐標(biāo)值:0.369,編碼:Z。
坐標(biāo)數(shù)據(jù)文件是CASS最基礎(chǔ)的數(shù)據(jù)文件,擴(kuò)展名是“DAT”,其格式為:
1點(diǎn)點(diǎn)名,1點(diǎn)編碼,1點(diǎn)東坐標(biāo)Y,1點(diǎn)北坐標(biāo)X,1點(diǎn)高程
…
N點(diǎn)點(diǎn)名,N點(diǎn)編碼,N點(diǎn)東坐標(biāo)Y,N點(diǎn)北坐標(biāo)X,N點(diǎn)高程
需要說明的是:文件內(nèi)每一行代表一個點(diǎn);每個點(diǎn)東坐標(biāo)Y、北坐標(biāo)X、高程的單位均是“米”;編碼內(nèi)不能含有逗號,即使編碼為空,其后的逗號也不能省略;所有的逗號不能在全角方式下輸入。
C#語言是從C/C++語言發(fā)展而來的,它汲取了包括C++、Java Delphi在內(nèi)的多種語言的精華,是一種完全面向?qū)ο蟮母呒壋绦蛟O(shè)計(jì)語言。把C#和其他常用語言作比較,它最具顯著的特點(diǎn)是:概念精確完整、簡明清晰;語言成分合理,功能強(qiáng)大,資源豐富;安全可靠,簡單易學(xué)。微軟公司的Visual Studio.NET是目前使用最廣泛、性能最優(yōu)秀的開發(fā)平臺之一。C#是全新打造的.NET的核心語言。因此,本文基于Visual Studio.NET開發(fā)平臺,采用C#語言進(jìn)行數(shù)據(jù)格式轉(zhuǎn)換軟件的研制。
通過對CASS坐標(biāo)數(shù)據(jù)文件進(jìn)行分析,我們知道繪圖軟件需要的信息包括:點(diǎn)名、編碼、東坐標(biāo)Y、北坐標(biāo)X和高程,而對于單位、各項(xiàng)改正、目標(biāo)高、儀器編號等信息是不需要的。通過對SDR33數(shù)據(jù)文件分析可知,“坐標(biāo)觀測值記錄”中包含了繪圖軟件需要的全部信息。因此,編程的核心問題就是:過濾掉SDR33數(shù)據(jù)文件中除“坐標(biāo)觀測值記錄”以外的所有記錄,將“坐標(biāo)觀測值記錄”中點(diǎn)名、編碼、東坐標(biāo)Y、北坐標(biāo)X和高程提取出來,按照南方CASS坐標(biāo)數(shù)據(jù)文件格式生成成果文件。
程序同時(shí)打開SDR源文件和CASS坐標(biāo)文件,從SDR源文件中讀取一條記錄,如果文件已經(jīng)到達(dá)末尾,則彈出消息框“數(shù)據(jù)導(dǎo)出完畢!”,否則截取此記錄的前2位字符進(jìn)行判斷。如果前2位字符為“08”,則表明此記錄為“坐標(biāo)觀測值記錄”,程序通過Substring函數(shù)依次截取點(diǎn)名、北坐標(biāo)X、東坐標(biāo)Y、高程H和編碼,并按“點(diǎn)名,編碼,東坐標(biāo)Y,北坐標(biāo)X,高程H”格式寫入到CASS坐標(biāo)文件。程序依此運(yùn)行,直到SDR源文件到達(dá)末尾。
程序主要代碼如下:
圖2為該軟件的操作界面。
圖2 軟件操作界面
單擊“打開”按鈕,打開需要進(jìn)行格式轉(zhuǎn)換的SDR33格式的源文件。單擊“保存”按鈕,指定CASS坐標(biāo)文件的保存位置和文件名。單擊“導(dǎo)出CASS坐標(biāo)數(shù)據(jù)”按鈕,軟件進(jìn)行數(shù)據(jù)格式轉(zhuǎn)換,轉(zhuǎn)換完成將彈出“數(shù)據(jù)導(dǎo)出完畢!”消息框,如圖3所示。依次單擊“確定”和“關(guān)閉”,完成整個轉(zhuǎn)換操作。
圖3 “數(shù)據(jù)導(dǎo)出完畢!”消息框
圖4為應(yīng)用本軟件將圖1所示“1207.SDR”文件轉(zhuǎn)換為南方CASS坐標(biāo)數(shù)據(jù)文件的結(jié)果。
圖4 軟件運(yùn)行結(jié)果
外業(yè)儀器設(shè)備不同,輸出的數(shù)據(jù)格式也不盡相同,內(nèi)業(yè)成圖軟件不同,輸入的數(shù)據(jù)格式也不盡相同,如何將兩種數(shù)據(jù)格式文件進(jìn)行轉(zhuǎn)換,是生產(chǎn)單位經(jīng)常遇到的問題,因此解決這一問題是提高測量工作效率的重要環(huán)節(jié)。本文提出了一種基于Visual Studio.NET開發(fā)平臺,采用C#語言編制軟件來解決這一問題的方法,該軟件界面友好,操作簡單,易于修改,在處理類似問題上可以起到一定的參考作用。
[1]鄭宇軍,王侃.C#語言程序設(shè)計(jì)基礎(chǔ)[M].北京:清華大學(xué)出版社,2008:4.
[2]邱錦倫,曹旻,等.Visual C#.NET程序設(shè)計(jì)教程[M].北京:清華大學(xué)出版社,2006.