劉軍,王小維(常州市測(cè)繪院,江蘇常州 213003)
基于AutoCAD地形高程基準(zhǔn)轉(zhuǎn)化程序設(shè)計(jì)
劉軍?,王小維
(常州市測(cè)繪院,江蘇常州 213003)
摘 要:為了減輕地形高程數(shù)據(jù)的內(nèi)業(yè)轉(zhuǎn)化處理,又快又好的保質(zhì)保量完成高程數(shù)據(jù)基準(zhǔn)的轉(zhuǎn)化工作,本文提出了基于AutoCAD VBA的二次開發(fā)技術(shù)設(shè)計(jì)和編寫程序,對(duì)用圖單位提出的地形圖高程要素?cái)?shù)據(jù)進(jìn)行轉(zhuǎn)化與修改,使其符合用圖單位的需求。使用本文設(shè)計(jì)的程序?qū)Φ匦螆D高程要素?cái)?shù)據(jù)處理,實(shí)驗(yàn)表明它可以大大的提高工作效率,而且滿足需求,為測(cè)繪單位對(duì)地形圖中的高程數(shù)據(jù)批量轉(zhuǎn)化提供了有益的參考。
關(guān)鍵詞:地形圖;高程基準(zhǔn)轉(zhuǎn)化;VBA;AutoCAD;Xdata
隨著我國(guó)建設(shè)事業(yè)的迅猛發(fā)展,數(shù)字地形圖越來越得到廣泛的應(yīng)用,如1∶500與1∶1 000大比例尺地形圖是城市規(guī)劃、國(guó)土、設(shè)計(jì)等單位是不可或缺的工作底圖之一。地形圖高程數(shù)據(jù)是地形圖重要的組成部分,高程要素?cái)?shù)據(jù)在工程建設(shè)中也經(jīng)常使用到,它不僅直觀地顯示出地面的高低起伏,而且還可以用來計(jì)算兩點(diǎn)間的坡度,繪制地形斷面,計(jì)算土方量等。
對(duì)于已有的地形圖,其高程系統(tǒng)是已經(jīng)確定了的,比如有些城市的分幅地形圖的高程系統(tǒng)是1985國(guó)家高程基準(zhǔn),有的是1956年黃海高程系。如果遇到某些工程需要的高程系統(tǒng)與已有的地形圖高程系統(tǒng)不一致,這就需要把原有地形圖上的高程經(jīng)過正確轉(zhuǎn)化才能使用,如果高程點(diǎn)很少,大家可以手工修改,但是對(duì)于大面積的地形圖來說,手工修改工作量大,可以通過基于AutoCAD的二次開發(fā)程序解決此類難題。
地形圖高程數(shù)據(jù)分為高程點(diǎn)符號(hào)(BlockRef)與高程注記(Text)兩部分內(nèi)容,即高程點(diǎn)與高程值注記。高程點(diǎn)符號(hào)代表該空間位置,點(diǎn)符號(hào)中添加了高程值等擴(kuò)展數(shù)據(jù)(Xdata),其擴(kuò)展數(shù)據(jù)的格式如圖1所示。高程注記代表該點(diǎn)位的海拔高,其擴(kuò)展數(shù)據(jù)的格式如圖2所示。由圖1與圖2可知,修改地形圖中的高程要素?cái)?shù)據(jù)需要修改高程點(diǎn)符號(hào)中的Xdata數(shù)據(jù)與高程注記數(shù)字。對(duì)于高程注記可以通過對(duì)AutoCAD的文字對(duì)象處理即可,修改高程點(diǎn)符號(hào)第一步需要讀取其擴(kuò)展數(shù)據(jù),獲取高程數(shù)據(jù)并修改才能完成。
圖1 高程點(diǎn)符號(hào)附加數(shù)據(jù)格式
圖2 高程注記附加數(shù)據(jù)格式
地形圖高程數(shù)據(jù)基準(zhǔn)批量轉(zhuǎn)化程序設(shè)計(jì)流程圖如圖3所示。
圖3 地形圖高程數(shù)據(jù)基準(zhǔn)轉(zhuǎn)化程序設(shè)計(jì)流程圖
AutoCAD二次開發(fā)語(yǔ)言有VBA、LISP以及Object-ARX等,VBA及其環(huán)境易于學(xué)習(xí)和使用,它是一個(gè)面向?qū)ο蟮木幊汰h(huán)境,提供了豐富的開發(fā)功能。VBA工程可以是獨(dú)立的,也可以嵌入到圖形中,為開發(fā)人員提供了非常靈活的方式來發(fā)布程序,下面給出地形高程批量修改程序的VBA源代碼。
'變量定義,省略
'構(gòu)造選擇集過濾器
ftype(0)= 8:fdata(0)= "GCD"
'構(gòu)造選擇集
If Not IsNull ( ThisDrawing.SelectionSets.Item ( " this")) Then
Set sset=ThisDrawing.SelectionSets.Item("this")
sset.Delete
End If
Set sset=ThisDrawing.SelectionSets.Add("this")
sset.Select acSelectionSetAll,,,ftype,fdata
If sset.count=0 Then Exit Sub
'處理高程注記
If Obj.ObjectName="AcDbText" Then
Set objtext=Obj
objtext.GetXData "",XType1,XData1
If Val(objtext.textString)<>0 Then
objtext.Refresh
End If
End If
'處理高程點(diǎn)符號(hào)
Obj.GetXData "",XType1,XData1 '讀取擴(kuò)展數(shù)據(jù)
Set objBlock=Obj
newInsertpnt(0)= objBlock.insertionPoint(0)
newInsertpnt(1)= objBlock.insertionPoint(1)
newInsertpnt(2)= objBlock.insertionPoint(2)+Val(dh)
xtypeGC(i)= XType1(i)
xdataGC(i)= XData1(i)
xdataGC(i)= str(Val(XData1(i))+ Val(dh))
'修改高程點(diǎn)的Z值,重新注記高程點(diǎn)位
Set newgcp = ThisDrawing.ModelSpace.InsertBlock(newInsertpnt,"D:map2000gc200.dwg",x_y_scale,x_y_scale,x_y_scale,0)
newgcp.SetXData xtypeGC,xdataGC '重新附加擴(kuò)展數(shù)據(jù)
objBlock.Delete '刪除舊的高程點(diǎn)符號(hào)
某河道綜合整治工程,要求現(xiàn)勢(shì)帶狀地形圖約2.0 km2,河道橫斷面測(cè)量斷面間距要求每隔100 m測(cè)量一個(gè),測(cè)量范圍自河道中心線向兩側(cè)各100 m。我院已有該河道的1∶1 000地形圖,但高程系統(tǒng)是1956年黃海高程系,而甲方要求地形圖與河道橫斷面的高程系統(tǒng)必須是吳淞高程系,需要對(duì)地形高程基準(zhǔn)轉(zhuǎn)化。我院對(duì)該工程的總體設(shè)計(jì)方案是:首先河道斷面高程數(shù)據(jù)與地形圖高程均采用1956年黃海高程系進(jìn)行測(cè)量,最終提交給甲方的資料須通過本文的程序轉(zhuǎn)化處理,即把1956年黃海高程系高程轉(zhuǎn)化為甲方要求的吳淞高程系,檢查無誤后,進(jìn)行河道斷面圖繪制等后繼工作。這樣既保證了我院地形圖高程基準(zhǔn)的一致性,又能滿足甲方用圖要求。高程數(shù)據(jù)轉(zhuǎn)化前與轉(zhuǎn)化后如圖4、圖5所示。
圖4 轉(zhuǎn)化前1956年黃海高程系高程成果
圖5 轉(zhuǎn)化后吳淞高程系高程成果
基于AutoCAD二次開發(fā)技術(shù)編寫程序,批量處理地形圖中的高程數(shù)據(jù),實(shí)踐證明是可行的,它不僅減少了作業(yè)人員手工數(shù)據(jù)修改的錯(cuò)漏,減少了作業(yè)人員的勞動(dòng)強(qiáng)度,而且提高了工作效率。
參考文獻(xiàn)
[1] 范亞男,李勝超,葉泀含.基于AutoCAD的紅線樣式處理程序的實(shí)現(xiàn)[J].城市勘測(cè),2014(2):127~130.
[2] 馮宏偉,羅弘.基于VB的自動(dòng)繪制立面圖程序的設(shè)計(jì)[J].城市勘測(cè),2012(2):94~97.
[3] 李志銳,李法虎.基于VBA技術(shù)的AutoCAD二次開發(fā)在地形圖繪制中的應(yīng)用[J].農(nóng)業(yè)工程學(xué)報(bào),2008(10):25~30.
[4] 張區(qū)旺,劉晉虎.基于VBA的高程注記點(diǎn)匹配檢查實(shí)現(xiàn)[J].煤炭工程,2013 (8):135~136.
[5] 曾洪飛,盧擇林,張帆.AutoCAD VBA&VB.NET開發(fā)基礎(chǔ)與實(shí)例教程(第二版)[M].北京:中國(guó)電力出版社,2013.
The Program Design of AutoCAD Elevation Datum Based on Transformation
Liu Jun,Wang Xiaowei
(Chang Zhou of Surveying and Mapping Institute,Jiangsu 213003,China)
Abstract:In order to reduce the inner terrain elevation data conversion,conversion work fast and good quality and quantity to complete elevation datum,this paper puts forward two development technology of AutoCAD VBA and programming based on data,topographic maps the map unit to transform and modified,to meet with map unit demand.Using the program of this paper on topographic maps data processing,experimental results show that it can greatly improve the work efficiency,but also to meet the demand,as a surveying and mapping unit on the topographic map elevation data batch conversion provides the beneficial reference.
Key words:topographic maps;elevation datum transformation;VBA;AutoCAD ;Xdata
文章編號(hào):1672-8262(2015)01-116-03中圖分類號(hào):P209
文獻(xiàn)標(biāo)識(shí)碼:B
收稿日期:?2014—07—18
作者簡(jiǎn)介:劉軍(1978—),男,高級(jí)工程師,主要從事測(cè)繪質(zhì)量管理與測(cè)繪軟件開發(fā)工作。