張習闞
(南京萊斯信息技術股份有限公司,南京 210000)
目前,各地正在進行數字城市地理空間框架的探索和建設,框架建設的重要數據來源則是現有的數字地形圖,但地形圖數據主要還是以DWG 文件的形式來存儲和管理,降低了地理數據的利用效率,同時也不利于了數據的共享和交換。由于CAD 數據模型與GIS 空間數據模型的不同,并沒有按照GIS 數據標準生成,所以現有的GIS 軟件不能直接對CAD 文件進行如空間查詢、空間分析等操作,而以往單純依靠ArcEngine 提供的接口轉換又會丟失CASS 數據中的擴展屬性,所以亟需通過編程方式來重新組織和存儲CAD 數據,關聯各元素的空間信息和屬性信息,最終實現CAD 數據到GIS 空間數據的無損轉換[1]。
GIS 數據來源有很大一部分是AutoCAD 傳統制圖格式,而在某些行業比較普及的軟件—南方CASS 又占據相當的數量。南方CASS 實際就是是通過對AutoCAD 二次開發,將圖形屬性存放在相應要素的擴展數據中。
Teigha.NET 是由開放設計聯盟設計開發的一套面向對象的支持多平臺、多版本、多格式的DWG 文件的類庫,可脫離AutoCAD 環境實現DWG 文件的讀寫操作、繪制渲染和轉換輸出等,具有較高的讀寫效率和安全性。支持在微軟.NET 開發平臺下使用,功能強大[2]。
Shapefile 文件是ArcGIS 軟件的數據文件之一,該文件格式已成為地理信息軟件界的一個開放標準,ArcGIS 軟件、SuperMap、QGIS 等軟件均將其當作基本的數據文件。同時,Shapefile 也是一種重要的數據交換格式,它能夠在其他GIS 平臺與ESRI 產品之間進行數據的共享和互操作。
ArcEngine 是 建 立 在ESRI 的ArcObjects 組 件 之 上 的,ArcObjects 是ArcGIS 整個軟件體系的核心功能庫,由獨立的COM 組件構成。ArcEngine 在ArcObjects 組件上又進行了一次封裝和優化,可用來快速方便地開發自定義GIS 應用程序。
編程實現將DWG 格式轉換成SHP 格式其實就是使用ArcEngine 的接口讀取DWG 格式再寫SHP 文件。在DWG 中同一圖層可以包括文字、點、線和面,而在SHP 文件中分點、線、面、注記圖層分別存放。為了便于數據的細化和管理,利用Teigha.NET 可以讀取CASS 數據中的XDATA 擴展屬性的特性,讀出每個實體的編碼和地理要素類型,再根據不同CASS 編碼和要素類型再存放到對應的圖層文件中。CASS 數據與SHP 數據轉換的對應關系如圖1所示。

圖1 CASS數據與SHP數據轉換的對應關系
如圖2 所示,首先分析CASS 數據各種地物的表達方式及其在ArcGIS 中對應的各種地物的表達方式,將圖形數據轉換到ArcGIS 下。對幾何圖形要素直接進行讀取并轉入ArcGIS 圖形數據,屬性數據根據CASS 編碼以及數據的圖層、顏色、線型等進行編碼轉入ArcGIS 屬性數據。數據中的擴展屬性在ArcEngine中無法獲取的,所以通過引入Teigha.NET 來實現擴展屬性的讀取。數據轉換完成后,ArcGIS 通過調用包括各類地類的符號庫,根據要素屬性內容中的地類編碼實現數據的符號化顯示。

圖2 CASS向ArcGIS數據轉換及顯示實現思路
整個功能基于VS.NET2012實現,采用C#語言編程,利用Teigha.NET 和ArcEngine10.2組件庫,實現了對CASS 數據的讀取、SHP 格式空間數據的生成和瀏覽。整個程序實現過程完全脫離AutoCAD 平臺,輕量簡潔,并結合了具體項目需求進行各種適用功能的量身定制,提高了CASS 數據到GIS 數據的轉換及顯示效率。
圖3是功能主界面圖,采用C#語言和ArcEngine10.2開發實現,視圖中顯示的是轉換后的高程點、水系設施、居民點等專題圖層。
基于Teigha.NET 與ArcEngine 的CASS 數據轉換系統利用Teigha.NET 對DWG 文件的強大的讀寫功能,直接讀取DWG 中的文字、圖形、實體擴展信息等,從而真正脫離了對AutoCAD 平臺的依賴。同時,結合ArcEngine強大的數據轉換和顯示接口,實現了CASS 數據到Shapefile 數據的無損轉換,解決了以往單純依靠ArcEngine 進行轉換丟失擴展屬性的問題,且提高了數據轉換的效率,在GIS 建庫項目中具有廣泛的應用前景。

圖3 功能主界面