柯廣恒,李 莉
(1.長江航道測量中心,湖北 武漢 430000)
基于AutoCAD的斷面圖批量繪制系統(tǒng)設計與實現(xiàn)
柯廣恒1,李 莉1
(1.長江航道測量中心,湖北 武漢 430000)
介紹了基于AutoCAD的斷面圖批量繪制系統(tǒng)的設計思路,實現(xiàn)了從讀取CAD數(shù)據(jù)文件,到建立DEM三角網(wǎng),再到計算采樣點水深,最后在指定位置自動化批量繪制標準格式斷面圖的一體化解決方案,大幅度減少了人工操作,提高了斷面圖繪制效率。
AutoCAD;斷面圖;批量繪制
傳統(tǒng)的斷面圖繪制方法是采用圖紙上量取,然后讀取數(shù)據(jù)并手工繪制,或使用軟件先讀取水深數(shù)據(jù),再通過水深及距離的對應關(guān)系繪制斷面圖。在實際測量中,觀測點位和設計斷面線不可避免地存在一定偏差,需要對所測水深數(shù)據(jù)進行手動過濾或修正,整個斷面圖繪制過程復雜,重復操作多,生產(chǎn)效率低下,難以滿足長江航道生產(chǎn)用圖的需要。本文提出基于AutoCAD的斷面圖批量繪制系統(tǒng)的設計思路與實現(xiàn)方案,提高了斷面圖繪制效率。
Autodesk公司的AutoCAD軟件數(shù)據(jù)編輯功能強大,許多測繪生產(chǎn)單位都把它作為數(shù)字化測圖和繪圖的主要工具。AutoCAD采用文件方式存儲地理空間實體位置數(shù)據(jù),數(shù)據(jù)的維護和更新比較復雜。本文提出了從讀取CAD數(shù)據(jù)文件,到建立DEM三角網(wǎng),再到計算采樣點水深,最后在指定位置自動化批量繪制標準格式斷面圖的一體化解決方案,并基于VC++程序集成開發(fā)環(huán)境,通過ObjectARX二次開發(fā)函數(shù)庫進行系統(tǒng)開發(fā)與研制[1]??傮w架構(gòu)設計如圖1所示。
2.1 水深點對象的提取
在AutoCAD中,存在多種形式表示的水深數(shù)據(jù),例如點對象、文字對象、塊對象、復合對象等。本系統(tǒng)的數(shù)據(jù)源是文字形式的水深數(shù)據(jù),即水深數(shù)據(jù)的屬性信息中并不含有水深值,而是用文本信息描述水深,同時用文本中特殊字符表示水深點真實位置(如小數(shù)點)。因此,通過ObjectARX得到的文本位置屬性并非直接的水深點真實位置,需要對其進行換算修正。
提取文字對象的第一步是對當前AutoCAD中所有對象進行過濾,僅保留文本對象。獲取到全部的文本對象水深數(shù)據(jù)后,逐個提取水深坐標及相應的水深值。本文以一個文字形式的水深數(shù)據(jù)為例,描述對其提取水深信息的方法。
圖1 系統(tǒng)總體架構(gòu)
圖2 文字形式水深數(shù)據(jù)提取示意圖
如圖2所示,存在一個文本形式表示的水深點,水深值為13.8,坐標為小數(shù)點所在位置。H表示字高,W表示字寬,P1表示文字左下角,即通過ObjectARX獲取到文本水深對象的坐標,P2表示小數(shù)點所在位置,P3為垂足與P1和P2構(gòu)成直角三角形。P2(x,y)即為需要的水深點平面坐標。研究得出:
其中,P1P3表示點P1到點P3的距離,n表示小數(shù)點前面的數(shù)字個數(shù),k1和k2為與字體、字寬相對應的固定經(jīng)驗系數(shù)。
其中, k3為與字體、字高相對應的固定經(jīng)驗系數(shù)。由公式(1)和(2)可以求得:
進而求得P2(x,y):
對于P2點對應的水深數(shù)值,只需用函數(shù)“tstof”對文本進行簡單轉(zhuǎn)換即可。
2.2 離散水深點的三角網(wǎng)構(gòu)建
經(jīng)過提取過濾得到的水深點信息是離散的,僅含有平面坐標位置和水深信息的獨立點,它們之間沒有關(guān)聯(lián)信息。為了能利用這些離散點擬合指定斷面的水下地形情況,需要對其建立不規(guī)則三角網(wǎng),即TIN(triangulated irregular network)。
本系統(tǒng)采用地形擬合方面運用的較普遍的Delaunay三角網(wǎng),采用Lawson算法實現(xiàn)。其基本步驟為:
1)構(gòu)造一個超級三角形,包含所有散點,放入三角形鏈表;
2)將點集中的散點依次插入,在三角形鏈表中找出其外接圓包含插入點的三角形(稱為該點的影響三角形),刪除影響三角形的公共邊,將插入點同影響三角形的全部頂點連接起來,從而完成一個點在Delaunay三角形鏈表中的插入。如圖3所示。
3)根據(jù)優(yōu)化準則對局部新形成的三角形進行優(yōu)化,將形成的三角形放入Delaunay三角形鏈表;
4)循環(huán)執(zhí)行上述第2步,直到所有散點插入完畢。
經(jīng)過實際測試發(fā)現(xiàn),在ObjectARX開發(fā)環(huán)境下,棧內(nèi)存由AutoCAD控制,不能自定義,一般可支持10 000個水深點構(gòu)建Delaunay三角網(wǎng)而不會發(fā)生棧溢出情況。如果需要支持更大數(shù)量的離散點建網(wǎng),需要劃分區(qū)域分割處理,最后組合并網(wǎng)。本文采用緩沖區(qū)方案解決該問題,即針對每條斷面線,擴展生成足夠范圍的緩沖區(qū),將對此斷面線產(chǎn)生影響的離散水深點全部囊括在緩沖區(qū)內(nèi)。最終,僅需要對緩沖區(qū)內(nèi)的離散水深點進行三角網(wǎng)構(gòu)建即可滿足斷面線地形擬合的需要。通過這個方案,一方面解決了過多層次迭代造成棧溢出的問題,另一方面大幅提高了計算速度。如圖4所示,圖4a中間的線段為設定的斷面線,矩形框為通過該斷面線擴展得到的緩沖區(qū)范圍。在計算三角網(wǎng)的時候,僅將納入該范圍內(nèi)的水深點進行考慮。圖4b為緩沖區(qū)內(nèi)離散水深點構(gòu)建好的三角網(wǎng)效果。
圖3 Lawson算法關(guān)鍵步驟
圖4 緩沖區(qū)示意圖
2.3 斷面線上水深數(shù)據(jù)擬合
對于已經(jīng)確定的斷面線,根據(jù)設定好的采樣間隔,可以確定每個采樣點的坐標。將采樣點坐標納入三角網(wǎng),即可擬合出它的水深。
1)確認水深點所屬三角形
遍歷三角網(wǎng)中所有的三角形,采用經(jīng)典的射線法判斷水深點是否在三角形內(nèi)。其積分思路是,設三角形頂點分別為A、B、C,待判斷點為P,在右側(cè)無窮遠的地方找一點Q,作射線PQ,計算PQ和線段AB、BC、CA的交點個數(shù),個數(shù)為奇數(shù)則P在三角形內(nèi),為偶數(shù)則在三角形外。為了避免PQ通過A或B或C時產(chǎn)生誤判,需要減去重合的交點。該方法可以擴展到任意多邊形,且在實際計算中,為了便于計算一般會讓PQ為水平線。
圖5 點與多邊形拓撲關(guān)系判斷示意圖
圖5a中,水平射線與多邊形各邊累計有1個(奇數(shù))交點,因此在多邊形內(nèi);圖5b中,水平射線與多邊形各邊累計有0個(偶數(shù))交點,因此在多邊形外;圖5c中,水平射線與多邊形各邊累計有2個(偶數(shù))交點,因此在多邊形外;圖5d中,水平射線與多邊形各邊累計有2個交點,但是有一個重復,只能算作1個(奇數(shù))交點,因此在多邊形內(nèi)。
通過這個方法,可以查看采樣點是否在某個三角形內(nèi),如果在則認為該采樣點隸屬于這個三角形。如果采樣點不在任何三角形內(nèi),則放寬隸屬檢測條件,不再要求點必須在三角形內(nèi),而是通過計算采樣點與各個三角形幾何中心的距離,來找出幾何中心與采樣點最近的三角形。同時,認為該采樣點隸屬于這個三角形。
2)根據(jù)三角形確定的平面擬合計算水深
經(jīng)過步驟1)可以確定采樣點P對應的三角形ABC。為方便描述,設點A的坐標為(Ax,Ay,Az),點B的坐標為(Bx,By,Bz),點C的坐標為(Cx,Cy,Cz),點P的坐標為(Px,Py,Pz),其中Pz為待求水深值,其他為已知。
利用空間解析幾何的方法,推導出Pz的計算公式如下:
2.4 斷面圖繪制
單個斷面圖主要分成坐標軸、斷面線、注記三個部分。為了便于查看,坐標軸用縱橫的網(wǎng)格線表示,根據(jù)指定的比例尺來調(diào)整間隔。格網(wǎng)范圍中,橫向范圍和斷面線長度相關(guān),縱向范圍和水深極值有關(guān);斷面線用折線來表示,將采樣點展點到斷面圖上后,用折線連接起來即可,無需擬合;注記用于描述斷面圖的名稱、橫軸縱軸含義、比例尺等信息。單張斷面圖實例如圖6所示。
圖6 單張斷面圖示例
在單張斷面圖繪制基礎上,遍歷所有的斷面線成果數(shù)據(jù),然后循環(huán)繪制,即可批量繪制斷面圖。
斷面圖批量自動繪制軟件可方便地解析AutoCAD中的水深點數(shù)據(jù),按照指定的斷面位置分析計算水下地形情況,自動化批量繪制所需的水道斷面圖。已廣泛應用于長江航道日常數(shù)據(jù)生產(chǎn)以及其他相關(guān)的數(shù)據(jù)處理中。軟件處理速度快,使用方便,大大提高了數(shù)據(jù)成果的轉(zhuǎn)換速度和再利用率,顯著提高了工作效率。
[1] 李長勛.AutoCAD ObjectARX程序開發(fā)技術(shù)[M].北京:國防工業(yè)出版社, 2005
[2] 王強,鄭逢斌,喬保軍,等.一種改進的Delaunay三角網(wǎng)生成算法[J].計算機應用與軟件,2010, 27(8):138-140
[3] 湯泉,劉錚. 構(gòu)建Delaunay三角網(wǎng)的改進算法[J].計算機應用,2007(增刊):158-159
[4] 余杰,呂品,鄭昌文.Delaunay三角網(wǎng)構(gòu)建方法比較研究[J].中國圖像圖形學報,2010, 15(8):1 158-1 164
[5] 馬春秋.利用CASS成圖系統(tǒng)繪制河道斷面圖的方法[J].礦山測量,2010(1):22-23
[6] 李曉東,郭恒茂.淺淡利用CASS7.0軟件繪制地形圖和斷面圖[J].礦山測量,2010(9):24-26
[7] 沈誠學.GPS RTK技術(shù)在水下地形測量中的應用[J].甘肅水利水電技術(shù),2008,44(5):327-331
P208
B
1672-4623(2014)03-0162-03
10.11709/j.issn.1672-4623.2014.03.055
柯廣恒,碩士,主要從事地理信息服務研發(fā)工作。
2012-12-27。