吳錦發(fā)
(福建省測繪院,福建 福州 350003)
?
斷面成果數(shù)據(jù)輸出軟件的開發(fā)及實現(xiàn)
吳錦發(fā)
(福建省測繪院,福建 福州 350003)
當(dāng)前普通斷面測量數(shù)據(jù)整理后用CASS軟件處理并繪制剖面圖,可以直觀地體現(xiàn)斷面的形狀,用以設(shè)計或計算土方量,但無法輸出不同格式的斷面數(shù)據(jù)文件。不同設(shè)計單位對斷面數(shù)據(jù)格式要求不一樣,為了更靈活、方便地滿足不同需求,需要研究斷面成果數(shù)據(jù)輸出不同格式的方法。Visual LISP(VLISP)是AutoCAD內(nèi)置的解釋軟件,與CAD兼容較好,Visual BASIC(VB)是面向?qū)ο缶幊蹋δ軓?qiáng)大、簡單易學(xué)。本文研究在現(xiàn)有軟件的基礎(chǔ)上,根據(jù)其不足,利用Visual BASIC(VB)和Visual LISP(VLISP)編程語言的各自優(yōu)勢,在AutoCAD平臺上開發(fā)編寫軟件。開發(fā)的軟件可實現(xiàn)批處理自動生成所需要的不同斷面數(shù)據(jù)格式文件,解決斷面成果不同格式數(shù)據(jù)輸出的難題,避免數(shù)據(jù)文件在不同程序相互轉(zhuǎn)換中數(shù)據(jù)精度的損失,同時由于自動批處理,較大提高了工作效率。筆者用所研究的方法和開發(fā)的軟件,完成了崇陽溪保護(hù)性開發(fā)河道測量斷面的成果數(shù)據(jù)整理和輸出。
1主要技術(shù)方法
當(dāng)前普遍采用的斷面軟件是 CASS,它是基于AutoCAD二次開發(fā)的數(shù)字化測繪成圖軟件。斷面數(shù)據(jù)經(jīng)外業(yè)實測后,在軟件中展點,生成線狀斷面圖。斷面圖直觀體現(xiàn)地貌特征,但是沒有輸出其他格式文本文件的功能。
VLISP和VB程序均為易學(xué)、易懂、功能強(qiáng)大的高級語言,VB生成EXE文件獨立運行;VLISP則必須在AutoCAD環(huán)境內(nèi)運行。因此,可以充分利用VLISP和VB的各自優(yōu)勢,結(jié)合二者的特色在AutoCAD平臺上進(jìn)行開發(fā),完成各自的功能,快速、準(zhǔn)確、高效地輸出不同格式的斷面數(shù)據(jù)成果。
1.1具體技術(shù)流程
在本次項目中,深水區(qū)采用測深儀施測,淺水區(qū)直接涉水觀測(全站儀或GPS-RTK觀測)。外業(yè)數(shù)據(jù)用CASS軟件進(jìn)行高程點展出,用VLISP程序按斷面線逐個高程點進(jìn)行定義。全部完成后,對高程點的屬性進(jìn)行讀取,進(jìn)行高斯反算、平距反算,輸出文件;然后啟動VB程序,打開剛輸出的文件,按不同格式要求進(jìn)行組織排列,輸出滿足要求的格式文件。具體流程圖如圖1所示。
圖1 技術(shù)流程圖
1.2Visual LISP實現(xiàn)的功能
擴(kuò)展數(shù)據(jù)是依附在CAD地物的組碼中開頭為“-3”、不影響CAD實體形狀、編輯的一串?dāng)?shù)據(jù)?;贑AD二次開發(fā)的軟件大都使用擴(kuò)展數(shù)據(jù)定義地物屬性,以識別地物或附加信息。
VLISP兼容以前版本的LISP程序,可以用源碼的形式或編譯后的FAS、VLX文件在AutoCAD中運行。在河道斷面數(shù)據(jù)定義時,運用VLISP對CAD內(nèi)部的地物(本項目中主要為高程點)進(jìn)行擴(kuò)展數(shù)據(jù)的寫入,最后批量讀出坐標(biāo)和擴(kuò)展數(shù)據(jù)的屬性,進(jìn)行高斯反算、平距反算,輸出TXT文件。
1.3Visual BASIC實現(xiàn)的功能
VB具有較強(qiáng)大的文件讀寫功能,在VLISP輸出的TXT文件后,利用VB編程實現(xiàn)TXT文件讀入、排序、排版,最后按照要求生成符合格式要求的文件。
2軟件功能的具體實現(xiàn)
2.1Visual LISP的開發(fā)
CAD內(nèi)的地物以組碼的形式保存。高程點表示為“GC200”塊,并在擴(kuò)展數(shù)據(jù)表示為“(-3 (“south” (1000.“202101”)))”,其中“south”為定義的程序名,“202101”為其屬性,即為“高程點”。將新屬性“(“DUAN_MIAN” (1000.“Attribute”))”添加至高程點的擴(kuò)展數(shù)據(jù)中,其中“DUAN_MIAN”屬性取為“斷面數(shù)據(jù)”;“Attribute”屬性包含斷面號、是否基準(zhǔn)點(T/F),以及基準(zhǔn)點坐標(biāo)等信息,如“DM001,F,3039541.1805,461419.6038,145.203”。在斷面定義全部完成后,分別讀出坐標(biāo)、擴(kuò)展數(shù)據(jù),按照高斯反算公式(1)計算各點的經(jīng)緯度,并生成高程點信息至文本文件。每行的數(shù)據(jù)有斷面號、是否基準(zhǔn)點、基準(zhǔn)點坐標(biāo)、經(jīng)度、緯度、本點坐標(biāo)。TXT文件固定放在VB程序目錄或者驅(qū)動器根目錄下。
高斯反算公式:
B=Bf-(1-(b4-0.147Z2)Z2)Z2b2ρ″,
(1)
L=L0+l.
在VLISP程序輸出文件結(jié)束后,由VLISP啟動VB程序,按預(yù)先設(shè)定好的文件目錄,讀入剛輸出的TXT文件,用本點坐標(biāo)與基準(zhǔn)點坐標(biāo)進(jìn)行計算平距;最后按斷面號、與基準(zhǔn)點平距大小的順序排版(本次采用的是Access方式輔助排版)并進(jìn)行寫文件。
2.2程序代碼的編寫
1)Visual LISP的程序代碼(局部)
以下是高程點添加擴(kuò)展數(shù)據(jù)的VLISP函數(shù)段,用法為“(vla-put-Attribute 地物 屬性值)”,屬性值可以是任意字符串。
(defun vla-put-Attribute(obj Attribute);
(regapp “DUAN_MIAN”);
(setq d(list-3 (list “DUAN_MIAN” (cons 1000 Attribute))));
(setq obj_n_list(entget obj)list_added(append obj_n_list (list d)));
(entmod list_added)).
2)Visual BASIC的程序代碼(局部)
以下是利用Access排列后,進(jìn)行寫出文件。
sq2 = “select 橫斷面.* from 橫斷面 order by 橫斷面.duanhao,橫斷面.weizhi,橫斷面.juli asc”。
Set rs2 = db.OpenRecordset(sq2,dbOpenDynaset);
string_l = “”:string_r = “”:rs2.MoveFirst;
For j = 1 To geshu;
duanhao1 = rs2.Fields(1):zuo_zhong_you1 = rs2.Fields(2):juli1 = rs2.Fields(3):gaocheng1 = rs2.Fields(4):b2 = rs2.Fields(5):l2 = rs2.Fields(6);
If zuo_zhong_you1 = “A” Then;
Print #2,duanhao1:Print #2,“0.000,” & Format(gaocheng1,“#0.000”) & “,” & b2 & “,” & l2 & “,” & Format(gaocheng1,“#0.000”):End If;
If zuo_zhong_you1 = “L” Then;
Print #2,Format(Val(juli1) * 1000,“#0.000”) & “,” & Format(gaocheng1,“#0.000”) & “,” & b2 & “,” & l2 & “,” & Format(gaocheng1,“#0.000”):End If.
2.3程序打包發(fā)行
程序在編寫全部完成并經(jīng)大量數(shù)據(jù)測試合格后,進(jìn)行打包發(fā)行給項目作業(yè)組,力求“傻瓜式安裝、便捷式操作、全程封裝式運行”。
3實際應(yīng)用及精度分析
把研究的方法及開發(fā)的軟件應(yīng)用于福建省武夷新區(qū)崇陽溪流域斷面測量成果的輸出。崇陽溪位于閩江上游,本次施測區(qū)域為建陽水文站至武夷山公館大橋水域,全長約45 km,計劃垂直于崇陽溪中線,按20 m/條進(jìn)行斷面測量。
3.1項目成果數(shù)據(jù)輸出格式要求
用經(jīng)緯度表示高程點坐標(biāo)格式文本文件,成果輸出文件具體格式如下:
斷面號(如DM001);
斷面號,0,X,Y,H,B,L;
斷面號,至基準(zhǔn)點的平距1,X1,Y1,H1,B1,L1;
斷面號,至基準(zhǔn)點的平距2,X2,Y2,p,B2,L2;
……
3.2軟件運行結(jié)果
外業(yè)測繪后,將全站儀、測深儀或GPS-RTK內(nèi)的直角坐標(biāo)數(shù)據(jù),導(dǎo)入CASS程序中后進(jìn)行高程點的篩選。運行本程序逐個斷面選擇高程點進(jìn)行定義,根據(jù)CASS軟件生成斷面成果DWG格式文件,如圖2(a)所示(數(shù)據(jù)有刪減)。經(jīng)過該軟件的運行,統(tǒng)一輸出生成文本格式的數(shù)據(jù)成果,如圖2(b)所示。
圖2 結(jié)果數(shù)據(jù)
3.3成果數(shù)據(jù)檢查對比
本軟件運行結(jié)果數(shù)據(jù)精度取位到0.001″,計算過程產(chǎn)生的數(shù)據(jù)精度損失在允許范圍,滿足設(shè)計要求。
通過查詢高程點坐標(biāo),并按高斯反算公式(1)換算成大地坐標(biāo),與程序生成的文件進(jìn)行精度對比分析,對比結(jié)果如表1。
表1 精度對比 (° ′ ″)
4結(jié)束語
目前斷面測量的成果一般采用CASS軟件繪制成圖,但無法輸出不同格式的數(shù)據(jù)文件。本文根據(jù)Visual BASIC(VB)和Visual LISP(VLISP)編程語言的優(yōu)點,在AutoCAD平臺上開發(fā)編程,批處理自動生成設(shè)計單位所要求的斷面數(shù)據(jù)不同格式文件,解決了斷面成果數(shù)據(jù)不同格式輸出的技術(shù)難題。通過在崇陽溪的河流斷面測量中的實際應(yīng)用證明,精度滿足要求,軟件操作簡單實用,并實現(xiàn)自動批處理,較大提高了工作效率,具有良好的推廣使用價值。
參考文獻(xiàn):
[1]孔祥元,郭際明,劉宗泉.大地測量學(xué)基礎(chǔ)[M].武漢大學(xué)出版社,2008:176.
[2]樂志豪.VB和VBA for AutoCAD編程在電力勘測塔基斷面數(shù)據(jù)處理中的應(yīng)用[J].測繪與空間地理信息,2012,35(7):181-182.
[3]張煒,周斌麟.Visual LISP和CASS相結(jié)合實現(xiàn)斷面圖的自動繪制[J].測繪與空間地理信息,2011,34(4):239-240.
[4]梁華冰.VLISP與VBA結(jié)合編程在測量放線工作中的應(yīng)用[J].測繪工程,2014,23(5):75-77.
[5]李玉潔.AutoCAD及AutoLISP語言在規(guī)劃建筑紅線放線測量中的應(yīng)用[J].數(shù)字技術(shù)與應(yīng)用,2012,(5):58-60.
[6]王湘文.AutoLISP語言在測量工作中的應(yīng)用[J].測繪與空間地理信息,2012,35(10):216-218.
[7]王奎力.AutoLISP語言在工程橫斷面測量中的應(yīng)用[J].冶金設(shè)備管理與維修,2012,(2):9-11.
[8]高華峰.基于VLISP對地形圖中橫斷面的提取并生成橫斷面圖的研究[J].科技資訊,2012,(12):16、18.
摘要:斷面測量的成果一般采用CASS軟件繪制成圖,但無法輸出不同格式的數(shù)據(jù)文件。以武夷新區(qū)崇陽溪保護(hù)性開發(fā)河道斷面測量數(shù)據(jù)成果為例,對斷面數(shù)據(jù)進(jìn)行分析,進(jìn)行技術(shù)方法研究,在AutoCAD平臺上綜合運用Visual LISP 和Visual BASIC進(jìn)行軟件開發(fā),編程解決斷面成果不同數(shù)據(jù)格式的輸出問題。軟件簡單實用,并具有批處理功能,具有較好的推廣使用價值。
關(guān)鍵詞:斷面數(shù)據(jù)輸出;斷面測量;VB;VLISP;軟件開發(fā)
Software development and implementation resulting fromsection surveying data outputWU Jinfa
(Fujian Surveying and Mapping Institute,Fuzhou 350003,China)
Abstract:The results of the section surveying are usually output with the software of “CASS”,but these are not able to export data files in different formats.In this paper,it analyzes the river section of the protective exploitation of the Chongyang Creek in Wuyi new area and proposes a technical method.Finally,a program is provided on the AutoCAD platform with Visual LISP and Visual BASIC,which solves the problem of section surveying output in different formats.The software has a batch processing function,which is simple,practical and widely applied.
Key words:section surveying data output;section surveying;VB;VLISP;software development
作者簡介:吳錦發(fā)(1979-),男,工程師,注冊測繪師.
收稿日期:2014-10-10
中圖分類號:P258;TP319
文獻(xiàn)標(biāo)識碼:A
文章編號:1006-7949(2016)02-0077-04