鄒艷紅,習文鳳
(中南大學有色金屬成礦預測教育部重點實驗室,地球科學與信息物理學院,湖南長沙 410083)
規劃審批數據在AutoCAD與ArcSDE間互操作的實現
鄒艷紅?,習文鳳
(中南大學有色金屬成礦預測教育部重點實驗室,地球科學與信息物理學院,湖南長沙 410083)
針對規劃審批數據處理后入庫和入庫后再調用過程中AutoCAD與ArcSDE數據頻繁轉換的問題,基于C#.Net和ObjectArx SDK工具對AutoCAD進行二次開發,研究了二者實時數據轉換互操作功能的開發實現過程。數據互操作功能包括取圖和上圖兩個模塊,前者將數據從ArcSDE中加載到AutoCAD中并編輯,后者將AutoCAD數據通過ArcSDE保存到關系數據庫中。作為實例研究,兩模塊已經整合到岳陽市規劃審批數據處理與輔助入庫系統中,有效地提高了規劃審批數據入庫和查詢調用的效率。
規劃審批數據;AutoCAD數據;ArcSDE數據;互操作
AutoCAD具有強大的繪圖功能和矢量圖形處理能力,廣泛應用于測繪、規劃、國土資源等領域,尤其在規劃行業,基本地形圖、業務審批等圖形都是運用Auto-CAD繪制。但是在規劃行業中,規劃人員在進行業務審批時,常需要調用歷史規劃審批數據進行對比,雖然CAD格式數據作為空間信息的主要數據源,但它在空間數據信息的描述和分析功能方面卻存在諸多不足[1,2]。而規劃審批及其相關數據具有海量數據的特征[3],如果規劃人員挨個文件去找,將耗費很多的時間,降低了規劃人員的工作效率。ArcSDE是ArcGIS與商用關系型數據庫(如Oracle,Microsoft Sql Server等)之間專門用于存儲、讀取和檢索空間數據的GIS通道[4],它采用統一的DBMS存儲空間數據和屬性數據,在標準的關系數據庫上增加一個空間數據管理層,它的基本任務是作為存儲在RDBMS中的空間數據的GIS網關[5]。這種模型省去了空間數據庫和屬性數據庫之間繁瑣的連接,空間數據存取速度較快,同時也有利于保證空間數據與屬性數據間的完整性。如將規劃審批數據通過ArcSDE存儲在DBMS里,而在對數據的修改與編輯等方面運用AutoCAD,既可以解決海量規劃審批數據的存儲問題,又可以充分利用AutoCAD便捷的繪圖功能。
目前CAD與ArcSDE數據交換的實現方式主要有兩種,一種是借助于中間軟件如FME(Feature Manipulate Engine,空間數據操作引擎)實現轉換;另一種是通過二次開發實現,如基于ArcEngine的ArcGIS二次開發,或對CAD做二次開發,如基于C#.Net和Object ARX開發包的二次開發來實現數據間的轉換。第一種方法可以實現空間數據以及屬性數據的批量無損轉換,但操作復雜,需要利用第三方軟件,適用于專業數據處理人員的使用。第二種方法可以根據需要靈活定制友好的界面,能更高效、安全地管理空間數據[6],方便數據的查詢、統計以及空間分析。但是隨著規劃數據管理一站式平臺的開發與應用,規劃人員對CAD使用更為頻繁,如何實現實時快捷地從數據庫中獲取數據,同時將處理過的CAD數據通過ArcSDE存儲在關系數據庫中,對界面功能開發提出了更高的要求。為此,本文結合岳陽市規劃審批數據管理實例,選用ArcSDE+SQL Server2008存儲空間數據和屬性數據,基于AutoCAD進行二次開發,研究了AutoCAD與ArcSDE間規劃審批數據實時互操作轉換的實現過程。
2.1 AutoCAD的數據模型
AutoCAD以圖層(Layer)來組織圖形數據,不同類型的圖素,如點、線、多邊形等可以共層,一個dwg或dxf文件可以包含多個圖層[7]。它所有實體都存放在塊表中,與實體對應的圖層、線型、文字樣式等信息分別存放在層表、線型表、文字樣式表中,屬性數據以擴展屬性方式存儲在AutoCAD的圖元對象中。其數據模型相對簡單,是以二進制方式存儲點線面地理數據,但只能存儲少量的屬性數據。后來的CAD數據模型支持擴展屬性功能,但還是不能跨越其存儲量為16 k的限制,而且其存儲模式還是文件存儲模式,這遠遠不能滿足當前海量數據存儲的要求[4]。
2.2 ArcSDE數據模型
ArcSDE用X、Y坐標來表示點、線、面、注記。其用單一的坐標表示點,一組有序的坐標串表示線,一組起始結點和終止結點相同的坐標串表示面。它以層的方式來管理地理數據,具有共同屬性項的一類要素放于一層,每個數據庫記錄對應一個實際要素。ArcSDE為數據庫中每層(Layer)建立了空間索引(cell),它是將層從邏輯上分成一個個小塊。層中的要素則分解到各cell中加以描述,并將此描述信息寫到索引表中。落到多個cell上的要素,將在每個cell對應的索引記錄中加以描述。沒有數據的cell不包括在索引表中[8]。其利用將空間數據類型加到關系數據庫中的方法來存儲和組織數據庫中的空間要素,但不改變和影響現有的數據庫或應用。
2.3 二者數據模型的映射關系
文中通過建立AutoCAD與ArcSDE間的映射關系,如表1所示,來實現數據間的互轉換從而達到數據間的互操作。

