廖彩艷,曾昭亮,崔水軍(江西理工大學建筑與測繪工程學院,江西 贛州 341000)
基于AutoCAD規則重定義的大型TIN呈現方法
廖彩艷,曾昭亮,崔水軍
(江西理工大學建筑與測繪工程學院,江西贛州341000)
摘要:針對海量數據不規則三角網(TIN)在AutoCAD中呈現速度慢的問題,本文提出一種快速顯示的方法。該方法利用AutoCAD中提供的二次開發功能,通過對三角網進行顯示規則的重定義,改變三角網在圖形數據庫中的類型達到快速顯示的目的。實驗結果表明,采用這種方法顯示三角網時所用時間在0.2秒之內,極大的縮短了三角網顯示的時間,提高了構網效率。
關鍵詞:AutoCAD;.NET程序開發;規則重定義;TIN呈現;海量數據
AutoCAD是一款Autodesk公司開發的繪圖輔助軟件,在許多行業中都有著廣泛的應用,并且它具有強大的二次開發功能[1],各個行業在它的基礎上開發適合自己行業的專業軟件。在測繪行業中,針對地形圖的繪制國內有許多基于AutoCAD開發的專業繪圖軟件[2]。數字地形測量中TIN是由野外采集的離散點生成,它在地形圖分析中有著廣泛應用[3],然而對于海量數據TIN的顯示大多數還難以滿足工程建設的需要。
本文利用規則重定義這一種新的圖形顯示技術,將不規則三角網的生成算法與之結合,實現在AutoCAD中快速生成和瀏覽TIN。
1.1TIN算法
對于TIN構建算法國內外學者已經做過許多的研究[4],按其基本的原理大體可以分為三類,即插入法、生長法和分治法。現在更多的研究是將不同的算法結合起來,汲取各自的優點。如鄭美霞等[5]提出的基于四叉樹索引的合成算法,姜志偉等[6]提出的基于格網和方向索引的Delaunay三角網算法等。
本文結合以上兩種方法的優點,在數據劃分時采用從底層到頂層的方式。這種從下往上的數據組織方式,全部數據只需要進行一次劃分,以后只是對數據塊再進行劃分,即減少了數據分割的復雜度又有利于數據的查詢。
1.2規則重定義
規則重定義是用.NET對AutoCAD二次開發中的一項功能,它允許改變AutoCAD中標準實體的形狀、屬性、顏色等信息,使視圖中顯示的圖形與數據庫中保存的圖形不同。
顯示重定義是規則重定義的一類,顯示重定義即改變實體的外觀,如文中將一個帶特殊標記的圓顯示成三角網。利用顯示重定義技術來呈現TIN,避免了將三角網中大量的點、線和文字等實體寫入數據庫在屏幕上顯示。這樣就大大減少了在AutoCAD中創建和顯示TIN的時間。
2.1規則重定義顯示三角網
使用顯示重定義必須對WorldDraw函數進行重載,在程序中創建一個新類Myrawable,并讓它派生于類D rawableOverrule。在其中對DrawableOverrule類中的WorldDraw函數進行重載:
public override bool WorldDraw(Drawabledrawable,WorldDrawwd)
{……}
其中第一個參數drawable屬于GraphicsInterface命名空間的Drawable類,表示要重定義的實體對象(本文中為圓);第二個參數wd屬于GraphicsInterface命名空間的WorldDraw類,可以視其為一個用來繪制實體的畫布。
在重載函數中添加三角網繪制的代碼,當需要在視圖中添加標記的圓形實體時,程序就會調用重載的WorldDraw函數對視圖內的三角網繪制輸出。
2.2捕捉視圖內可見三角網數據
為了能快速獲取視圖內可見部分的三角網數據,采用分層格網的形式對數據進行管理,先根據數據密度將數據分塊,再根據塊數將數據塊分區,重復進行直到最終的區數滿足要求為止。
2.3三角網更新
當視圖進行平移或者縮放時,所顯示部分的三角網就會發生變化,所以需要對顯示的三角網進行更新。在程序中添加AutoCAD的文檔事件ViewChanged可以來監控視圖的變化,當對三角網進行平移或縮放時就會觸發該事件。同時因為在圖形數據庫中,三角網是以一個圓的形式存在,所以只有圓的可見屬性發生變化,才能引發WorldDraw函數對其重新繪制。所以需要在ViewChanged事件的處理程序中對圓的一個可見屬性進行修改。這樣當視圖發生變化時,就會調用重載的WorldDraw函數對顯示的三角網進行更新。
利用隨機生成的離散數據對本程序進行測試,將不同數據量時生成顯示三角網所用時間和CASS中所用時間進行對比。結果如表1所示。

表1 三角網生成和顯示所用時間對比
從表1中可以看出當數據量增加時,CASS中構網和顯示所花費時間成指數級增長,采用規則重定義所花費的時間成對數級增長,增長率明顯低于前者。采用規則重定義顯示三角網時,屏幕上呈現三角網的時間與數據總量沒有關系,只和當前屏幕中所包含的點數有關。屏幕中平均點間距和呈現所用時間如表2所示。

表2 屏幕上不同點密度顯示所用時間
當屏幕上點間距越小,屏幕上點數越多時,三角網呈現所用時間越長。而屏幕中所顯示點數的多少,不僅與圖形的縮放比例有關,而且與實際的點密度,顯示器的尺寸等相關。當屏幕上平均點間距達到1毫米時,實際呈現的三角網人眼已經很難分辨細節。
AutoCAD軟件在工程實踐中有著廣泛的應用,在其中建立Delaunay三角網是建立DEM和進行地形分析的基礎。所以實現在AutoCAD中快速的構建和顯示三角網有著重要的意義。本文通過對AutoCAD規則重定義的運用和Delaunay三角網算法的改進,解決了要將三角網中實體信息寫入文檔數據庫后才能顯示的問題,實現了在AutoCAD中快速創建和瀏覽TIN,極大的節省了在AutoCAD中創建顯示不規則三角網的時間,為海量數據的不規則三角網在AutoCAD中的后續應用提供了一種高效的方法。
參考文獻:
[1]姚鑫,宋偉東.AutoCAD環境下數字高程模型的建立和等高線的自動繪制[J].測繪通報,2003(04):29-31.
[2]劉先森,甘濟五,王鐵山.CASS數字測圖軟件中DTM的建立[J].測繪與空間地理信息,2010,33(4):218-224.
[3]陳楚江,王德峰.海量數據CDT快速建立及其實時更新[J].測繪學報,2002,31(3)262-265.
[4]陳弘奕,胡曉斌.海量點云數據等高線生成算法研究[J].測繪通報,2013(10):83-86.
[5]鄭美霞,王彥斌,馬翔旭.基于四叉樹索引構建TIN的高效合成算法[J].地理與地理信息科學,2012,28(2):20-23.
[6]姜志偉,王東山,王伶俐.基于格網和方向法索引的Delaunay三角網生成算法[J].測繪工程,2014,23(2):57-60.
作者簡介:廖彩艷(1989-),男,江西龍南人,在讀碩士,研究方向:遙感圖像處理。