李杰,郝會(huì)民,李慧
(石家莊市勘察測(cè)繪設(shè)計(jì)研究院,河北石家莊 050019)
分幅數(shù)字地形圖元數(shù)據(jù)的高效提取
李杰?,郝會(huì)民,李慧
(石家莊市勘察測(cè)繪設(shè)計(jì)研究院,河北石家莊 050019)
元數(shù)據(jù)是“關(guān)于數(shù)據(jù)的數(shù)據(jù)”,在數(shù)字地形圖測(cè)繪活動(dòng)中,分幅數(shù)字地形圖是最重要的成果形式之一,其圖外要素包含著重要的地形圖元數(shù)據(jù)信息。在AutoCAD環(huán)境下,如何從分幅數(shù)字地形圖中快速、靈活、高效地提取出元數(shù)據(jù)信息是本文討論的主要內(nèi)容。
AutoCAD;分幅數(shù)字地形圖;元數(shù)據(jù);選擇集
在數(shù)字地形圖測(cè)繪當(dāng)中,圖形數(shù)據(jù)成果一般以地形塊圖和分幅圖的形式提供,其中最常用且最重要的是分幅地形圖,標(biāo)準(zhǔn)的圖幅規(guī)格一般有40 cm×50 cm和50 cm×50 cm兩種。數(shù)字地形圖圖外要素一般包含有:圖名和圖號(hào)、接圖表、密級(jí)、測(cè)繪單位、測(cè)圖時(shí)間、坐標(biāo)系統(tǒng)及高程基準(zhǔn)、基本等高距、圖式標(biāo)準(zhǔn)、比例尺、測(cè)量人員以及圖幅最小包圍盒,這構(gòu)成了分幅數(shù)字地形圖的基本元數(shù)據(jù)信息。
分幅數(shù)字地形圖元數(shù)據(jù)信息的存儲(chǔ)表現(xiàn)形式主要有兩種,一種是“圖塊+屬性”的方式,即通過創(chuàng)建帶有屬性項(xiàng)的圖廓圖塊,來實(shí)現(xiàn)元數(shù)據(jù)信息的管理,在插入圖廓塊文件時(shí),可以設(shè)置與塊關(guān)聯(lián)的屬性值;另一種方式是以AutoCAD實(shí)體的形式表示,即以多義線、線段、文字的形式表現(xiàn)。兩種方式各有優(yōu)缺點(diǎn),可以根據(jù)自己的需要選擇其中的一種方式來存儲(chǔ)元數(shù)據(jù)信息,本文著重探討采用第二種方式時(shí)元數(shù)據(jù)的提取問題。
實(shí)現(xiàn)地形圖元數(shù)據(jù)的高效提取主要從兩個(gè)方面考慮:一是開發(fā)途徑(工具),二是算法。
2.1 開發(fā)途徑(工具)
AutoCAD提供了強(qiáng)大的二次開發(fā)功能,AutoLISP、VLISP、ADS、ObjectARX、VBA等均可以進(jìn)行二次開發(fā),通過VBA或VB(或VB.NET)結(jié)合AutoCAD類型庫(kù)的方式進(jìn)行二次開發(fā)應(yīng)當(dāng)說是達(dá)到快速、簡(jiǎn)單、高效開發(fā)效果的主要途徑之一。VBA和VB(或VB.NET)的主要區(qū)別在于,VBA與AutoCAD在同一操作空間運(yùn)行,可為AutoCAD提供智能化的快速編程環(huán)境,運(yùn)行速度更快,但其編程功能及界面的美觀程度方面要遜色很多,本文以VB 6.0開發(fā)為例進(jìn)行闡述。
2.2 算法
算法應(yīng)有廣泛的適用性,不能局限于某一種固定的數(shù)據(jù)格式,算法除了可以處理符合國(guó)標(biāo)圖式的數(shù)據(jù)外,還應(yīng)考慮到各地、各單位數(shù)據(jù)格式多樣的情況,筆者采用圖形模板的方式來解決這一問題。
提取分幅地形圖中元數(shù)據(jù)的目的是為了建立元數(shù)據(jù)庫(kù),在建庫(kù)之前應(yīng)已進(jìn)行了充分的系統(tǒng)需求性分析與調(diào)查,并完成數(shù)據(jù)庫(kù)庫(kù)體設(shè)計(jì)。為了下文表述方便,現(xiàn)假定某元數(shù)據(jù)庫(kù)中某數(shù)據(jù)表的字段屬性設(shè)置如表1所示。
數(shù)據(jù)庫(kù)表舉例 表1
3.1 編程環(huán)境設(shè)置
利用VB 6.0新建一個(gè)標(biāo)準(zhǔn)工程,添加相應(yīng)版本AutoCAD類型庫(kù)的引用,定義AutoCAD工程變量,使用CreateObject、GetObject函數(shù)建立連接,具體程序編碼內(nèi)容在相應(yīng)的出版物中有詳細(xì)介紹,此處不再過多贅述。具體關(guān)鍵代碼如下:
3.2 算法的實(shí)現(xiàn)
首先,制作圖形模板,打開任意一幅分幅數(shù)字地形圖,刪除所有圖內(nèi)要素,只留下圖外要素內(nèi)容,以特定的文件名另存為一個(gè)圖形文件。其次,根據(jù)元數(shù)據(jù)庫(kù)字段名稱在AutoCAD圖形文件中添加對(duì)應(yīng)的圖層名稱,并在該圖層中繪制一個(gè)適中的矩形框,確保所有圖幅相應(yīng)的AutoCAD文字信息被完全包含在該矩形框內(nèi)(這一點(diǎn)非常容易做到),編程讀取出矩形框與分幅圖外圖廓重心的相對(duì)位置信息,記錄到一個(gè)文本文件中(同時(shí)保存矩形所在的圖層名即元數(shù)據(jù)字段名稱)。最后,批量自動(dòng)打開需要提取元數(shù)據(jù)的圖形文件,逐一提取元數(shù)據(jù)信息。提取方法是這樣的:打開圖形后,求解出該分幅圖外圖廓的重心坐標(biāo),根據(jù)上一步形成的文本文件中存儲(chǔ)的矩形框位置信息,創(chuàng)建AutoCAD多邊形選擇集,將選擇集中的文字信息按坐標(biāo)位置排序,即可獲取相應(yīng)的元數(shù)據(jù)信息。舉例描述如下:
(1)圖形模板的制作
圖1 原始數(shù)字地形圖(局部)
圖2 分幅地形圖元數(shù)據(jù)圖形模板文件(局部)
實(shí)際制作圖2中的矩形框時(shí),必須做到矩形寬度足夠大,例圖中限于紙張寬度并未畫到足夠大。
(2)元數(shù)據(jù)矩形框位置信息的提取
這一步完全在圖形模板文件中進(jìn)行。首先確定外圖廓的重心坐標(biāo)。有兩種方法可以確定:一是根據(jù)外圖廓的圖層、顏色、線寬等信息構(gòu)建選擇集,調(diào)用實(shí)體的GetBoundingBox方法獲取其最小包圍盒,根據(jù)對(duì)角線坐標(biāo)平均數(shù)求出重心坐標(biāo);二是根據(jù)AutoCAD系統(tǒng)變量求出當(dāng)前圖形的左下角和右上角坐標(biāo),坐標(biāo)平均數(shù)進(jìn)行求整處理后亦可以求出所需的重心坐標(biāo)(使用此方法時(shí),請(qǐng)注意圖形文件中不宜有不屬于本圖幅的要素,否則會(huì)使圖形范圍與圖幅范圍差別過大,從而導(dǎo)致重心坐標(biāo)錯(cuò)誤)。
其次根據(jù)圖層信息創(chuàng)建選擇集,逐一獲取元數(shù)據(jù)矩形框,調(diào)用實(shí)體的GetBoundingBox方法求得其外圍最小包圍盒,將最小包圍盒坐標(biāo)與重心坐標(biāo)的X、Y值的差值寫入文本文件。文件內(nèi)容為:
圖名,-40.0,225.5,40.0,231.8
圖號(hào),-21.4,217.5,21.4,222.5……
(3)分幅地形圖元數(shù)據(jù)的提取
由程序批量打開分幅地形圖,打開后首先按照(2)中的方法,確定當(dāng)前圖幅外圖廓的重心,自動(dòng)打開元數(shù)據(jù)矩形框位置文本文件,創(chuàng)建只選擇文本數(shù)據(jù)的多邊形選擇集,根據(jù)選擇集中各要素在X、Y方向上的空間序列關(guān)系,判斷該文字信息是橫向排列還是豎向排列,從而提取出符合語義的元數(shù)據(jù)信息,寫入相應(yīng)的數(shù)據(jù)庫(kù)中。
(4)算法的優(yōu)點(diǎn)
算法具有足夠的靈活性。程序不依賴于固定的數(shù)據(jù),在不調(diào)整程序代碼的前提下,通過靈活地調(diào)整圖形模板文件,即可順利實(shí)現(xiàn)元數(shù)據(jù)的提取。該算法簡(jiǎn)單,編程實(shí)現(xiàn)非??旖?。
本文主要講述利用圖形模板技術(shù)方案實(shí)現(xiàn)分幅數(shù)字地形圖元數(shù)據(jù)快速、靈活、高效的提取,經(jīng)筆者在VB.net+AutoCAD模式下實(shí)踐驗(yàn)證,本文提出的算法可行,已應(yīng)用于我院數(shù)字地形圖元數(shù)據(jù)庫(kù)建設(shè)之中。
Efficient Method of Metadata Extraction from Framing Digital Topographic Maps Based on AutoCAD
Li Jie,Hao HuiMin,Li Hui
(Shijiazhuang Institute of Surveying,Mapping&Geotechnical Investigation,Shijiazhuang 050019,China)
Metadata is“data about data”.In surveying and mapping activities of the digital topographic maps,the framing digital topographic map is one of the most important result forms,which contains important metadata information in the outside map elements.How to extract metadata information fast,flexibly and efficiently in the AutoCAD environment is the main content of this paper.
AutoCAD;Framing Digital Topographic Map;Metadata;SelectionSet
1672-8262(2011)01-100-02
P209
B
2010—03—12
李杰(1974—),男,工程師,主要從事技術(shù)管理及軟件開發(fā)工作。