劉虎
(蚌埠市勘測設(shè)計研究院,安徽蚌埠 233000)
基于CASS屬性的DWG數(shù)據(jù)快速分層方法
劉虎?
(蚌埠市勘測設(shè)計研究院,安徽蚌埠 233000)
按照分層需求編制數(shù)據(jù)分層規(guī)則,并存儲于數(shù)據(jù)庫中。采用VBA語言編寫分層程序,遍歷DWG數(shù)據(jù)對象,讀取其CASS碼,檢索分層規(guī)則確定所屬圖層,并將對象移動到目標圖層中,實現(xiàn)對DWG數(shù)據(jù)的快速分層。此方法避免人工直接操作實體對象,效率和準確性較高。尤其在對大面積地形圖進行分層時,相對人工分層,優(yōu)勢明顯。
AutoCAD;擴展屬性;CASS;快速分層
AutoCAD是一種以二維制圖為主,具有部分三維功能的工程設(shè)計軟件。友好的界面設(shè)置,鼠標與命令相結(jié)合的操作模式,強大的工程設(shè)計功能及豐富的二次開發(fā)接口,使其在工程測繪制圖上應用廣泛,成為地形圖矢量制圖與數(shù)據(jù)整理的首要軟件之一。CASS碼是南方數(shù)碼公司結(jié)合地理信息分類碼編制的一套適用于AutoCAD地形圖制圖的地類分類碼,包括所有常見的地理要素。CASS碼依托于AutoCAD的DWG圖形數(shù)據(jù)庫,以擴展屬性的方式為DWG數(shù)據(jù)圖元數(shù)據(jù)追加CASS屬性,用以區(qū)分各種不同地物要素,實現(xiàn)一個地物或圖元對應一條數(shù)據(jù)記錄。VBA是AutoCAD自帶的一種二次開發(fā)環(huán)境,采用VB語法,能夠編程實現(xiàn)對AutoCAD圖元要素的各種復雜操作[1]。
CAD數(shù)據(jù)對象有個很大的不足之處,就是對象可以很容易的移動到其他圖層,基本沒有限制,方便數(shù)據(jù)編輯的同時,也因為誤操作導致數(shù)據(jù)分層極易出錯。本文嘗試避開人工操作實體對象,通過編制分層文件和計算機程序,以CASS碼為檢索目標,實現(xiàn)對測繪數(shù)據(jù)的快速分層,滿足各種定制需求。
AutoCAD擴展屬性(XDATA)是向AutoCAD中的幾何實體添加自定義數(shù)據(jù),可以處理包括字符串、實數(shù)、整數(shù)和實體句柄等許多信息,但要求的數(shù)據(jù)量不超過16K。AutoCAD可以與管理基本幾何實體數(shù)據(jù)一樣管理XDATA,但必須采用程序操作。擴展的對象數(shù)據(jù)是在對象數(shù)據(jù)記錄中以標示碼為前導的一個項。在一個圖元中,可以加入擴展數(shù)據(jù)大小為:16 383字節(jié)[2,3]。
南方CASS是一種在地形圖繪制中應用廣泛的制圖軟件,其通過編制一整套的CASS碼,以擴展屬性的方式添加到CAD圖形中,實現(xiàn)地形要素的編碼與制圖。每個圖元由唯一CASS碼標示,在一個圖形要素中,每一行擴展屬性包括兩部分內(nèi)容。以一個建筑要素為例,其CASS碼包括三個部分:第一行是標示字符,表明這個是南方CASS擴展屬性,如“1001:SOUTH”;第二行標示要素類,也就是要素分類碼,標示此要素的具體分類,如磚房屋“1000:141111”;第三行為補充性字段,如樓層數(shù)“1040:7”,如圖1所示。本文通過檢索CASS碼中的地類碼,來實現(xiàn)對圖形要素的快速分層[4,5]。
圖1 CASS屬性
為了能夠重復利用已經(jīng)編制好的數(shù)據(jù)分層規(guī)則,本文以數(shù)據(jù)庫的形式存儲基于CASS碼的數(shù)據(jù)分層規(guī)則。程序遍歷圖中所有圖元,讀取CASS碼,或者將已公開的CASS碼提前錄入數(shù)據(jù)庫中。然后按照分層要求,建立對應的圖層,將所屬的CASS碼歸入對應的圖層規(guī)則中,完成數(shù)據(jù)分層規(guī)則的初步編制。分層規(guī)則編制完成后,由程序遍歷所有圖形要素,讀取CASS碼,檢索分層規(guī)則確定其對應圖層,將地形要素移入對應圖層中。對未按照規(guī)則分層,遺漏的圖形要素,檢測CASS碼,確定是規(guī)則遺漏還是其他原因,修正分層規(guī)則,重新分層,以達到將所需要的地物要素完全按照需要進行分層定制,得到目標AutoCAD文件,技術(shù)流程如圖2所示。
圖2 數(shù)據(jù)分層流程圖
本文所述數(shù)據(jù)分層方法用數(shù)據(jù)庫存儲分層規(guī)則,以CAD擴展工具欄的方式實現(xiàn)相關(guān)操作命令。
數(shù)據(jù)庫采用Access的mdb數(shù)據(jù)庫,包括存儲CASS碼和分層規(guī)則兩大部分,其中存儲CASS碼的數(shù)據(jù)表在前期用Access定制,存儲分層規(guī)則的數(shù)據(jù)表用程序?qū)崿F(xiàn)。
CAD擴展工具欄通過在CAD命令行數(shù)據(jù)“cui”命令,打開“自定義用戶界面”,通過建立自定義的菜單欄和菜單項,實現(xiàn)本文所需工具欄的定制,并設(shè)置相應的程序入口。如圖3所示,自定義lh.cui為自定義菜單文件,其“圖層管理”工具欄中的“分層設(shè)置”用來對分層規(guī)則的編制,“數(shù)據(jù)分層”用來實現(xiàn)數(shù)據(jù)分層命令。選中單個菜單項,可對相關(guān)命令內(nèi)容進行設(shè)置。
圖3 自定義分層工具欄
上述分層規(guī)則數(shù)據(jù)表的創(chuàng)建及其他數(shù)據(jù)分層的實現(xiàn),采用VBA程序設(shè)計工具,編寫相應的程序代碼與工具欄命令相對應。首先,采用ADO數(shù)據(jù)庫方法,與存儲數(shù)據(jù)庫建立連接,實現(xiàn)數(shù)據(jù)表的建立,并將編制的分層規(guī)則存入對應的數(shù)據(jù)表中。然后采用CAD二次開發(fā)中的GetXData方法,讀取地物要素的CASS碼,并按分層規(guī)則將要素歸入對應圖層中。
程序開發(fā)完成后,CAD命令行輸入“menuload”加載定制的工具欄文件(cui文件),輸入命令“appload”加載程序文件(DVB文件),完成相關(guān)程序集的加載。設(shè)置好后,CAD每次啟動將自動加載cui和dvb程序文件。新奧燃氣的分層規(guī)則如圖4所示,共5個圖層:道路、建筑、圖框、植被和水系,每個圖層包括制定的CASS碼。通過檢索DWG中實體對象CASS碼,快速完成分層規(guī)則的編制。項目覆蓋面積約200 km2,從定制分層規(guī)則到分層完成,用時僅約30 min,且分層無錯漏,并剔除了多余數(shù)據(jù)。
圖4 分層圖層設(shè)置
本文闡述的數(shù)據(jù)分層方法,通過在新奧燃氣制圖等多個項目中使用,相比人工分層明顯提高了工作效率,且避免了人工分層時的要素遺漏與錯層等常見錯誤。以數(shù)據(jù)庫存儲分層規(guī)則,實現(xiàn)了一次定制分層規(guī)則,多次應用,節(jié)省了前期所需時間。采用cui文件與DVB文件相結(jié)合的方式,既解決了DVB文件無法編譯,每次應用需加載的問題,又實現(xiàn)了菜單制作與程序分離,易于后續(xù)的修改與維護。本程序在實現(xiàn)分層的同時,亦可實現(xiàn)對特定地物要素的提取,只需將需要的地物要素按照圖層設(shè)置好,就可將相關(guān)要素提取到對應圖層中。但是在編制分層規(guī)則上,有些不足,效率上有待提高。
[1] 王建設(shè),時東玉,褚喆.AutoCAD二次開發(fā)解決二調(diào)中數(shù)據(jù)采集中的問題[J].現(xiàn)代測繪,2008(6).
[2] 黃杏元,馬勁松,湯勤.地理信息系統(tǒng)概論[M].北京:高等教育出版社,2001.
[3] 錢業(yè)宏,花向紅.AutoCAD擴展數(shù)據(jù)在地形圖建庫中的應用[J].城市勘測,2008(1).
[4] 崔先國,張明波.AutoCAD中擴展圖元數(shù)據(jù)的應用[J].礦山測量,1999(8).
[5] 周蓉,杜曉榮,張麗華等.圖形系統(tǒng)二次開發(fā)環(huán)境的研究與實現(xiàn)[J].合肥工業(yè)大學學報,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數(shù)據(jù)處理、地理信息工程開發(fā)、航空攝影測量等工作。