AutoCAD與ArcSDE數據模型的映射關系 表1
3.1 互操作功能設計
針對原始的規劃審批數據為AutoCAD格式,需要轉化為ArcSDE數據后保存到數據庫中,而數據庫中的規劃審批歷史數據也有時需要調入輔助入庫系統中,以AutoCAD格式顯示并與現狀數據進行對照修改。因此,為了方便輔助規劃審批數據入庫,需要實現審批數據的互操作功能:一方面可以將CAD格式圖形數據自動轉為ArcSDE數據后存入ArcSDE數據庫中,屬性數據存于ArcSDE數據庫表的字段中;另一方面能從ArcSDE數據庫中讀取歷史審批數據,自動轉換為CAD數據顯示在AutoCAD平臺上,并可以進行編輯、修改。
空間數據庫互操作的實現方式有基于直接訪問模式和基于公共接口訪問模式兩種互操作方法[9]。本文采用基于直接訪問模式,基于C#.Net和ObjectARX軟件包對CAD進行二次開發,直接訪問ArcSDE數據庫來實現兩者之間的互操作。在AutoCAD環境下通過ArcEngine、ObjectArx.Net訪問ArcSDE,系統互操作邏輯結構圖如圖1所示。

圖1 互操作模塊邏輯結構圖
3.2 互操作實現過程
本次開發采用的開發語言和環境如表2所示:

開發語言和環境 表2
開發中,C#語言通過AutoCAD.Net來和AutoCAD進行通訊,通過Interop.AutoCAD.dll實現與AutoCAD之間的數據和信息交換。自定義功能則主要依靠AutoCAD目錄下的Acdbmgd.dll和Acmgd.dll兩個文件實現。
互操作在數據操作中以“取圖”和“上圖”兩個功能模塊來實現。
(1)取圖:即規劃審批數據從ArcSDE里加載到AutoCAD平臺上,獲取編輯權限后可對數據進行編輯。取圖過程中加載數據的流程圖如圖2左所示。系統中使用ArcEngine中esriSystem組件下的IAoInitialize初始化ESRI的權限,繼而調用ArcEngine中GeoDataBase組件中的WorkSpace、FeatureClass、Feature等接口類操作空間數據表。使用ObjectArx.Net開發包中的Autodesk.AutoCAD.DatabaseServices類庫,BlockTable、Entity、DBDictionary等對象類實現操作圖形數據表。在ArcSDE數據庫加載數據的過程中,將空間數據的屬性信息加載到對應的CAD實體的擴展數據中。
取圖的關鍵函數如下:
DownLoadData(string featureclassname,string rollid)
//取圖函數
ConvertTextPoint2CAD(IFeatureClass fc,string rollid,stringfeatclsrealname)//ArcSDE注記點要素轉CAD注記點函數
ConvertLine2CAD(IFeatureClass fc,IEnvelope ienv)
//ArcSDE線要素轉CAD線型函數
ConvertPolygon2CAD(IFeatureClass fc,IEnvelope ienv)// ArcSDE面要素轉CAD閉合多義線或圓函數
ConvertAnnotation2CAD(IFeatureClass fc,IEnvelope ienv)// ArcSDE Annotation轉CAD DBText
(2)如圖2:指審批數據從AutoCAD直接保存到ArcSDE數據庫中。上圖的保存流程圖如圖2右所示。上圖過程中,將CAD擴展數據寫入對應的ArcSDE字段并保存,上圖后,更新數據表。

圖2 ArcSDE到AutoCAD的數據加載流程(左) AutoCAD到ArcSDE的數據保存流程(右)
上圖的關鍵代碼如下:
UpLoadData(string featureclassname)//取圖函數
ConvertDBText2SDE(Entity ent,IFeatureClass fc)
//轉換DBText為SDE點要素函數
ConvertLine2SDE(Entity ent,IFeatureClass fc)
//轉換CAD線型為ArcSDE線要素函數
ConertPolyline2SDE(Entity ent,IFeatureClass fc)
//轉換CAD多義線為ArcSDE的面要素或線要素函數ConvertCircle2SDE(Entity ent,IFeatureClass fc)
//轉換CAD圓為ArcSDE的圓函數
4.1 實例規劃審批數據
以岳陽市規劃審批數據為例,規劃審批數據按內容分類存放于以下5個數據庫中:索引圖圖庫,基礎地理信息庫,規劃編制成果庫,規劃審批成果庫,規劃管理依據庫,如圖3所示。
其中索引圖圖庫含有:規劃分片索引圖,規劃管理單元圖,行政區域邊界圖,CAD地形圖結合表,1∶1 000地形圖結合表。基礎地理信息庫里含有以下4個圖庫:影像圖圖庫、地名庫、管線資料圖庫、地形圖圖庫。規劃編制成果庫包含以下4個圖庫:總體規劃圖庫、控制性詳細規劃圖庫、專項規劃圖庫、道路匯總圖庫。規劃審批成果庫包含:定位紅線圖,道路上線案卷圖,交通影響評價項目圖,竣工驗線圖庫,核指標總平面圖,管線總圖,選址藍線,用地紅線,用地藍線等。規劃管理依據庫里含有:紅、藍、橙、紫、黑、綠、黃等規劃七線。

