肖 鋒,呂寶奇,賀曉陽,盧小平
(1. 礦山空間信息技術國家測繪地理信息局重點實驗室,河南 焦作 454003;
2. 河南省測繪工程院,河南 鄭州 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數據格式轉換方法及在地理國情普查中的應用
肖鋒1,2,呂寶奇1,2,賀曉陽1,2,盧小平1
(1. 礦山空間信息技術國家測繪地理信息局重點實驗室,河南 焦作 454003;
2. 河南省測繪工程院,河南 鄭州 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數據之間進行格式轉換,尤其是圖形數據和屬性數據的同步轉換,但AutoCAD和ArcGIS均未提供這兩種數據格式之間的轉換工具,而且目前尚沒有成熟的軟件或工具能夠進行直接轉換。本文基于VC++2005平臺和ObjectARX SDK開發環境,在AutoCAD 2008平臺上進行了二次開發,完成了在AutoCAD平臺下直接讀取SHAPE數據的圖形和屬性,處理并保存為DWG格式,實現了圖形數據和屬性數據的無損轉換,并在河南省第一次全國地理國情普查工作中進行了規模化應用,取得了良好的效果。
關鍵詞:SHAPE;DWG;數據轉換;地理國情普查
一、引言
在第一次全國地理國情普查工作中,經常需要將SHAPE數據與DWG數據進行相互轉換,而且圖形數據和屬性數據都需要轉換,但常用的ArcGIS和AutoCAD兩大平臺都不提供這兩種數據的轉換工具。目前國內外常用的SHAPE與DWG格式的轉換方法有利用ArcGIS中ArcToolbox的數據導出功能進行轉換,以及利用AutoCAD Map的數據導入功能進行轉換。這兩種方法雖然能夠進行圖形數據的轉換,但無法實現屬性數據的轉換,而且會導致屬性數據的丟失。因此,探尋一種能同時轉換圖形和屬性的數據轉換方法,實現SHAPE與DWG數據的自動批量轉換,是構建地理國情普查本底庫亟待解決的關鍵技術難點。本文在實現DWG數據到SHAPE數據直接轉換的基礎上,通過對比分析DWG和SHAPE這兩種文件格式,在AutoCAD平臺上進行二次開發,將SHAPE數據直接讀取到AutoCAD,然后再保存為DWG格式數據,實現數據格式轉換,同時滿足圖形和屬性要求;通過在地理國情普查工作中的規模化應用,表明了該方法的有效性。
二、數據格式轉換技術方法
1. SHAPE格式
SHAPE作為ArcGIS軟件的專有文件格式,是GIS行業公認的標準格式,它是描述空間數據幾何形狀和屬性特征的非拓撲實體矢量數據結構的一種數據格式。一個Shapefile文件包括坐標文件(*.shp)、索引文件(*.shx)和屬性文件(*.dbf) 3個基本文件。坐標文件是直接存取變長記錄的文件,其中每條記錄描述一個實體的幾何形狀,稱為SHAPE。索引文件中,每條記錄包含坐標文件相對于文件頭的偏移量。屬性文件包含各個實體的屬性特征數據。圖形和屬性間的一一對應關系通過不重復的記錄號進行控制,屬性文件中的屬性記錄和坐標文件中的圖形數據記錄的順序相同。
2. DWG格式
DWG是AutoCAD保存圖形文件的一種原有格式,是制圖行業的工業標準。該格式為二進制,數據結構復雜,且作為商業秘密不對外公開,通常情況下只有在AutoCAD平臺上才可以對DWG數據進行讀寫操作。雖然DWG數據可以通過DXF格式進行數據交換,但操作過程煩瑣。因此,在AutoCAD平臺下進行二次開發,是對DWG數據進行讀寫操作的有效方法。
3. SHAPE與DWG格式轉換方法
(1) 轉換方法
由于SHAPE和DWG格式均為二進制,SHAPE格式為開源,而DWG格式是保密的。因此,本文將SHAPE數據批量自動轉換成DWG數據的思路為:首先利用程序讀取SHAPE數據,在AutoCAD平臺上利用ObjectARX和VC++開發環境進行二次開發,并對DWG數據進行批處理;然后讀取SHAPE數據,對圖形和屬性分別進行轉換,圖形根據幾何類型按點、線、面轉換并寫入AutoCAD內存,屬性轉換為AutoCAD 4種常用的屬性存儲方式之一;最后保存為DWG格式,自動完成數據格式的轉換。SHAPE與DWG數據批量自動轉換的技術流程如圖1所示。

圖1 SHAPE數據轉換成DWG數據流程
(2) 圖形數據轉換
SHAPE文件只能表示單一的幾何類型,如點、線、面等,對于不同幾何類型需要分別建立相應的SHAPE文件。將SHAPE文件轉換成DWG文件,必須首先判斷SHAPE文件的幾何類型,按照點、線、面等類型分別進行轉換。本文基于ObjectARX SDK和VC++2005開發環境并結合AutoCAD特性,針對點、線、面等不同幾何類型,采用不同的數學方法和算法分別編程進行了轉換。各種幾何類型數據的轉換方法及具體的技術流程如圖2所示。

圖2 圖形數據轉換
1) 點類型。該類型數據轉換較為簡單,首先提取出定位點坐標,然后按坐標生成AutoCAD的圖形實體,可以根據實際情況轉換為點實體、塊實體和文字實體。實際生產應用中,一般是將SHAPE中的點轉換為塊或文字,這是因為點在AutoCAD中無法表示實體地物,通常是用塊表示地形圖中的獨立地物。此外,SHAPE文件不能記錄注記,只能用SHAPE點文件將注記存入屬性,此時需要將點轉換為文字。
2) 線類型。線類型的轉換主要是提取線上各節點的坐標,然后在AutoCAD中生成多段線。多段線的節點順序必須與原節點順序一致。
3) 面類型。面類型的數據轉換比較復雜,由于AutoCAD沒有面的概念,因此SHAPE面類型的轉換只能用相應的實體代替。根據AutoCAD平臺特點,實際作業時可選擇生成閉合多段線、填充或面域等方法。最常用的方法是首先生成閉合多段線,然后判斷SHAPE對象是單面或多面。如果是單面,獲取面的邊界節點坐標,生成閉合的多段線;對于多面情況,則采用循環方法獲取所有面的邊界點坐標,然后生成閉合多段線;當SHAPE面有環或島的特殊情況時,需要用遞歸算法提取坐標并生成多段線。生成面域或填充的方法與多段線方法類同,只需在多段線的基礎上生成面域或填充即可。
(3) 屬性數據轉換
圖形轉換的同時需要轉換相應的屬性,SHAPE數據的屬性存放于屬性文件(*.dbf),SHAPE文件同一層的屬性結構相同。DWG數據的屬性是基于實體的,屬性與圖層沒有任何關聯關系,存放方式有擴展數據(XData)、擴展記錄(XRecord)、對象數據(OData)、對象特性(OProperty)4種,相應的轉換方法如下:
1) 擴展數據(XData)方式。AutoCAD的擴展數據可以附在任何實體上,所有的擴展數據都需要用唯一的應用程序名(regappName)進行識別。轉換時首先讀取屬性文件,結合索引文件(*.shx)找到對應圖形實體,并采用ObjectARX為對應的實體寫上擴展數據,添加擴展數據使用setXData函數。擴展數據的應用程序名與SHAPE屬性字段名對應,擴展數據的類型和內容直接讀取SHAPE屬性的數據類型和內容。
2) 擴展記錄(XRecord)方式。與擴展數據類似,AutoCAD的實體可以關聯擴展字典,擴展記錄就是擴展字典的類型之一。實體在默認情況下不包含擴展字典,如果要利用擴展字典保存與實體關聯的數據,可以利用reateExtensionDictionary函數為實體建立擴展字典,并使用setAt函數添加擴展記錄(AcDbXrecord)。轉換屬性首先要讀取屬性文件,結合索引文件(*.shx)找到對應圖形實體,然后添加擴展記錄屬性。
3) 對象數據(OData)方式。對象數據是AutoCAD Map 3D存儲屬性的方式,與SHAPE屬性類似。在AutoCAD中,利用ObjectARX添加對象數據的方法是首先使用CreateODTable函數創建對象數據表,然后利用AcMapODTable::AddRecord加添對象數據。
4) 對象特性(OProperty)方式。對象特性是AutoCAD對象實體的基本特性,該方式只能存放幾種簡單的屬性,如寬度、角度、高度、厚度等,屬性轉換只需利用setAttributes函數將讀取的SHAPE屬性寫入到DWG對象實體。
(5) 程序實現
本文采用C++語言,在AutoCAD2008平臺下采用ObjectARX SDK進行二次開發,完成了數據格式批量自動轉換程序研發。
三、實際應用效果
該方法在筆者所在單位承擔的河南省地理國情普查項目中得到了規模化應用,共有30多個縣的數據采用了本方法進行轉換。實際應用過程中,對SHAPE和DWG的圖形和屬性數據轉換前、后的精度分析與評價表明,屬性數據達到了無損,而圖形數據的拓撲結構無誤,且幾何誤差小于0.01 mm(在ArcGIS限差內),對于地理國情普查工作屬于精度無損轉換,從而驗證了該方法的可行性和有效性。同時,與其他轉換方法相比,本方法可直接在AutoCAD上運行程序,無須第三方軟件,方便快捷,提高數據處理效率50%。表1為南陽市轄各縣(市、區)地理國情普查項目的實際應用情況。

