劉軍,王小維(常州市測繪院,江蘇常州 213003)
基于AutoCAD地形高程基準轉化程序設計
劉軍?,王小維
(常州市測繪院,江蘇常州 213003)
摘 要:為了減輕地形高程數據的內業轉化處理,又快又好的保質保量完成高程數據基準的轉化工作,本文提出了基于AutoCAD VBA的二次開發技術設計和編寫程序,對用圖單位提出的地形圖高程要素數據進行轉化與修改,使其符合用圖單位的需求。使用本文設計的程序對地形圖高程要素數據處理,實驗表明它可以大大的提高工作效率,而且滿足需求,為測繪單位對地形圖中的高程數據批量轉化提供了有益的參考。
關鍵詞:地形圖;高程基準轉化;VBA;AutoCAD;Xdata
隨著我國建設事業的迅猛發展,數字地形圖越來越得到廣泛的應用,如1∶500與1∶1 000大比例尺地形圖是城市規劃、國土、設計等單位是不可或缺的工作底圖之一。地形圖高程數據是地形圖重要的組成部分,高程要素數據在工程建設中也經常使用到,它不僅直觀地顯示出地面的高低起伏,而且還可以用來計算兩點間的坡度,繪制地形斷面,計算土方量等。
對于已有的地形圖,其高程系統是已經確定了的,比如有些城市的分幅地形圖的高程系統是1985國家高程基準,有的是1956年黃海高程系。如果遇到某些工程需要的高程系統與已有的地形圖高程系統不一致,這就需要把原有地形圖上的高程經過正確轉化才能使用,如果高程點很少,大家可以手工修改,但是對于大面積的地形圖來說,手工修改工作量大,可以通過基于AutoCAD的二次開發程序解決此類難題。
地形圖高程數據分為高程點符號(BlockRef)與高程注記(Text)兩部分內容,即高程點與高程值注記。高程點符號代表該空間位置,點符號中添加了高程值等擴展數據(Xdata),其擴展數據的格式如圖1所示。高程注記代表該點位的海拔高,其擴展數據的格式如圖2所示。由圖1與圖2可知,修改地形圖中的高程要素數據需要修改高程點符號中的Xdata數據與高程注記數字。對于高程注記可以通過對AutoCAD的文字對象處理即可,修改高程點符號第一步需要讀取其擴展數據,獲取高程數據并修改才能完成。

圖1 高程點符號附加數據格式

圖2 高程注記附加數據格式
地形圖高程數據基準批量轉化程序設計流程圖如圖3所示。

圖3 地形圖高程數據基準轉化程序設計流程圖
AutoCAD二次開發語言有VBA、LISP以及Object-ARX等,VBA及其環境易于學習和使用,它是一個面向對象的編程環境,提供了豐富的開發功能。VBA工程可以是獨立的,也可以嵌入到圖形中,為開發人員提供了非常靈活的方式來發布程序,下面給出地形高程批量修改程序的VBA源代碼。
'變量定義,省略
'構造選擇集過濾器
ftype(0)= 8:fdata(0)= "GCD"
'構造選擇集
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
'處理高程點符號
Obj.GetXData "",XType1,XData1 '讀取擴展數據
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))
'修改高程點的Z值,重新注記高程點位
Set newgcp = ThisDrawing.ModelSpace.InsertBlock(newInsertpnt,"D:map2000gc200.dwg",x_y_scale,x_y_scale,x_y_scale,0)
newgcp.SetXData xtypeGC,xdataGC '重新附加擴展數據
objBlock.Delete '刪除舊的高程點符號
某河道綜合整治工程,要求現勢帶狀地形圖約2.0 km2,河道橫斷面測量斷面間距要求每隔100 m測量一個,測量范圍自河道中心線向兩側各100 m。我院已有該河道的1∶1 000地形圖,但高程系統是1956年黃海高程系,而甲方要求地形圖與河道橫斷面的高程系統必須是吳淞高程系,需要對地形高程基準轉化。我院對該工程的總體設計方案是:首先河道斷面高程數據與地形圖高程均采用1956年黃海高程系進行測量,最終提交給甲方的資料須通過本文的程序轉化處理,即把1956年黃海高程系高程轉化為甲方要求的吳淞高程系,檢查無誤后,進行河道斷面圖繪制等后繼工作。這樣既保證了我院地形圖高程基準的一致性,又能滿足甲方用圖要求。高程數據轉化前與轉化后如圖4、圖5所示。

圖4 轉化前1956年黃海高程系高程成果

圖5 轉化后吳淞高程系高程成果
基于AutoCAD二次開發技術編寫程序,批量處理地形圖中的高程數據,實踐證明是可行的,它不僅減少了作業人員手工數據修改的錯漏,減少了作業人員的勞動強度,而且提高了工作效率。
參考文獻
[1] 范亞男,李勝超,葉泀含.基于AutoCAD的紅線樣式處理程序的實現[J].城市勘測,2014(2):127~130.
[2] 馮宏偉,羅弘.基于VB的自動繪制立面圖程序的設計[J].城市勘測,2012(2):94~97.
[3] 李志銳,李法虎.基于VBA技術的AutoCAD二次開發在地形圖繪制中的應用[J].農業工程學報,2008(10):25~30.
[4] 張區旺,劉晉虎.基于VBA的高程注記點匹配檢查實現[J].煤炭工程,2013 (8):135~136.
[5] 曾洪飛,盧擇林,張帆.AutoCAD VBA&VB.NET開發基礎與實例教程(第二版)[M].北京:中國電力出版社,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
文章編號:1672-8262(2015)01-116-03中圖分類號:P209
文獻標識碼:B
收稿日期:?2014—07—18
作者簡介:劉軍(1978—),男,高級工程師,主要從事測繪質量管理與測繪軟件開發工作。