圖3 繪圖編輯菜單與數據操作示意圖
4.2 數據操作和應用實現
打開岳陽市規劃審批數據處理與輔助入庫系統,左鍵單擊繪圖編輯下的繪圖面板菜單項(如圖3左圖),彈出繪圖面板,在繪圖面板下的圖層模塊中,右鍵單擊某一圖層,左鍵單擊取圖即可取出該圖層的數據。如圖3右所示,右擊用地紅線面圖層,即可將改圖形顯示在CAD界面中進行編輯修改。取完圖后,上圖按鈕即可由灰色變為黑色,編輯修改完后的圖,可以點擊上圖按鈕,將數據保存到ArcSDE對應的關系數據庫中。圖4和圖5為用地紅線面的取圖和上圖后的顯示圖。
在實例中,以用地紅線為實驗數據,取其中6 324個注記點數據平均耗時2.9 s,取其中131個線數據平均耗時1.9 s,1 836個面數據平均耗時2.5 s。上圖比取圖多了添加數據的擴展數據的過程,且上圖是按當前案卷來上圖,每次上圖的數據量不大,平均每次1 s內能完成。對于點、多段線、圓弧、圓數據,取圖上圖數據準確率能達100%,而樣條曲線由于是用多段線擬合而成,其精度受曲線曲率大小及多段線節點個數影響,曲率越小,精度越高,節點越多,精度越高。

圖4 規劃審批ArcSDE數據在AutoCAD顯示圖

圖5 規劃審批ArcSDE數據在ArcMap顯示圖
本文通過對AutoCAD的二次開發,實現了規劃審批數據在AutoCAD與ArcSDE間的互操作,促進了CAD與GIS在應用中的交融,方便了數據的存儲和編輯以及用戶操作的習慣,不但減少了用戶因數據轉換帶來的編輯工作,使用戶提高了工作效率,還提高了數據質量與應用價值。有待進一步提高的是優化數據結構,減少數據存儲時間。同時,為了提高數據互操作效率,良好的數據預處理工作必不可少。
[1] 陳能,施蓓琦.AutoCAD地形圖數據轉換為GIS空間數據的技術研究與應用[J].測繪通報,2005(8):11~14,34.
[2] 周小成,焦道振.基于GeodataBase的CAD數據到GIS的解決方案[J].測繪與空間地理信息,2005,28(1):29~32.
[3] 吳千里,馬小龍.面向城市規劃信息化的GIS與CAD集成技術探討[J].測繪通報,2010(2):52~55.
[4] 張卓然.基于ArcSDE的地形數據入庫互操作研究[D].湖南:湖南大學,2008.
[5] 鞠建榮,武小軍,張鳳梅.AutoCAD數據到ArcSDE的轉換方法研究[J].城市勘測,2010(Z1):43~45,48.
[6] 王波,張亮,孫霞.CAD向GIS數據的轉換入庫[J].地理空間信息,2011,9(3):24~26.
[7] 胡衛民,徐雪仁,郭建恩等.空間數據庫引擎(SDE)在圖資源數據庫管理中的應用[J].國土資源遙,67~70.
[8] 邱建康.基于AutoCAD的ArcGIS空間數據庫互操作實現[J].城市勘測,2010(5):54~56.
Research on Implementation of Planning Approval Data Interoperation Between AutoCAD and ArcSDE
Zhou Yanhong,XiWeifeng
(Key Laboratory of Metallogenic Prediction of Nonferrous Metals,Ministry of Education School of Geosciences and Infophysics,Central South University Changsha,Changsha 410083,China)
To address planning approval field interoperation problem between AutoCAD and ArcSDE in planning approval datamanagement system,we took redevelopment from AutoCAD to ArcSDE database based on C#.Net and Object SDK.The data could be operated by Down-Load and Up-Loadmodule in the system.Down-Loadmodulewas developed to load planning data from ArcSDE to AutoCAD,the latter was to store AutoCAD format data into ArcSDE.As a case study,themoduleswere integrated into the Planning Approval Data Management System for Yueyang city and the data interoperation was very fast and easy between AutoCAD and ArcSDE+SQL Server 2008.The results show that the implemented interoperation function is convenient for planning approval datamanagement.
planning approval data;AutoCAD data;ArcSDE data;interoperation
1672-8262(2013)03-14-04
P208.1
A
2013—03—04
鄒艷紅(1971—),女,副教授,博士,研究方向為地學建模及信息系統開發。
國家自然科學基金項目(41102204)