張習闞
(南京萊斯信息技術(shù)股份有限公司,南京 210000)
目前,各地正在進行數(shù)字城市地理空間框架的探索和建設(shè),框架建設(shè)的重要數(shù)據(jù)來源則是現(xiàn)有的數(shù)字地形圖,但地形圖數(shù)據(jù)主要還是以DWG 文件的形式來存儲和管理,降低了地理數(shù)據(jù)的利用效率,同時也不利于了數(shù)據(jù)的共享和交換。由于CAD 數(shù)據(jù)模型與GIS 空間數(shù)據(jù)模型的不同,并沒有按照GIS 數(shù)據(jù)標準生成,所以現(xiàn)有的GIS 軟件不能直接對CAD 文件進行如空間查詢、空間分析等操作,而以往單純依靠ArcEngine 提供的接口轉(zhuǎn)換又會丟失CASS 數(shù)據(jù)中的擴展屬性,所以亟需通過編程方式來重新組織和存儲CAD 數(shù)據(jù),關(guān)聯(lián)各元素的空間信息和屬性信息,最終實現(xiàn)CAD 數(shù)據(jù)到GIS 空間數(shù)據(jù)的無損轉(zhuǎn)換[1]。
GIS 數(shù)據(jù)來源有很大一部分是AutoCAD 傳統(tǒng)制圖格式,而在某些行業(yè)比較普及的軟件—南方CASS 又占據(jù)相當?shù)臄?shù)量。南方CASS 實際就是是通過對AutoCAD 二次開發(fā),將圖形屬性存放在相應(yīng)要素的擴展數(shù)據(jù)中。
Teigha.NET 是由開放設(shè)計聯(lián)盟設(shè)計開發(fā)的一套面向?qū)ο蟮闹С侄嗥脚_、多版本、多格式的DWG 文件的類庫,可脫離AutoCAD 環(huán)境實現(xiàn)DWG 文件的讀寫操作、繪制渲染和轉(zhuǎn)換輸出等,具有較高的讀寫效率和安全性。支持在微軟.NET 開發(fā)平臺下使用,功能強大[2]。
Shapefile 文件是ArcGIS 軟件的數(shù)據(jù)文件之一,該文件格式已成為地理信息軟件界的一個開放標準,ArcGIS 軟件、SuperMap、QGIS 等軟件均將其當作基本的數(shù)據(jù)文件。同時,Shapefile 也是一種重要的數(shù)據(jù)交換格式,它能夠在其他GIS 平臺與ESRI 產(chǎn)品之間進行數(shù)據(jù)的共享和互操作。
ArcEngine 是 建 立 在ESRI 的ArcObjects 組 件 之 上 的,ArcObjects 是ArcGIS 整個軟件體系的核心功能庫,由獨立的COM 組件構(gòu)成。ArcEngine 在ArcObjects 組件上又進行了一次封裝和優(yōu)化,可用來快速方便地開發(fā)自定義GIS 應(yīng)用程序。
編程實現(xiàn)將DWG 格式轉(zhuǎn)換成SHP 格式其實就是使用ArcEngine 的接口讀取DWG 格式再寫SHP 文件。在DWG 中同一圖層可以包括文字、點、線和面,而在SHP 文件中分點、線、面、注記圖層分別存放。為了便于數(shù)據(jù)的細化和管理,利用Teigha.NET 可以讀取CASS 數(shù)據(jù)中的XDATA 擴展屬性的特性,讀出每個實體的編碼和地理要素類型,再根據(jù)不同CASS 編碼和要素類型再存放到對應(yīng)的圖層文件中。CASS 數(shù)據(jù)與SHP 數(shù)據(jù)轉(zhuǎn)換的對應(yīng)關(guān)系如圖1所示。
圖1 CASS數(shù)據(jù)與SHP數(shù)據(jù)轉(zhuǎn)換的對應(yīng)關(guān)系
如圖2 所示,首先分析CASS 數(shù)據(jù)各種地物的表達方式及其在ArcGIS 中對應(yīng)的各種地物的表達方式,將圖形數(shù)據(jù)轉(zhuǎn)換到ArcGIS 下。對幾何圖形要素直接進行讀取并轉(zhuǎn)入ArcGIS 圖形數(shù)據(jù),屬性數(shù)據(jù)根據(jù)CASS 編碼以及數(shù)據(jù)的圖層、顏色、線型等進行編碼轉(zhuǎn)入ArcGIS 屬性數(shù)據(jù)。數(shù)據(jù)中的擴展屬性在ArcEngine中無法獲取的,所以通過引入Teigha.NET 來實現(xiàn)擴展屬性的讀取。數(shù)據(jù)轉(zhuǎn)換完成后,ArcGIS 通過調(diào)用包括各類地類的符號庫,根據(jù)要素屬性內(nèi)容中的地類編碼實現(xiàn)數(shù)據(jù)的符號化顯示。
圖2 CASS向ArcGIS數(shù)據(jù)轉(zhuǎn)換及顯示實現(xiàn)思路
整個功能基于VS.NET2012實現(xiàn),采用C#語言編程,利用Teigha.NET 和ArcEngine10.2組件庫,實現(xiàn)了對CASS 數(shù)據(jù)的讀取、SHP 格式空間數(shù)據(jù)的生成和瀏覽。整個程序?qū)崿F(xiàn)過程完全脫離AutoCAD 平臺,輕量簡潔,并結(jié)合了具體項目需求進行各種適用功能的量身定制,提高了CASS 數(shù)據(jù)到GIS 數(shù)據(jù)的轉(zhuǎn)換及顯示效率。
圖3是功能主界面圖,采用C#語言和ArcEngine10.2開發(fā)實現(xiàn),視圖中顯示的是轉(zhuǎn)換后的高程點、水系設(shè)施、居民點等專題圖層。
基于Teigha.NET 與ArcEngine 的CASS 數(shù)據(jù)轉(zhuǎn)換系統(tǒng)利用Teigha.NET 對DWG 文件的強大的讀寫功能,直接讀取DWG 中的文字、圖形、實體擴展信息等,從而真正脫離了對AutoCAD 平臺的依賴。同時,結(jié)合ArcEngine強大的數(shù)據(jù)轉(zhuǎn)換和顯示接口,實現(xiàn)了CASS 數(shù)據(jù)到Shapefile 數(shù)據(jù)的無損轉(zhuǎn)換,解決了以往單純依靠ArcEngine 進行轉(zhuǎn)換丟失擴展屬性的問題,且提高了數(shù)據(jù)轉(zhuǎn)換的效率,在GIS 建庫項目中具有廣泛的應(yīng)用前景。
圖3 功能主界面