劉虎
(蚌埠市勘測設計研究院,安徽蚌埠 233000)
基于CASS屬性的DWG數據快速分層方法
劉虎?
(蚌埠市勘測設計研究院,安徽蚌埠 233000)
按照分層需求編制數據分層規則,并存儲于數據庫中。采用VBA語言編寫分層程序,遍歷DWG數據對象,讀取其CASS碼,檢索分層規則確定所屬圖層,并將對象移動到目標圖層中,實現對DWG數據的快速分層。此方法避免人工直接操作實體對象,效率和準確性較高。尤其在對大面積地形圖進行分層時,相對人工分層,優勢明顯。
AutoCAD;擴展屬性;CASS;快速分層
AutoCAD是一種以二維制圖為主,具有部分三維功能的工程設計軟件。友好的界面設置,鼠標與命令相結合的操作模式,強大的工程設計功能及豐富的二次開發接口,使其在工程測繪制圖上應用廣泛,成為地形圖矢量制圖與數據整理的首要軟件之一。CASS碼是南方數碼公司結合地理信息分類碼編制的一套適用于AutoCAD地形圖制圖的地類分類碼,包括所有常見的地理要素。CASS碼依托于AutoCAD的DWG圖形數據庫,以擴展屬性的方式為DWG數據圖元數據追加CASS屬性,用以區分各種不同地物要素,實現一個地物或圖元對應一條數據記錄。VBA是AutoCAD自帶的一種二次開發環境,采用VB語法,能夠編程實現對AutoCAD圖元要素的各種復雜操作[1]。
CAD數據對象有個很大的不足之處,就是對象可以很容易的移動到其他圖層,基本沒有限制,方便數據編輯的同時,也因為誤操作導致數據分層極易出錯。本文嘗試避開人工操作實體對象,通過編制分層文件和計算機程序,以CASS碼為檢索目標,實現對測繪數據的快速分層,滿足各種定制需求。
AutoCAD擴展屬性(XDATA)是向AutoCAD中的幾何實體添加自定義數據,可以處理包括字符串、實數、整數和實體句柄等許多信息,但要求的數據量不超過16K。AutoCAD可以與管理基本幾何實體數據一樣管理XDATA,但必須采用程序操作。擴展的對象數據是在對象數據記錄中以標示碼為前導的一個項。在一個圖元中,可以加入擴展數據大小為:16 383字節[2,3]。
南方CASS是一種在地形圖繪制中應用廣泛的制圖軟件,其通過編制一整套的CASS碼,以擴展屬性的方式添加到CAD圖形中,實現地形要素的編碼與制圖。每個圖元由唯一CASS碼標示,在一個圖形要素中,每一行擴展屬性包括兩部分內容。以一個建筑要素為例,其CASS碼包括三個部分:第一行是標示字符,表明這個是南方CASS擴展屬性,如“1001:SOUTH”;第二行標示要素類,也就是要素分類碼,標示此要素的具體分類,如磚房屋“1000:141111”;第三行為補充性字段,如樓層數“1040:7”,如圖1所示。本文通過檢索CASS碼中的地類碼,來實現對圖形要素的快速分層[4,5]。

圖1 CASS屬性
為了能夠重復利用已經編制好的數據分層規則,本文以數據庫的形式存儲基于CASS碼的數據分層規則。程序遍歷圖中所有圖元,讀取CASS碼,或者將已公開的CASS碼提前錄入數據庫中。然后按照分層要求,建立對應的圖層,將所屬的CASS碼歸入對應的圖層規則中,完成數據分層規則的初步編制。分層規則編制完成后,由程序遍歷所有圖形要素,讀取CASS碼,檢索分層規則確定其對應圖層,將地形要素移入對應圖層中。對未按照規則分層,遺漏的圖形要素,檢測CASS碼,確定是規則遺漏還是其他原因,修正分層規則,重新分層,以達到將所需要的地物要素完全按照需要進行分層定制,得到目標AutoCAD文件,技術流程如圖2所示。

