吳錦發
(福建省測繪院,福建 福州 350003)
?
斷面成果數據輸出軟件的開發及實現
吳錦發
(福建省測繪院,福建 福州 350003)
當前普通斷面測量數據整理后用CASS軟件處理并繪制剖面圖,可以直觀地體現斷面的形狀,用以設計或計算土方量,但無法輸出不同格式的斷面數據文件。不同設計單位對斷面數據格式要求不一樣,為了更靈活、方便地滿足不同需求,需要研究斷面成果數據輸出不同格式的方法。Visual LISP(VLISP)是AutoCAD內置的解釋軟件,與CAD兼容較好,Visual BASIC(VB)是面向對象編程,功能強大、簡單易學。本文研究在現有軟件的基礎上,根據其不足,利用Visual BASIC(VB)和Visual LISP(VLISP)編程語言的各自優勢,在AutoCAD平臺上開發編寫軟件。開發的軟件可實現批處理自動生成所需要的不同斷面數據格式文件,解決斷面成果不同格式數據輸出的難題,避免數據文件在不同程序相互轉換中數據精度的損失,同時由于自動批處理,較大提高了工作效率。筆者用所研究的方法和開發的軟件,完成了崇陽溪保護性開發河道測量斷面的成果數據整理和輸出。
1主要技術方法
當前普遍采用的斷面軟件是 CASS,它是基于AutoCAD二次開發的數字化測繪成圖軟件。斷面數據經外業實測后,在軟件中展點,生成線狀斷面圖。斷面圖直觀體現地貌特征,但是沒有輸出其他格式文本文件的功能。
VLISP和VB程序均為易學、易懂、功能強大的高級語言,VB生成EXE文件獨立運行;VLISP則必須在AutoCAD環境內運行。因此,可以充分利用VLISP和VB的各自優勢,結合二者的特色在AutoCAD平臺上進行開發,完成各自的功能,快速、準確、高效地輸出不同格式的斷面數據成果。
1.1具體技術流程
在本次項目中,深水區采用測深儀施測,淺水區直接涉水觀測(全站儀或GPS-RTK觀測)。外業數據用CASS軟件進行高程點展出,用VLISP程序按斷面線逐個高程點進行定義。全部完成后,對高程點的屬性進行讀取,進行高斯反算、平距反算,輸出文件;然后啟動VB程序,打開剛輸出的文件,按不同格式要求進行組織排列,輸出滿足要求的格式文件。具體流程圖如圖1所示。

