邱建康
(石獅市恒信房地產(chǎn)評估有限公司,福建石獅 362700)
基于AutoCAD的ArcGIS空間數(shù)據(jù)庫互操作實現(xiàn)
邱建康?
(石獅市恒信房地產(chǎn)評估有限公司,福建石獅 362700)
通過分析AutoCAD和ArcGIS數(shù)據(jù)模型,結(jié)合各自平臺的二次開發(fā)特點(diǎn),提出了在AutoCAD平臺下在線編輯ArcGIS空間數(shù)據(jù)庫的設(shè)計方案,開發(fā)并實現(xiàn)了原型系統(tǒng)。
地理信息系統(tǒng);空間數(shù)據(jù)模型;空間數(shù)據(jù)互操作;AutoCAD;空間數(shù)據(jù)庫
AutoCAD以其強(qiáng)大的矢量圖形編輯和處理功能著稱,一直以來被很多測繪單位用作地理信息數(shù)據(jù)前端采集工具,在城市規(guī)劃部門、國土資源部門均有廣大的用戶群。同時,隨著地理信息數(shù)據(jù)庫技術(shù)的發(fā)展,空間數(shù)據(jù)的應(yīng)用處理需求不斷增加[1],CAD數(shù)據(jù)文件的維護(hù)和管理方式難以滿足數(shù)據(jù)增長速度和更新的需求,并且在空間數(shù)據(jù)信息的描述和分析功能方面存在諸多不足[2,4]。而ArcGIS以其強(qiáng)大的空間數(shù)據(jù)處理能力,對空間數(shù)據(jù)的組織、存儲、管理、分析和應(yīng)用都提供了良好的解決方案[2]。
為此,不少測繪工作者采用多種手段解決目前兩種數(shù)據(jù)模型的轉(zhuǎn)換問題,提出了基于AutoCAD Object-Arx、ArcEngine、DWGDirect等開發(fā)組件實現(xiàn)AutoCAD和ArcGIS的數(shù)據(jù)相互轉(zhuǎn)換[2,5,6]。然而,這僅僅是解決了目前數(shù)據(jù)之間轉(zhuǎn)換入庫的問題,隨著地理信息數(shù)據(jù)生產(chǎn)的發(fā)展和管理需求的變化,離線的轉(zhuǎn)換并未解決用戶本質(zhì)的需求。所以,筆者提出將AutoCAD作為ArcGIS的在線編輯前端,直接操作空間數(shù)據(jù)庫,實現(xiàn)兩者之間數(shù)據(jù)的在線互操作,從而解決用戶在生產(chǎn)和管理的軟件功能需求,充分發(fā)揮AuotCAD和ArcGIS在空間數(shù)據(jù)生產(chǎn)和管理方面各自的優(yōu)勢。
地理信息互操作是指地理信息系統(tǒng)在地理數(shù)據(jù)庫之間能夠自由交換描述各種地理現(xiàn)象和對象特征,并能相互調(diào)用功能程序,共同合作以實現(xiàn)用戶的應(yīng)用需求。實現(xiàn)AutoCAD與ArcGIS的互操作,首先需要建立兩者空間數(shù)據(jù)模型的映射關(guān)系,然后通過二者提供的二次開發(fā)語言設(shè)計實現(xiàn)從AutoCAD環(huán)境中在線編輯ArcGIS GeoDataBase空間數(shù)據(jù)。
AutoCAD的圖形數(shù)據(jù)文件利用點(diǎn)、線、面等幾何要素,結(jié)合實體(Entity)的圖層、顏色、線型、線寬、塊符號等靜態(tài)圖形特征來表示地理要素(Feature),并依靠注記和擴(kuò)展數(shù)據(jù)(XData)的方式來記錄屬性數(shù)據(jù)的描述。而在ArcGIS中采用面向?qū)ο蟮墓芾黻P(guān)系數(shù)據(jù)庫的方式存儲管理空間數(shù)據(jù),矢量數(shù)據(jù)以點(diǎn)、線、面、注記對象的形式記錄地物要素。兩者之間的數(shù)據(jù)模型映射關(guān)系[3~5]如表1所示。
AutoCAD與ArcGIS空間數(shù)據(jù)模型的映射關(guān)系 表1
3.1 二次開發(fā)方式選型
AutoCAD提供的二次開發(fā)方式有 AutoLisp、ObjectArx、ObjectArx.Net等幾種方式,ArcGIS提供了ArcEngine GIS COM組件,可以采用VB、VB.Net、C++、C#等多種語言開發(fā),同時ArcGIS還提供了ArcSDE CAD Client。筆者采用AutoCAD ObjectArx.Net和ArcEngine for.Net SDK,主要是因為ObjectArx.Net開發(fā)能力不斷增強(qiáng),幾乎可與ObjectArx達(dá)到相同能力,而ArcEngine對GeoDataBase的訪問控制要比ArcSDE CAD Client封裝的更好,并且兩者基于統(tǒng)一的開發(fā)語言 VisualStudio 2008 C#,能夠有效減少代碼維護(hù)復(fù)雜性,更有利于快速開發(fā)和實現(xiàn)。
空間數(shù)據(jù)庫的互操作的實現(xiàn)方式有基于直接訪問模式和基于公共接口訪問模式兩種互操作方法。本文采用基于直接訪問模式,在AutoCAD環(huán)境下通過ArcEngine、ObjectArx.Net訪問GeoDataBase空間數(shù)據(jù)模型。系統(tǒng)架構(gòu)邏輯如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)邏輯圖
4.1 設(shè)計方案
空間數(shù)據(jù)互操作流程如圖2所示:利用AutoCAD作為ArcGIS空間數(shù)據(jù)的前端編輯工具,首先從ArcGIS GeoDataBase空間數(shù)據(jù)庫中提取簽出地理信息數(shù)據(jù),通過兩者空間數(shù)據(jù)模型的映射關(guān)系,在AutoCAD內(nèi)存中構(gòu)建相應(yīng)的空間數(shù)據(jù)模型,即AutoCAD Dwg文件,文件中包含空間數(shù)據(jù)和簽出對象的關(guān)系表。用戶通過AutoCAD的編輯工具編輯空間對象時,觸發(fā)編輯事件,將編輯操作記錄到簽出關(guān)系表中。在AutoCAD保存事件中進(jìn)行編輯內(nèi)容的提交,并將修改對象更新到GeoDataBase中,從而在AutoCAD中實現(xiàn)空間數(shù)據(jù)的在線編輯互操作。
圖2 空間數(shù)據(jù)互操作流程圖
其中,AutoCAD Dwg文件中采用圖3所示方式保存空間數(shù)據(jù)和簽出對象關(guān)系表。圖2中讀取映射模塊、更新保存模塊和CheckOut關(guān)系表分別對應(yīng)著圖3中的3個雙向箭頭指示的內(nèi)容,圖2中CheckOut關(guān)系表就是圖3中的Objects CheckOut Relations。兩個空間數(shù)據(jù)模型的互操作按照圖3中AutoCAD Dwg文件和GeoDataBase空間對象的映射關(guān)系來實現(xiàn)。
圖3 DWG文件與GeoDataBase空間數(shù)據(jù)模型的邏輯結(jié)構(gòu)及對應(yīng)關(guān)系
DWG文件和GeoDataBase空間數(shù)據(jù)模型的映射關(guān)系如圖3所示,圖3中左邊是AutoCAD DWG文件的數(shù)據(jù)模型,右邊是GeoDataBase空間數(shù)據(jù)模型。DWG文件數(shù)據(jù)模型中包括:Block Table(塊表)、Entity(實體)、Extension Dictionary(擴(kuò)展詞典)、Named Object Dictionary (命名對象詞典),Block Table包含Entity對象集合,Entity下面包含著Extension Dictionary集合,Extension Dictionary存放屬性記錄,Named Object Dictionary存放表名和表的結(jié)構(gòu)。GeoDataBase空間數(shù)據(jù)模型中包括:Feature Class(地物要素類)、Feature(地物要素)、Attributes (屬性數(shù)據(jù))、和對象修改表(A表、D表)。
空間數(shù)據(jù)模型對應(yīng)關(guān)系主要是3個雙向箭頭,分別是:①Feature(地物要素)對應(yīng)Entity(實體);②Attributes(屬性數(shù)據(jù))對應(yīng)Extension Dictionary(擴(kuò)展詞典)和Named Object Dictionary(命名對象詞典)中的屬性表結(jié)構(gòu);③簽出對象A表(記錄增加對象)、D表(記錄刪除對象)對應(yīng)Named Object Dictionary(命名對象詞典)中的Objects CheckOut Relation(簽出對象關(guān)系表)[7,8]。
4.2 系統(tǒng)的實現(xiàn)
AutoCAD前端編輯系統(tǒng)采用Visual Studio 2008 C#語言開發(fā),使用 ArcEngine中GeoDataBase組件中的WorkSpace、FeatureClass、Feature等接口類操作空間數(shù)據(jù)表,使用ObjectArx.Net開發(fā)包中的Autodesk.Auto-CAD.DatabaseServices類庫,BlockTable、Entity、DBDictionary對象類實現(xiàn)操作圖形數(shù)據(jù)表。
編輯操作時維護(hù)簽出對象關(guān)系表的代碼片段:
開發(fā)的互操作程序加載到AutoCAD中如圖4中左圖所示,在AutoCAD中打開ArcGIS GeoDataBase文件,AutoCAD通過映射模塊將空間數(shù)據(jù)讀取到DWG文件中,添加一個魚塘地物要素(窗口中間紅色對象)并保存。為了驗證編輯的結(jié)果是否保存到了GeoData-Base文件中,通過ArcMap打開此文件查看結(jié)果(圖4右圖ArcMap界面 ),可以看出AutoCAD已經(jīng)將新建的魚塘地物要素(窗口中間藍(lán)色對象)添加到GeoData-Base空間數(shù)據(jù)庫中,實現(xiàn)了用戶在AutoCAD軟件下在線編輯操作ArcGIS空間數(shù)據(jù)庫內(nèi)容。
圖4 AutoCAD互操作實現(xiàn)界面和ArcMap驗證操作結(jié)果
本文實現(xiàn)了在AutoCAD環(huán)境下在線編輯互操作ArcGIS GeoDataBase空間數(shù)據(jù)庫,發(fā)揮了兩個軟件在空間數(shù)據(jù)生產(chǎn)和管理方面的優(yōu)勢,滿足了用戶使用習(xí)慣,不但減少了用戶因數(shù)據(jù)轉(zhuǎn)換帶來的編輯工作量,而且提高了數(shù)據(jù)質(zhì)量。不過,在AutoCAD下地物要素符號的表達(dá),組合對象的復(fù)雜線狀地物要素在兩個空間數(shù)據(jù)模型的轉(zhuǎn)換等方面還存在著一些問題,有待進(jìn)一步研究解決。
[1]龔健雅.地理信息系統(tǒng)基礎(chǔ)[M].北京:科學(xué)出版社,2001
[2]馬立廣,張亮.AutoCAD環(huán)境下Geodatabase數(shù)據(jù)轉(zhuǎn)換與可視化操作實現(xiàn)[J].測繪科學(xué)第33卷第5期,2008.9
[3]高洪俊.AutoCAD圖形數(shù)據(jù)向ArcGIS轉(zhuǎn)換關(guān)鍵技術(shù)的研究[J].城市勘測2006(6)
[4]陳能,施蓓琦.AutoCAD地形圖數(shù)據(jù)轉(zhuǎn)換為GIS空間數(shù)據(jù)的技術(shù)研究與應(yīng)用[J].測繪通報,2005(8)
[5]申勝利,李華.基于ArcEngine的ArcGIS與AutoCAD數(shù)據(jù)轉(zhuǎn)換研究[J].測繪通報,2007(2)
[6]孫炎,羅曉沛.基于DWGDirect實現(xiàn)AutoCAD與ArcGIS的數(shù)據(jù)交換[J].計算機(jī)工程與設(shè)計,2009,30(7)
[7]Autodesk.AutoCAD ObjectARX Developer's Guide.Autodesk Inc,2009
[8]ESRI developer help for ArcGIS 9.3,ESRI Company,USA,2009
Implementing Interoperability of ArcGIS Geodatabase Based on AutoCAD
Qiu JianKang
(ShiShi HengXin Real Estate Appraisal Co.,Ltd.Quanzhou 430223,China)
This paper analyses the data model of AutoCAD and ArcGIS,compares with theirs advantage of development method,puts forward a solution of editing ArcGIS Geodatabase with in AutoCAD online,and develops the prototype system.
Geography information system;spatial database model;geospatial interoperability;AutoCAD;geospatial database
1672-8262(2010)05-54-03
P208
B
2009—12—07
邱建康(1969—),男,助理工程師,主要從事地理信息應(yīng)用工程的研發(fā)工作。