田小溫 李海剛
摘 要 分析MapGIS格式土地利用圖中各類地物的屬性數(shù)據(jù)存儲(chǔ)方式,介紹利用第三方工具完成提取和保存的思路和方法,從而實(shí)現(xiàn)MapGIS向AutoCAD的全息轉(zhuǎn)換。
關(guān)鍵詞 土地;數(shù)據(jù)處理;MapGIS;AutoCAD;全息轉(zhuǎn)換
中圖分類號(hào):TP393.09;P208 文獻(xiàn)標(biāo)志碼:B 文章編號(hào):1673-890X(2016)15--02
全國(guó)第二次土地調(diào)查成果多是以MapGIS為平臺(tái),一般是以一個(gè)縣(區(qū))為單位存儲(chǔ),也可分割成標(biāo)準(zhǔn)分幅格式分別存放。一個(gè)MapGIS庫(kù)的組成包括點(diǎn)文件、線文件和區(qū)文件,對(duì)于二調(diào)成果,具體分別為零星地物、線狀地物和地類圖斑。
從幾何角度來(lái)講,地類圖斑是具有幾何形狀的面狀,而零星地物只有位置沒有大小,不占用圖面面積,線狀地物的寬度為零,有長(zhǎng)度卻沒有寬度,在數(shù)字圖的概念也不占用面積。但零星地物和線狀地物占用實(shí)地面積,在MapGIS中,它們的面積值存放在相應(yīng)的屬性字段里,同時(shí)說(shuō)明面其面積值是從哪幾個(gè)地類圖斑中扣除及相應(yīng)的比例。因此,各圖斑的同何面積值不完全是相應(yīng)的地類面積,還須扣除其包含的零星地物和線狀地物。
在土地整治及其他日常地籍相關(guān)工作中,往往是取幾個(gè)圖斑部分或全部成為一宗地,并將其包含的各地類的面積進(jìn)行統(tǒng)計(jì)。盡管MapGIS提供一定功能,但其數(shù)據(jù)采集和繪圖等方面較顯不足,尤其是眾多作業(yè)人員更習(xí)慣于使用AutoCAD等繪圖軟件。因此,將MapGIS格式轉(zhuǎn)換到CAD下,且保留各類地物的相關(guān)數(shù)據(jù)及相互對(duì)應(yīng)關(guān)系顯得較為重要。本文旨在詳細(xì)分析上述過程的實(shí)現(xiàn)方法。
1 屬性數(shù)據(jù)導(dǎo)出
MapGIS做為一個(gè)基礎(chǔ)地理信息平臺(tái),能夠提供GIS所應(yīng)具備的各項(xiàng)功能,但對(duì)于各專業(yè)的使用者,往往缺少直接有效的操作。Section是增強(qiáng)輔助制圖系統(tǒng)是以MapGIS 6.7 SDK為平臺(tái),有VC++為語(yǔ)言開發(fā)的二次開發(fā)軟件,其主要功能是針對(duì)地質(zhì)類圖件的制作和數(shù)據(jù)分析、統(tǒng)計(jì),在土地類工作中,可以借助其完成大部分操作。本文所提出問題便借助其導(dǎo)入導(dǎo)出功能解決。
首先,將宗地邊界在CAD中整理好,去掉多余重復(fù)點(diǎn),以DXF格式保存,然后用MapGIS的“轉(zhuǎn)換”模塊生成線文件,再經(jīng)“線轉(zhuǎn)弧段”和“拓樸重建”生成區(qū)文件。最后以“工程裁剪”將宗地涉及區(qū)域生成單獨(dú)的MapGIS工程,在Section中打開。
其次,將需要導(dǎo)出屬性值的各類文件選中成為編輯狀態(tài)(一般為DLTB.WP、XZDW.WL、LXDW.WT,分別代表地類圖斑、線狀地物和零星地物),用Section的“1輔助工具\導(dǎo)入導(dǎo)出功能\導(dǎo)出屬性數(shù)據(jù)(Excel)”,將會(huì)自動(dòng)生成Excel文件,其包括3個(gè)表:分別為點(diǎn)、線、面的屬數(shù)據(jù)。其中“點(diǎn)”表包括標(biāo)識(shí)碼、零星地物編號(hào)、地類編碼、地類名稱、零星地物面積、權(quán)屬單位名稱、坐落圖斑編號(hào)、坐落單位代碼、坐落單位名稱等字段;“線”表中包含長(zhǎng)度、標(biāo)識(shí)碼、地類編碼、地類名稱、線狀地物編號(hào)、寬度、線狀地物面積、權(quán)屬單位名稱1、權(quán)屬單位名稱2、扣除圖斑編號(hào)1、扣除圖斑坐落代碼1、扣除圖斑編號(hào)2、扣除圖斑坐落代碼2、扣除比例等字段,“面”表包括面積、周長(zhǎng)、標(biāo)識(shí)碼、圖斑編號(hào)、地類編碼、地類名稱、權(quán)屬性質(zhì)、權(quán)屬單位代碼、權(quán)屬單位名稱、坐落單位代碼、坐落單位名稱、扣除類型、扣除地類編碼和扣除地類系數(shù)等字段。
2 圖的導(dǎo)入及圖數(shù)關(guān)系的建立
將點(diǎn)、線、面分別轉(zhuǎn)換成DXF文件,然后加入到同一CAD文件中,并根據(jù)所使用的軟件分層存放、轉(zhuǎn)換成相應(yīng)的線型、塊或填充。然而,現(xiàn)有的兩種文件即圖和數(shù)并沒有關(guān)聯(lián),只能通過人工查找才能一一對(duì)應(yīng)。從各屬性字段可以看到,每個(gè)地物都包含一個(gè)字段“標(biāo)識(shí)碼”,該碼值在一個(gè)MapGIS庫(kù)里是唯一的,因此可通過該碼值將CAD中的每個(gè)實(shí)體與Excel表中的屬性記錄相關(guān)聯(lián),操作過程簡(jiǎn)述如下。
首先,將新生成的單獨(dú)的工程文件進(jìn)行標(biāo)識(shí)碼整理。在屬性庫(kù)管理中,分別打開各類文件,在“屬性/統(tǒng)改屬性”中,將各對(duì)象的標(biāo)識(shí)碼按增量方式進(jìn)行重編,重編時(shí)可以按自己的習(xí)慣給定數(shù)值,比如:點(diǎn)對(duì)象從10000開始,線對(duì)象從20000開始。
其次,對(duì)于點(diǎn)文件和線文件,在轉(zhuǎn)成DXF格式時(shí),以其標(biāo)識(shí)碼作為各對(duì)象的高程值。
最后,面文件的轉(zhuǎn)換可以有兩種方式:一是將面按全GIS方式轉(zhuǎn)出,形成實(shí)際閉合的多義線,仍然通過其高程值與Excel中相應(yīng)的記錄建立對(duì)應(yīng);二是用標(biāo)識(shí)碼和面積值對(duì)每個(gè)面對(duì)象生成雙字段的注記,將該注記文件轉(zhuǎn)換成DXF格式,然后通過標(biāo)識(shí)碼和面積值雙重的對(duì)應(yīng)與Excel記錄建立關(guān)聯(lián)。
3 信息導(dǎo)入
我們建立了CAD對(duì)象與Excel中相應(yīng)記錄的關(guān)聯(lián),也就是說(shuō),針對(duì)每一個(gè)CAD中的實(shí)體,都可以根據(jù)其高程值所代表的標(biāo)識(shí)碼,在Excel表中找到其相應(yīng)的GIS信息記錄。當(dāng)然,這個(gè)查找對(duì)應(yīng)的過程若是人工完成,不僅操作繁雜、工作量巨大,尤其是無(wú)法保證完整和準(zhǔn)確性,這里簡(jiǎn)單介紹以編程的方法完成該項(xiàng)操作。
COM(Component Object Model,組件對(duì)象模型)技術(shù)是由微軟件推出的一套接口規(guī)范,主要用來(lái)在不同語(yǔ)言和不同程序進(jìn)程之間進(jìn)行通信,簡(jiǎn)單來(lái)說(shuō),就是在自己的程序中,可以向其他程序發(fā)送指令來(lái)代替人工操作,并可以讀取其中需要的數(shù)據(jù)。
基于AutoCAD的編程可選語(yǔ)言比較豐富,如Visul LISP、VC++、VB等,為簡(jiǎn)于敘述,我們選用CAD自帶的VBA為開發(fā)工具。VBA是Windows下多種軟件的開發(fā)工具,特點(diǎn)是簡(jiǎn)單且直接,在CAD中,其除了與一般語(yǔ)言等同的各種函數(shù),直接面向CAD本身,可以無(wú)障礙地生成訪問CAD對(duì)象和內(nèi)部變量等;同時(shí),可以將其他應(yīng)用作為Component進(jìn)行操作。這里將Excel作為一個(gè)部件,通過它的對(duì)象模型,就可以逐級(jí)訪問任何一個(gè)Excel文檔的所有數(shù)據(jù),形如objExcel.Sheets(K).Cells(I,J)。
綜上,通過遍歷每個(gè)CAD對(duì)象,通過其高程或字符串作為對(duì)應(yīng)值,從Excel里直接讀取各字段的屬性值,從而建立起圖與數(shù)的無(wú)縫連接。
4 CAD中信息保存
最后,我們討論如何把Excel中的記錄保存到CAD中,這里需要介紹另一個(gè)概念外部數(shù)據(jù)--XDATA。CAD為了記錄每個(gè)對(duì)象的其他信息,提供了XDATA來(lái)解決,即一個(gè)CAD實(shí)體可以附加外部數(shù)據(jù)。AutoCAD不提供擴(kuò)展數(shù)據(jù)讀寫的相關(guān)命令,但通過二次開發(fā),應(yīng)用VBA等編程,對(duì)某實(shí)體的擴(kuò)展數(shù)據(jù)進(jìn)行讀寫,如寫函數(shù)形式為:
entCAD.SetXData(XDataType, XDataValue)
句中entCAD為被寫入外部數(shù)據(jù)的實(shí)體句柄,XDataType是短整型數(shù)組,存放欲寫入的數(shù)據(jù)句的格式 ,如“1001”為外部程序名稱,“1000”為字符串。XDataValue為實(shí)際寫入值,可以將各字段的數(shù)據(jù)依次寫入。
5 結(jié)語(yǔ)
通過上述過程實(shí)現(xiàn)了從MapGIS向AutoCAD轉(zhuǎn)換中,土地利用數(shù)據(jù)庫(kù)的無(wú)損導(dǎo)入,限于篇幅,這里只給出了從MapGIS向AutoCAD進(jìn)行全息轉(zhuǎn)化的總體思路入技術(shù)要點(diǎn),有關(guān)詳細(xì)操作和編程可參閱相關(guān)書籍,在日常工作中,根據(jù)具體需要完成以上過程,可以大大提高工作效率。
(責(zé)任編輯:趙中正)