圖1 技術流程圖
1.2Visual LISP實現的功能
擴展數據是依附在CAD地物的組碼中開頭為“-3”、不影響CAD實體形狀、編輯的一串數據。基于CAD二次開發的軟件大都使用擴展數據定義地物屬性,以識別地物或附加信息。
VLISP兼容以前版本的LISP程序,可以用源碼的形式或編譯后的FAS、VLX文件在AutoCAD中運行。在河道斷面數據定義時,運用VLISP對CAD內部的地物(本項目中主要為高程點)進行擴展數據的寫入,最后批量讀出坐標和擴展數據的屬性,進行高斯反算、平距反算,輸出TXT文件。
1.3Visual BASIC實現的功能
VB具有較強大的文件讀寫功能,在VLISP輸出的TXT文件后,利用VB編程實現TXT文件讀入、排序、排版,最后按照要求生成符合格式要求的文件。
2軟件功能的具體實現
2.1Visual LISP的開發
CAD內的地物以組碼的形式保存。高程點表示為“GC200”塊,并在擴展數據表示為“(-3 (“south” (1000.“202101”)))”,其中“south”為定義的程序名,“202101”為其屬性,即為“高程點”。將新屬性“(“DUAN_MIAN” (1000.“Attribute”))”添加至高程點的擴展數據中,其中“DUAN_MIAN”屬性取為“斷面數據”;“Attribute”屬性包含斷面號、是否基準點(T/F),以及基準點坐標等信息,如“DM001,F,3039541.1805,461419.6038,145.203”。在斷面定義全部完成后,分別讀出坐標、擴展數據,按照高斯反算公式(1)計算各點的經緯度,并生成高程點信息至文本文件。每行的數據有斷面號、是否基準點、基準點坐標、經度、緯度、本點坐標。TXT文件固定放在VB程序目錄或者驅動器根目錄下。
高斯反算公式:
B=Bf-(1-(b4-0.147Z2)Z2)Z2b2ρ″,
(1)
L=L0+l.
在VLISP程序輸出文件結束后,由VLISP啟動VB程序,按預先設定好的文件目錄,讀入剛輸出的TXT文件,用本點坐標與基準點坐標進行計算平距;最后按斷面號、與基準點平距大小的順序排版(本次采用的是Access方式輔助排版)并進行寫文件。
2.2程序代碼的編寫
1)Visual LISP的程序代碼(局部)
以下是高程點添加擴展數據的VLISP函數段,用法為“(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排列后,進行寫出文件。
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程序打包發行
程序在編寫全部完成并經大量數據測試合格后,進行打包發行給項目作業組,力求“傻瓜式安裝、便捷式操作、全程封裝式運行”。
3實際應用及精度分析
把研究的方法及開發的軟件應用于福建省武夷新區崇陽溪流域斷面測量成果的輸出。崇陽溪位于閩江上游,本次施測區域為建陽水文站至武夷山公館大橋水域,全長約45 km,計劃垂直于崇陽溪中線,按20 m/條進行斷面測量。
3.1項目成果數據輸出格式要求
用經緯度表示高程點坐標格式文本文件,成果輸出文件具體格式如下:
斷面號(如DM001);
斷面號,0,X,Y,H,B,L;
斷面號,至基準點的平距1,X1,Y1,H1,B1,L1;
斷面號,至基準點的平距2,X2,Y2,p,B2,L2;
……
3.2軟件運行結果
外業測繪后,將全站儀、測深儀或GPS-RTK內的直角坐標數據,導入CASS程序中后進行高程點的篩選。運行本程序逐個斷面選擇高程點進行定義,根據CASS軟件生成斷面成果DWG格式文件,如圖2(a)所示(數據有刪減)。經過該軟件的運行,統一輸出生成文本格式的數據成果,如圖2(b)所示。

圖2 結果數據
3.3成果數據檢查對比
本軟件運行結果數據精度取位到0.001″,計算過程產生的數據精度損失在允許范圍,滿足設計要求。
通過查詢高程點坐標,并按高斯反算公式(1)換算成大地坐標,與程序生成的文件進行精度對比分析,對比結果如表1。

表1 精度對比 (° ′ ″)
4結束語
目前斷面測量的成果一般采用CASS軟件繪制成圖,但無法輸出不同格式的數據文件。本文根據Visual BASIC(VB)和Visual LISP(VLISP)編程語言的優點,在AutoCAD平臺上開發編程,批處理自動生成設計單位所要求的斷面數據不同格式文件,解決了斷面成果數據不同格式輸出的技術難題。通過在崇陽溪的河流斷面測量中的實際應用證明,精度滿足要求,軟件操作簡單實用,并實現自動批處理,較大提高了工作效率,具有良好的推廣使用價值。
參考文獻:
[1]孔祥元,郭際明,劉宗泉.大地測量學基礎[M].武漢大學出版社,2008:176.
[2]樂志豪.VB和VBA for AutoCAD編程在電力勘測塔基斷面數據處理中的應用[J].測繪與空間地理信息,2012,35(7):181-182.
[3]張煒,周斌麟.Visual LISP和CASS相結合實現斷面圖的自動繪制[J].測繪與空間地理信息,2011,34(4):239-240.
[4]梁華冰.VLISP與VBA結合編程在測量放線工作中的應用[J].測繪工程,2014,23(5):75-77.
[5]李玉潔.AutoCAD及AutoLISP語言在規劃建筑紅線放線測量中的應用[J].數字技術與應用,2012,(5):58-60.
[6]王湘文.AutoLISP語言在測量工作中的應用[J].測繪與空間地理信息,2012,35(10):216-218.
[7]王奎力.AutoLISP語言在工程橫斷面測量中的應用[J].冶金設備管理與維修,2012,(2):9-11.
[8]高華峰.基于VLISP對地形圖中橫斷面的提取并生成橫斷面圖的研究[J].科技資訊,2012,(12):16、18.
摘要:斷面測量的成果一般采用CASS軟件繪制成圖,但無法輸出不同格式的數據文件。以武夷新區崇陽溪保護性開發河道斷面測量數據成果為例,對斷面數據進行分析,進行技術方法研究,在AutoCAD平臺上綜合運用Visual LISP 和Visual BASIC進行軟件開發,編程解決斷面成果不同數據格式的輸出問題。軟件簡單實用,并具有批處理功能,具有較好的推廣使用價值。
關鍵詞:斷面數據輸出;斷面測量;VB;VLISP;軟件開發
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
作者簡介:吳錦發(1979-),男,工程師,注冊測繪師.
收稿日期:2014-10-10
中圖分類號:P258;TP319
文獻標識碼:A
文章編號:1006-7949(2016)02-0077-04