表1 南陽市轄各縣(市、區)地理國情普查應用情況
四、結束語
本文基于VC++2005平臺和ObjectARX SDK開發環境,在AutoCAD 2008平臺上進行了二次開發,實現了SHAPE和DWG兩種文件格式同步轉換圖形數據和屬性數據。實際應用結果表明,本方法轉換效率高,操作便捷,完全滿足地理國情普查工作的精度要求,并顯著提高了生產效率。
參考文獻:
[1]王艷東,龔健雅,黃俊韜,等. 基于中國地球空間數據交換格式的數據轉換方法[J].測繪學報,2000, 29(2):142-148.
[2]陳能,施蓓琦.AutoCAD地形圖數據轉換為GIS空間數據的技術研究與應用[J].測繪通報,2005(8):11-14.
[3]胡勝華,何宗宜,陶利佳.AutoCAD與GIS數據轉換的研究[J].測繪通報,2007(12):44-47.
[4]肖鋒,呂寶奇,林蒙恩.DWG到SHP格式轉換技術的研究與實現[J].測繪與空間地理信息,2013(9):87-89.
[5]張葉,孫毅中,陳年松.CAD城市基礎數據到GIS轉換的有關問題探討[J].測繪與空間地理信息,2007(1):94-97.
[6]謝江平,鄒自力.CAD矢量數據向ArcGIS轉換的方法[J].地理空間信息,2010(4):130-132.
[7]王波,張亮,孫霞.CAD向GIS數據的轉換入庫[J].地理空間信息,2011(3):24-26.
[8]鄭翠玲.空間數據的格式轉換研究與實現[J].現代計算機:專業版,2010(9):171-173.
[9]侯麗娜,李城.Dgn到Dwg空間數據轉換方法[J].陜西煤炭,2011(1):96-97.
[10]王海銀,李國華,莊曉東,等.地理國情普查數據協同生產系統開發與應用[J].測繪通報,2015(7):103-105,127.
[11]宋曉紅,張立朝,祿豐年,等.地理國情普查中多源異構數據整合研究[J].測繪通報,2014(9):104-107.
[12]劉鋒,張繼賢,李海濤.SHP文件格式的研究與應用[J].測繪科學,2006(6):116-117.
通信作者:呂寶奇
作者簡介:肖鋒(1972—),男,高級工程師,主要從事數字城市、GIS技術應用等方面的研究。E-mail:8867110@qq.com
基金項目:河南省高校創新團隊支持計劃(14IRTSTHN026);河南省創新型科技創新團隊支持計劃
收稿日期:2015-07-15; 修回日期: 2015-10-10
中圖分類號:P282
文獻標識碼:B
文章編號:0494-0911(2015)12-0063-03