圖2 數據分層流程圖
本文所述數據分層方法用數據庫存儲分層規則,以CAD擴展工具欄的方式實現相關操作命令。
數據庫采用Access的mdb數據庫,包括存儲CASS碼和分層規則兩大部分,其中存儲CASS碼的數據表在前期用Access定制,存儲分層規則的數據表用程序實現。
CAD擴展工具欄通過在CAD命令行數據“cui”命令,打開“自定義用戶界面”,通過建立自定義的菜單欄和菜單項,實現本文所需工具欄的定制,并設置相應的程序入口。如圖3所示,自定義lh.cui為自定義菜單文件,其“圖層管理”工具欄中的“分層設置”用來對分層規則的編制,“數據分層”用來實現數據分層命令。選中單個菜單項,可對相關命令內容進行設置。

圖3 自定義分層工具欄
上述分層規則數據表的創建及其他數據分層的實現,采用VBA程序設計工具,編寫相應的程序代碼與工具欄命令相對應。首先,采用ADO數據庫方法,與存儲數據庫建立連接,實現數據表的建立,并將編制的分層規則存入對應的數據表中。然后采用CAD二次開發中的GetXData方法,讀取地物要素的CASS碼,并按分層規則將要素歸入對應圖層中。
程序開發完成后,CAD命令行輸入“menuload”加載定制的工具欄文件(cui文件),輸入命令“appload”加載程序文件(DVB文件),完成相關程序集的加載。設置好后,CAD每次啟動將自動加載cui和dvb程序文件。新奧燃氣的分層規則如圖4所示,共5個圖層:道路、建筑、圖框、植被和水系,每個圖層包括制定的CASS碼。通過檢索DWG中實體對象CASS碼,快速完成分層規則的編制。項目覆蓋面積約200 km2,從定制分層規則到分層完成,用時僅約30 min,且分層無錯漏,并剔除了多余數據。

圖4 分層圖層設置
本文闡述的數據分層方法,通過在新奧燃氣制圖等多個項目中使用,相比人工分層明顯提高了工作效率,且避免了人工分層時的要素遺漏與錯層等常見錯誤。以數據庫存儲分層規則,實現了一次定制分層規則,多次應用,節省了前期所需時間。采用cui文件與DVB文件相結合的方式,既解決了DVB文件無法編譯,每次應用需加載的問題,又實現了菜單制作與程序分離,易于后續的修改與維護。本程序在實現分層的同時,亦可實現對特定地物要素的提取,只需將需要的地物要素按照圖層設置好,就可將相關要素提取到對應圖層中。但是在編制分層規則上,有些不足,效率上有待提高。
[1] 王建設,時東玉,褚喆.AutoCAD二次開發解決二調中數據采集中的問題[J].現代測繪,2008(6).
[2] 黃杏元,馬勁松,湯勤.地理信息系統概論[M].北京:高等教育出版社,2001.
[3] 錢業宏,花向紅.AutoCAD擴展數據在地形圖建庫中的應用[J].城市勘測,2008(1).
[4] 崔先國,張明波.AutoCAD中擴展圖元數據的應用[J].礦山測量,1999(8).
[5] 周蓉,杜曉榮,張麗華等.圖形系統二次開發環境的研究與實現[J].合肥工業大學學報,2004.
The DWG Data Fast Hierarchical Method Based on Attributes of the CASS
Liu Hu
(Bengbu Design and Research Institute of Geotechnical Investigation and Surveying,Bengbu 233000,China)
Data compiled in accordance with the rules of hierarchical stratification requirements and stored in the database.Layered program using VBA language,traversing DWG data object,read its CASS code,retrieve hierarchical rules to determine belongs layer,and the object is moved to the target layer,to achieve rapid stratification of DWG data.This method avoids artificial entity objects directly operated,high efficiency and accuracy.Especially when a large area topographic map stratified,relatively artificial stratification,have obvious advantages.
AutoCAD;extend property;CASS;quickly hierarchical
1672-8262(2016)01-129-03
P208.1
B
?2015—09—29
劉虎(1983—),男,碩士,工程師,主要從事GIS數據處理、地理信息工程開發、航空攝影測量等工作。