劉學(xué)超
(淮北職業(yè)技術(shù)學(xué)院,安徽 淮北 235000)
數(shù)據(jù)轉(zhuǎn)換是GIS中常有的普遍性問(wèn)題??臻g數(shù)據(jù)庫(kù)中的數(shù)據(jù)有多種類型和多種來(lái)源,具有特殊的應(yīng)用和操作要求。在GIS中經(jīng)常碰到的數(shù)據(jù)轉(zhuǎn)換包括不同的數(shù)據(jù)格式轉(zhuǎn)換、空間表達(dá)形式轉(zhuǎn)換、坐標(biāo)轉(zhuǎn)換和投影轉(zhuǎn)換[1]。
數(shù)據(jù)格式轉(zhuǎn)換是把現(xiàn)存的其他系統(tǒng)/軟件的數(shù)據(jù)轉(zhuǎn)換為用戶系統(tǒng)軟件數(shù)據(jù)格式,通過(guò)數(shù)據(jù)轉(zhuǎn)換,我們既可以降低對(duì)于數(shù)據(jù)的直接采集輸入,同時(shí)也能保證數(shù)據(jù)的質(zhì)量、準(zhǔn)確性、精度等方面。
數(shù)據(jù)采集導(dǎo)入作為空間數(shù)據(jù)建庫(kù)的基本組成部分,其最關(guān)鍵的工作就是處理DLG數(shù)據(jù)。DLG數(shù)據(jù)是指與現(xiàn)有線劃基本一致的地形要素的圖形、屬性等信息,也稱地形數(shù)據(jù)。目前數(shù)據(jù)采集大都使用的是Autodesk公司的AutoCAD或Bentley公司的MicroStation平臺(tái),數(shù)據(jù)的文件形式分別是DWG和DGN[2]。目前,安徽省現(xiàn)有的地形數(shù)據(jù)都是在AutoCAD的產(chǎn)品。
這里主要討論在AutoCAD下導(dǎo)入DWG格式數(shù)據(jù)的方法。首先要進(jìn)行CAD·GIS的格式轉(zhuǎn)換。這包括如下兩種方法:
是指CAD與GIS進(jìn)行直接轉(zhuǎn)換或讀寫,中間不借助任何程序接口。這種方法雖然可以方便的實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換,但是由于CAD與GIS系統(tǒng)對(duì)空間對(duì)象描述時(shí)會(huì)有模型、語(yǔ)義等差別,這就導(dǎo)致了在進(jìn)行轉(zhuǎn)換時(shí)數(shù)據(jù)信息丟失等方面的問(wèn)題。比如當(dāng)數(shù)據(jù)從CAD的交換格式dxf轉(zhuǎn)換成ESRI的shape文件或者Coverage時(shí),原來(lái)定義的圖形屬性等就會(huì)丟失。這種方法不能轉(zhuǎn)換GIS中的屬性數(shù)據(jù),因而數(shù)據(jù)的無(wú)縫轉(zhuǎn)換也很難實(shí)現(xiàn)。在AutoCAD端直接使用ArcSDE數(shù)據(jù)訪問(wèn)API操作數(shù)據(jù)庫(kù)雖可顧及GIS的屬性數(shù)據(jù),但是這樣不僅操作復(fù)雜而且數(shù)據(jù)庫(kù)也會(huì)存在一定風(fēng)險(xiǎn),不如直接更新GIS數(shù)據(jù)庫(kù)。
即設(shè)置專門的程序?qū)utoCAD與ArcGIS進(jìn)行讀寫來(lái)達(dá)到數(shù)據(jù)無(wú)縫轉(zhuǎn)換的目的。安徽省1:10000基礎(chǔ)地理信息數(shù)據(jù)庫(kù)的建庫(kù)過(guò)程就是采用編寫讀寫程序?qū)崿F(xiàn)數(shù)據(jù)的無(wú)縫轉(zhuǎn)換。
使用上述的方式將DWG格式轉(zhuǎn)換為Coverage格式后,再使用空間數(shù)據(jù)引擎將數(shù)據(jù)輕松地寫入數(shù)據(jù)庫(kù)。
本轉(zhuǎn)換程序主要由兩部分組成,一部分在AutoCAD下開發(fā)的圖層整理模塊,第二部分在Arc/Info下開發(fā)的數(shù)據(jù)格式轉(zhuǎn)換模塊。
CAD到Arc/Info的數(shù)據(jù)轉(zhuǎn)換首先要將AutoCAD中的點(diǎn)、線、文字、屬性等圖形元素進(jìn)行分類,分類原則依據(jù)Arc/Info文件。因?yàn)锳rc/Info的一個(gè)數(shù)據(jù)文件中一般只有一類元素,例如點(diǎn)狀元素包括獨(dú)立的地物點(diǎn)和控制點(diǎn),線狀元素包括單線水系、路網(wǎng),面狀元素包括建筑物、水塘、雙線河流等。而且Arc/Info的數(shù)據(jù)文件一般是一個(gè)文件中放置的是同類、同性質(zhì)的元素,例如道路元素、單線水系、電力線元素都同屬于線狀元素,但只有道路元素存放在路網(wǎng)的數(shù)據(jù)文件中。因此我們要將AutoCAD中的圖形元素依據(jù)上述特點(diǎn)進(jìn)行細(xì)劃分類,然后保存在不同層,也就是將Auto-CAD的一個(gè)層與Arc/Info的一個(gè)數(shù)據(jù)文件實(shí)現(xiàn)對(duì)應(yīng)。經(jīng)過(guò)分類、分層后,圖形元素由兩種信息組成。一是元素的坐標(biāo)值,也就是它的幾何信息。這一信息非常重要,我們首先要把這部分信息轉(zhuǎn)換成Arc/Info能夠直接識(shí)別讀取的格式。一是特征信息,例如點(diǎn)、線、面的形狀或顏色等。這一信息一般是作為Arc/Info文件中相應(yīng)元素的屬性數(shù)據(jù),因此這部分?jǐn)?shù)據(jù)需要轉(zhuǎn)換AutoCAD格式的數(shù)據(jù),以便將它們連接到Arc/Info的PAT或AAT文件中。主要步驟如圖1所示:
圖1 轉(zhuǎn)換框架圖
AutoCAD與Arc/Info之間的圖形要素并不是一一對(duì)應(yīng)。AutoCAD中有點(diǎn)、文字、注記以及各類專用符號(hào)等,而Arc/Info中只有一些簡(jiǎn)單要素層,所以在進(jìn)行對(duì)應(yīng)轉(zhuǎn)換時(shí),我們需要做一些技術(shù)處理。AutoCAD數(shù)據(jù)轉(zhuǎn)換到Arc/Info數(shù)據(jù)需要將數(shù)據(jù)先轉(zhuǎn)化成簡(jiǎn)單要素層,然后存為AutoCAD的交換格式DXF。下面詳細(xì)闡述在轉(zhuǎn)換過(guò)程中對(duì)所存在問(wèn)題的處理。
在Arc/Info的Coverage數(shù)據(jù)沒(méi)有塊的概念,現(xiàn)以非面狀房屋處理為例,說(shuō)明一下遇見(jiàn)塊如何處理。首先判斷符號(hào)的長(zhǎng)度是否大于7.0,如果大于7.0,把其處理成線狀房屋,代碼320212;若小于7.0以塊存在,由于Arc/Info只有點(diǎn)、線、面、漢字、TIC等這幾種簡(jiǎn)單要素,因此就需要在AutoCAD系統(tǒng)下將塊處理成點(diǎn),在AutoCAD系統(tǒng)下塊狀符號(hào)的方向依據(jù)ANGLE項(xiàng)來(lái)控制,但由塊轉(zhuǎn)成點(diǎn)以后,ANGLE就自動(dòng)取消。筆者的解決方法是暫把塊的ANGLE項(xiàng)內(nèi)的值存在Z值項(xiàng)內(nèi),這種方法解決了塊狀符號(hào)的角度問(wèn)題,同時(shí)解決了ArcGIS下無(wú)塊的概念。對(duì)其他塊狀符號(hào)都依據(jù)類似辦法解決。
在AutoCAD對(duì)于面狀房屋層和面狀水系層等封閉地物使用暈線填充,達(dá)到打印出圖便于讀圖和圖面美觀的效果,但數(shù)據(jù)轉(zhuǎn)換到Arc/Info下這些暈線是無(wú)用的,因此在AutoCAD環(huán)境下,需要把填充的暈線刪除:
在AutoCAD的環(huán)境下大的方面依據(jù)代碼表對(duì)數(shù)據(jù)進(jìn)行了重新分類分層,對(duì)錯(cuò)誤的代碼進(jìn)行修正。在細(xì)節(jié)方面很好解決兩個(gè)系統(tǒng)下的圖形要素不一致的問(wèn)題,這樣為把數(shù)據(jù)轉(zhuǎn)換成Arc/Info格式做好了充分的準(zhǔn)備。
以B層為例,解釋一下轉(zhuǎn)換的原理:首先不考慮線的屬性,使用ArcGIS中的命令直接操作,即DXFARC直接進(jìn)行轉(zhuǎn)換[3]。如下:
完成轉(zhuǎn)換之后,進(jìn)行屬性信息的傳遞,依據(jù)《1:10000基礎(chǔ)地理信息數(shù)據(jù)生產(chǎn)與建庫(kù)總體技術(shù)綱要》的規(guī)定之一《1:10000基礎(chǔ)地理信息數(shù)據(jù)分類與代碼》,先建立B層相關(guān)的屬性表[4],如下:
按需求把相應(yīng)的屬性項(xiàng)一一對(duì)應(yīng):
通過(guò)以上程序設(shè)計(jì),從各個(gè)圖形元素的擴(kuò)展數(shù)據(jù)中讀取出屬性數(shù)據(jù),然后寫到Coverage格式相應(yīng)屬性數(shù)據(jù)位置,把空間信息數(shù)據(jù)和屬性信息數(shù)據(jù)放在一起同時(shí)輸出[5],這樣可以很好的保證數(shù)據(jù)的一致性,實(shí)現(xiàn)對(duì)定制好的Auto-CAD數(shù)據(jù)到Arc/Info的coverage數(shù)據(jù)轉(zhuǎn)換。
本文提出了利用AUTO LISP語(yǔ)言和AML語(yǔ)言,分別在AutoCAD和ARC/INFO下進(jìn)行對(duì)接式二次開發(fā),以實(shí)現(xiàn)地物及其屬性的自動(dòng)傳遞。該方法首先在AutoCAD下對(duì)數(shù)據(jù)整理,依據(jù)代碼對(duì)照表對(duì)數(shù)據(jù)重新歸層,然后在ARCGIS8.2下進(jìn)行數(shù)據(jù)格式批量轉(zhuǎn)換。該方法目前已開始應(yīng)用于生產(chǎn),并取得良好的效果。
[1]顧杰等.地籍?dāng)?shù)據(jù)建庫(kù)方案的探討[J].測(cè)繪與空間地理信息,2009,3(1):58 -61.
[2]周勇前.AutoCAD與ARC/INFO的數(shù)據(jù)轉(zhuǎn)換[J].測(cè)繪通報(bào),1995,(3).
[3]孫鴻睿.城市地理信息系統(tǒng)空間數(shù)據(jù)處理方法的研究[D].中南大學(xué),2006.
[4]劉偉等.基于GML從DXF文件到Shape文件格式轉(zhuǎn)換的研究與開發(fā)[J].測(cè)繪科學(xué),2004,(7).
[5]張新長(zhǎng),馬林兵,張青年.地理信息系統(tǒng)數(shù)據(jù)庫(kù)[M].北京:科學(xué)出版社,2005.