試談基于CASS的DWG數(shù)據(jù)快速分層方法論文
1 前 言
AutoCAD 是一種以二維制圖為主,具有部分三維功能的工程設(shè)計(jì)軟件。友好的界面設(shè)置,鼠標(biāo)與命令相結(jié)合的操作模式,強(qiáng)大的工程設(shè)計(jì)功能及豐富的二次開(kāi)發(fā)接口,使其在工程測(cè)繪制圖上應(yīng)用廣泛,成為地形圖矢量制圖與數(shù)據(jù)整理的首要軟件之一。CASS 碼是南方數(shù)碼公司結(jié)合地理信息分類碼編制的一套適用于AutoCAD 地形圖制圖的地類分類碼,包括所有常見(jiàn)的地理要素。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 自帶的一種二次開(kāi)發(fā)環(huán)境,采用VB 語(yǔ)法,能夠編程實(shí)現(xiàn)對(duì)AutoCAD 圖元要素的各種復(fù)雜操作。
CAD 數(shù)據(jù)對(duì)象有個(gè)很大的不足之處,就是對(duì)象可以很容易的移動(dòng)到其他圖層,基本沒(méi)有限制,方便數(shù)據(jù)編輯的同時(shí),也因?yàn)檎`操作導(dǎo)致數(shù)據(jù)分層極易出錯(cuò)。本文嘗試避開(kāi)人工操作實(shí)體對(duì)象,通過(guò)編制分層文件和計(jì)算機(jī)程序,以CASS 碼為檢索目標(biāo),實(shí)現(xiàn)對(duì)測(cè)繪數(shù)據(jù)的快速分層,滿足各種定制需求。
2 AutoCAD 擴(kuò)展屬性與CASS 碼
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é)。
南方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”。本文通過(guò)檢索CASS 碼中的地類碼,來(lái)實(shí)現(xiàn)對(duì)圖形要素的快速分層
3 技術(shù)流程
為了能夠重復(fù)利用已經(jīng)編制好的數(shù)據(jù)分層規(guī)則,本文以數(shù)據(jù)庫(kù)的形式存儲(chǔ)基于CASS 碼的數(shù)據(jù)分層規(guī)則。程序遍歷圖中所有圖元,讀取CASS 碼,或者將已公開(kāi)的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ù)流程
4 程序?qū)崿F(xiàn)
本文所述數(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”命令,打開(kāi)“自定義用戶界面”,通過(guò)建立自定義的菜單欄和菜單項(xiàng),實(shí)現(xiàn)本文所需工具欄的定制,并設(shè)置相應(yīng)的程序入口。自定義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è)置。上述分層規(guī)則數(shù)據(jù)表的創(chuàng)建及其他數(shù)據(jù)分層的實(shí)現(xiàn),采用VBA 程序設(shè)計(jì)工具,編寫(xiě)相應(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 二次開(kāi)發(fā)中的GetXData 方法,讀取地物要素的CASS 碼,并按分層規(guī)則將要素歸入對(duì)應(yīng)圖層中。
程序開(kāi)發(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ù)。
5 結(jié) 論
本文闡述的數(shù)據(jù)分層方法,通過(guò)在新奧燃?xì)庵茍D等多個(gè)項(xiàng)目中使用,相比人工分層明顯提高了工作效率,且避免了人工分層時(shí)的要素遺漏與錯(cuò)層等常見(jiàn)錯(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ī)則上,有些不足,效率上有待提高。
【試談基于CASS的DWG數(shù)據(jù)快速分層方法論文】相關(guān)文章:
基于南方CASS5.1的基礎(chǔ)空間數(shù)據(jù)整理07-07
基于南方CASS的全要素地形圖數(shù)據(jù)入庫(kù)整理07-14
下分層快速掘進(jìn)的研究論文04-15
基于MODIS數(shù)據(jù)的積雪提取方法07-05
探析基于大數(shù)據(jù)環(huán)境下的數(shù)據(jù)安全論文01-13
基于ENVI的MODIS數(shù)據(jù)預(yù)處理方法07-10