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