肖 鋒,呂寶奇,賀曉陽(yáng),盧小平
(1. 礦山空間信息技術(shù)國(guó)家測(cè)繪地理信息局重點(diǎn)實(shí)驗(yàn)室,河南 焦作 454003;
2. 河南省測(cè)繪工程院,河南 鄭州 450003)
Method of SHAPE and DWG Data Format Conversion and Application
in the National Geographic Conditions Census
XIAO Feng,LV Baoqi,HE Xiaoyang,LU Xiaoping
?
SHAPE與DWG數(shù)據(jù)格式轉(zhuǎn)換方法及在地理國(guó)情普查中的應(yīng)用
肖鋒1,2,呂寶奇1,2,賀曉陽(yáng)1,2,盧小平1
(1. 礦山空間信息技術(shù)國(guó)家測(cè)繪地理信息局重點(diǎn)實(shí)驗(yàn)室,河南 焦作 454003;
2. 河南省測(cè)繪工程院,河南 鄭州 450003)
Method of SHAPE and DWG Data Format Conversion and Application
in the National Geographic Conditions Census
XIAO Feng,LV Baoqi,HE Xiaoyang,LU Xiaoping
摘要:生產(chǎn)實(shí)際中經(jīng)常需要在SHAPE數(shù)據(jù)與DWG數(shù)據(jù)之間進(jìn)行格式轉(zhuǎn)換,尤其是圖形數(shù)據(jù)和屬性數(shù)據(jù)的同步轉(zhuǎn)換,但AutoCAD和ArcGIS均未提供這兩種數(shù)據(jù)格式之間的轉(zhuǎn)換工具,而且目前尚沒(méi)有成熟的軟件或工具能夠進(jìn)行直接轉(zhuǎn)換。本文基于VC++2005平臺(tái)和ObjectARX SDK開(kāi)發(fā)環(huán)境,在AutoCAD 2008平臺(tái)上進(jìn)行了二次開(kāi)發(fā),完成了在AutoCAD平臺(tái)下直接讀取SHAPE數(shù)據(jù)的圖形和屬性,處理并保存為DWG格式,實(shí)現(xiàn)了圖形數(shù)據(jù)和屬性數(shù)據(jù)的無(wú)損轉(zhuǎn)換,并在河南省第一次全國(guó)地理國(guó)情普查工作中進(jìn)行了規(guī)?;瘧?yīng)用,取得了良好的效果。
關(guān)鍵詞:SHAPE;DWG;數(shù)據(jù)轉(zhuǎn)換;地理國(guó)情普查
一、引言
在第一次全國(guó)地理國(guó)情普查工作中,經(jīng)常需要將SHAPE數(shù)據(jù)與DWG數(shù)據(jù)進(jìn)行相互轉(zhuǎn)換,而且圖形數(shù)據(jù)和屬性數(shù)據(jù)都需要轉(zhuǎn)換,但常用的ArcGIS和AutoCAD兩大平臺(tái)都不提供這兩種數(shù)據(jù)的轉(zhuǎn)換工具。目前國(guó)內(nèi)外常用的SHAPE與DWG格式的轉(zhuǎn)換方法有利用ArcGIS中ArcToolbox的數(shù)據(jù)導(dǎo)出功能進(jìn)行轉(zhuǎn)換,以及利用AutoCAD Map的數(shù)據(jù)導(dǎo)入功能進(jìn)行轉(zhuǎn)換。這兩種方法雖然能夠進(jìn)行圖形數(shù)據(jù)的轉(zhuǎn)換,但無(wú)法實(shí)現(xiàn)屬性數(shù)據(jù)的轉(zhuǎn)換,而且會(huì)導(dǎo)致屬性數(shù)據(jù)的丟失。因此,探尋一種能同時(shí)轉(zhuǎn)換圖形和屬性的數(shù)據(jù)轉(zhuǎn)換方法,實(shí)現(xiàn)SHAPE與DWG數(shù)據(jù)的自動(dòng)批量轉(zhuǎn)換,是構(gòu)建地理國(guó)情普查本底庫(kù)亟待解決的關(guān)鍵技術(shù)難點(diǎn)。本文在實(shí)現(xiàn)DWG數(shù)據(jù)到SHAPE數(shù)據(jù)直接轉(zhuǎn)換的基礎(chǔ)上,通過(guò)對(duì)比分析DWG和SHAPE這兩種文件格式,在AutoCAD平臺(tái)上進(jìn)行二次開(kāi)發(fā),將SHAPE數(shù)據(jù)直接讀取到AutoCAD,然后再保存為DWG格式數(shù)據(jù),實(shí)現(xiàn)數(shù)據(jù)格式轉(zhuǎn)換,同時(shí)滿足圖形和屬性要求;通過(guò)在地理國(guó)情普查工作中的規(guī)?;瘧?yīng)用,表明了該方法的有效性。
二、數(shù)據(jù)格式轉(zhuǎn)換技術(shù)方法
1. SHAPE格式
SHAPE作為ArcGIS軟件的專有文件格式,是GIS行業(yè)公認(rèn)的標(biāo)準(zhǔn)格式,它是描述空間數(shù)據(jù)幾何形狀和屬性特征的非拓?fù)鋵?shí)體矢量數(shù)據(jù)結(jié)構(gòu)的一種數(shù)據(jù)格式。一個(gè)Shapefile文件包括坐標(biāo)文件(*.shp)、索引文件(*.shx)和屬性文件(*.dbf) 3個(gè)基本文件。坐標(biāo)文件是直接存取變長(zhǎng)記錄的文件,其中每條記錄描述一個(gè)實(shí)體的幾何形狀,稱為SHAPE。索引文件中,每條記錄包含坐標(biāo)文件相對(duì)于文件頭的偏移量。屬性文件包含各個(gè)實(shí)體的屬性特征數(shù)據(jù)。圖形和屬性間的一一對(duì)應(yīng)關(guān)系通過(guò)不重復(fù)的記錄號(hào)進(jìn)行控制,屬性文件中的屬性記錄和坐標(biāo)文件中的圖形數(shù)據(jù)記錄的順序相同。
2. DWG格式
DWG是AutoCAD保存圖形文件的一種原有格式,是制圖行業(yè)的工業(yè)標(biāo)準(zhǔn)。該格式為二進(jìn)制,數(shù)據(jù)結(jié)構(gòu)復(fù)雜,且作為商業(yè)秘密不對(duì)外公開(kāi),通常情況下只有在AutoCAD平臺(tái)上才可以對(duì)DWG數(shù)據(jù)進(jìn)行讀寫(xiě)操作。雖然DWG數(shù)據(jù)可以通過(guò)DXF格式進(jìn)行數(shù)據(jù)交換,但操作過(guò)程煩瑣。因此,在AutoCAD平臺(tái)下進(jìn)行二次開(kāi)發(fā),是對(duì)DWG數(shù)據(jù)進(jìn)行讀寫(xiě)操作的有效方法。
3. SHAPE與DWG格式轉(zhuǎn)換方法
(1) 轉(zhuǎn)換方法
由于SHAPE和DWG格式均為二進(jìn)制,SHAPE格式為開(kāi)源,而DWG格式是保密的。因此,本文將SHAPE數(shù)據(jù)批量自動(dòng)轉(zhuǎn)換成DWG數(shù)據(jù)的思路為:首先利用程序讀取SHAPE數(shù)據(jù),在AutoCAD平臺(tái)上利用ObjectARX和VC++開(kāi)發(fā)環(huán)境進(jìn)行二次開(kāi)發(fā),并對(duì)DWG數(shù)據(jù)進(jìn)行批處理;然后讀取SHAPE數(shù)據(jù),對(duì)圖形和屬性分別進(jìn)行轉(zhuǎn)換,圖形根據(jù)幾何類型按點(diǎn)、線、面轉(zhuǎn)換并寫(xiě)入AutoCAD內(nèi)存,屬性轉(zhuǎn)換為AutoCAD 4種常用的屬性存儲(chǔ)方式之一;最后保存為DWG格式,自動(dòng)完成數(shù)據(jù)格式的轉(zhuǎn)換。SHAPE與DWG數(shù)據(jù)批量自動(dòng)轉(zhuǎn)換的技術(shù)流程如圖1所示。
圖1 SHAPE數(shù)據(jù)轉(zhuǎn)換成DWG數(shù)據(jù)流程
(2) 圖形數(shù)據(jù)轉(zhuǎn)換
SHAPE文件只能表示單一的幾何類型,如點(diǎn)、線、面等,對(duì)于不同幾何類型需要分別建立相應(yīng)的SHAPE文件。將SHAPE文件轉(zhuǎn)換成DWG文件,必須首先判斷SHAPE文件的幾何類型,按照點(diǎn)、線、面等類型分別進(jìn)行轉(zhuǎn)換。本文基于ObjectARX SDK和VC++2005開(kāi)發(fā)環(huán)境并結(jié)合AutoCAD特性,針對(duì)點(diǎn)、線、面等不同幾何類型,采用不同的數(shù)學(xué)方法和算法分別編程進(jìn)行了轉(zhuǎn)換。各種幾何類型數(shù)據(jù)的轉(zhuǎn)換方法及具體的技術(shù)流程如圖2所示。
圖2 圖形數(shù)據(jù)轉(zhuǎn)換
1) 點(diǎn)類型。該類型數(shù)據(jù)轉(zhuǎn)換較為簡(jiǎn)單,首先提取出定位點(diǎn)坐標(biāo),然后按坐標(biāo)生成AutoCAD的圖形實(shí)體,可以根據(jù)實(shí)際情況轉(zhuǎn)換為點(diǎn)實(shí)體、塊實(shí)體和文字實(shí)體。實(shí)際生產(chǎn)應(yīng)用中,一般是將SHAPE中的點(diǎn)轉(zhuǎn)換為塊或文字,這是因?yàn)辄c(diǎn)在AutoCAD中無(wú)法表示實(shí)體地物,通常是用塊表示地形圖中的獨(dú)立地物。此外,SHAPE文件不能記錄注記,只能用SHAPE點(diǎn)文件將注記存入屬性,此時(shí)需要將點(diǎn)轉(zhuǎn)換為文字。
2) 線類型。線類型的轉(zhuǎn)換主要是提取線上各節(jié)點(diǎn)的坐標(biāo),然后在AutoCAD中生成多段線。多段線的節(jié)點(diǎn)順序必須與原節(jié)點(diǎn)順序一致。
3) 面類型。面類型的數(shù)據(jù)轉(zhuǎn)換比較復(fù)雜,由于AutoCAD沒(méi)有面的概念,因此SHAPE面類型的轉(zhuǎn)換只能用相應(yīng)的實(shí)體代替。根據(jù)AutoCAD平臺(tái)特點(diǎn),實(shí)際作業(yè)時(shí)可選擇生成閉合多段線、填充或面域等方法。最常用的方法是首先生成閉合多段線,然后判斷SHAPE對(duì)象是單面或多面。如果是單面,獲取面的邊界節(jié)點(diǎn)坐標(biāo),生成閉合的多段線;對(duì)于多面情況,則采用循環(huán)方法獲取所有面的邊界點(diǎn)坐標(biāo),然后生成閉合多段線;當(dāng)SHAPE面有環(huán)或島的特殊情況時(shí),需要用遞歸算法提取坐標(biāo)并生成多段線。生成面域或填充的方法與多段線方法類同,只需在多段線的基礎(chǔ)上生成面域或填充即可。
(3) 屬性數(shù)據(jù)轉(zhuǎn)換
圖形轉(zhuǎn)換的同時(shí)需要轉(zhuǎn)換相應(yīng)的屬性,SHAPE數(shù)據(jù)的屬性存放于屬性文件(*.dbf),SHAPE文件同一層的屬性結(jié)構(gòu)相同。DWG數(shù)據(jù)的屬性是基于實(shí)體的,屬性與圖層沒(méi)有任何關(guān)聯(lián)關(guān)系,存放方式有擴(kuò)展數(shù)據(jù)(XData)、擴(kuò)展記錄(XRecord)、對(duì)象數(shù)據(jù)(OData)、對(duì)象特性(OProperty)4種,相應(yīng)的轉(zhuǎn)換方法如下:
1) 擴(kuò)展數(shù)據(jù)(XData)方式。AutoCAD的擴(kuò)展數(shù)據(jù)可以附在任何實(shí)體上,所有的擴(kuò)展數(shù)據(jù)都需要用唯一的應(yīng)用程序名(regappName)進(jìn)行識(shí)別。轉(zhuǎn)換時(shí)首先讀取屬性文件,結(jié)合索引文件(*.shx)找到對(duì)應(yīng)圖形實(shí)體,并采用ObjectARX為對(duì)應(yīng)的實(shí)體寫(xiě)上擴(kuò)展數(shù)據(jù),添加擴(kuò)展數(shù)據(jù)使用setXData函數(shù)。擴(kuò)展數(shù)據(jù)的應(yīng)用程序名與SHAPE屬性字段名對(duì)應(yīng),擴(kuò)展數(shù)據(jù)的類型和內(nèi)容直接讀取SHAPE屬性的數(shù)據(jù)類型和內(nèi)容。
2) 擴(kuò)展記錄(XRecord)方式。與擴(kuò)展數(shù)據(jù)類似,AutoCAD的實(shí)體可以關(guān)聯(lián)擴(kuò)展字典,擴(kuò)展記錄就是擴(kuò)展字典的類型之一。實(shí)體在默認(rèn)情況下不包含擴(kuò)展字典,如果要利用擴(kuò)展字典保存與實(shí)體關(guān)聯(lián)的數(shù)據(jù),可以利用reateExtensionDictionary函數(shù)為實(shí)體建立擴(kuò)展字典,并使用setAt函數(shù)添加擴(kuò)展記錄(AcDbXrecord)。轉(zhuǎn)換屬性首先要讀取屬性文件,結(jié)合索引文件(*.shx)找到對(duì)應(yīng)圖形實(shí)體,然后添加擴(kuò)展記錄屬性。
3) 對(duì)象數(shù)據(jù)(OData)方式。對(duì)象數(shù)據(jù)是AutoCAD Map 3D存儲(chǔ)屬性的方式,與SHAPE屬性類似。在AutoCAD中,利用ObjectARX添加對(duì)象數(shù)據(jù)的方法是首先使用CreateODTable函數(shù)創(chuàng)建對(duì)象數(shù)據(jù)表,然后利用AcMapODTable::AddRecord加添對(duì)象數(shù)據(jù)。
4) 對(duì)象特性(OProperty)方式。對(duì)象特性是AutoCAD對(duì)象實(shí)體的基本特性,該方式只能存放幾種簡(jiǎn)單的屬性,如寬度、角度、高度、厚度等,屬性轉(zhuǎn)換只需利用setAttributes函數(shù)將讀取的SHAPE屬性寫(xiě)入到DWG對(duì)象實(shí)體。
(5) 程序?qū)崿F(xiàn)
本文采用C++語(yǔ)言,在AutoCAD2008平臺(tái)下采用ObjectARX SDK進(jìn)行二次開(kāi)發(fā),完成了數(shù)據(jù)格式批量自動(dòng)轉(zhuǎn)換程序研發(fā)。
三、實(shí)際應(yīng)用效果
該方法在筆者所在單位承擔(dān)的河南省地理國(guó)情普查項(xiàng)目中得到了規(guī)?;瘧?yīng)用,共有30多個(gè)縣的數(shù)據(jù)采用了本方法進(jìn)行轉(zhuǎn)換。實(shí)際應(yīng)用過(guò)程中,對(duì)SHAPE和DWG的圖形和屬性數(shù)據(jù)轉(zhuǎn)換前、后的精度分析與評(píng)價(jià)表明,屬性數(shù)據(jù)達(dá)到了無(wú)損,而圖形數(shù)據(jù)的拓?fù)浣Y(jié)構(gòu)無(wú)誤,且?guī)缀握`差小于0.01 mm(在ArcGIS限差內(nèi)),對(duì)于地理國(guó)情普查工作屬于精度無(wú)損轉(zhuǎn)換,從而驗(yàn)證了該方法的可行性和有效性。同時(shí),與其他轉(zhuǎn)換方法相比,本方法可直接在AutoCAD上運(yùn)行程序,無(wú)須第三方軟件,方便快捷,提高數(shù)據(jù)處理效率50%。表1為南陽(yáng)市轄各縣(市、區(qū))地理國(guó)情普查項(xiàng)目的實(shí)際應(yīng)用情況。
表1 南陽(yáng)市轄各縣(市、區(qū))地理國(guó)情普查應(yīng)用情況
四、結(jié)束語(yǔ)
本文基于VC++2005平臺(tái)和ObjectARX SDK開(kāi)發(fā)環(huán)境,在AutoCAD 2008平臺(tái)上進(jìn)行了二次開(kāi)發(fā),實(shí)現(xiàn)了SHAPE和DWG兩種文件格式同步轉(zhuǎn)換圖形數(shù)據(jù)和屬性數(shù)據(jù)。實(shí)際應(yīng)用結(jié)果表明,本方法轉(zhuǎn)換效率高,操作便捷,完全滿足地理國(guó)情普查工作的精度要求,并顯著提高了生產(chǎn)效率。
參考文獻(xiàn):
[1]王艷東,龔健雅,黃俊韜,等. 基于中國(guó)地球空間數(shù)據(jù)交換格式的數(shù)據(jù)轉(zhuǎn)換方法[J].測(cè)繪學(xué)報(bào),2000, 29(2):142-148.
[2]陳能,施蓓琦.AutoCAD地形圖數(shù)據(jù)轉(zhuǎn)換為GIS空間數(shù)據(jù)的技術(shù)研究與應(yīng)用[J].測(cè)繪通報(bào),2005(8):11-14.
[3]胡勝華,何宗宜,陶利佳.AutoCAD與GIS數(shù)據(jù)轉(zhuǎn)換的研究[J].測(cè)繪通報(bào),2007(12):44-47.
[4]肖鋒,呂寶奇,林蒙恩.DWG到SHP格式轉(zhuǎn)換技術(shù)的研究與實(shí)現(xiàn)[J].測(cè)繪與空間地理信息,2013(9):87-89.
[5]張葉,孫毅中,陳年松.CAD城市基礎(chǔ)數(shù)據(jù)到GIS轉(zhuǎn)換的有關(guān)問(wèn)題探討[J].測(cè)繪與空間地理信息,2007(1):94-97.
[6]謝江平,鄒自力.CAD矢量數(shù)據(jù)向ArcGIS轉(zhuǎn)換的方法[J].地理空間信息,2010(4):130-132.
[7]王波,張亮,孫霞.CAD向GIS數(shù)據(jù)的轉(zhuǎn)換入庫(kù)[J].地理空間信息,2011(3):24-26.
[8]鄭翠玲.空間數(shù)據(jù)的格式轉(zhuǎn)換研究與實(shí)現(xiàn)[J].現(xiàn)代計(jì)算機(jī):專業(yè)版,2010(9):171-173.
[9]侯麗娜,李城.Dgn到Dwg空間數(shù)據(jù)轉(zhuǎn)換方法[J].陜西煤炭,2011(1):96-97.
[10]王海銀,李國(guó)華,莊曉東,等.地理國(guó)情普查數(shù)據(jù)協(xié)同生產(chǎn)系統(tǒng)開(kāi)發(fā)與應(yīng)用[J].測(cè)繪通報(bào),2015(7):103-105,127.
[11]宋曉紅,張立朝,祿豐年,等.地理國(guó)情普查中多源異構(gòu)數(shù)據(jù)整合研究[J].測(cè)繪通報(bào),2014(9):104-107.
[12]劉鋒,張繼賢,李海濤.SHP文件格式的研究與應(yīng)用[J].測(cè)繪科學(xué),2006(6):116-117.
通信作者:呂寶奇
作者簡(jiǎn)介:肖鋒(1972—),男,高級(jí)工程師,主要從事數(shù)字城市、GIS技術(shù)應(yīng)用等方面的研究。E-mail:8867110@qq.com
基金項(xiàng)目:河南省高校創(chuàng)新團(tuán)隊(duì)支持計(jì)劃(14IRTSTHN026);河南省創(chuàng)新型科技創(chuàng)新團(tuán)隊(duì)支持計(jì)劃
收稿日期:2015-07-15; 修回日期: 2015-10-10
中圖分類號(hào):P282
文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):0494-0911(2015)12-0063-03