劉衛國
(天津市測繪院,天津 300381)
基于Object DBX和ArcGIS Engine的數據轉換系統設計和實現
劉衛國?
(天津市測繪院,天津 300381)
首先介紹了數據字典等數據轉換系統的技術基礎,然后重點介紹了數據轉換系統將符合數據字典要求的DWG格式地形圖轉換成GeoDataBase(Access)格式的地理信息系統數據庫各功能模塊的設計與實現,最后介紹了該系統成果。
數據字典;制圖數據;地理信息系統數據;轉換
在由傳統測繪向信息化測繪轉變的今天,測繪方式方法和測繪成果表現形式等方面都在發生深刻的變革。其在城市規劃、土地管理、市政管理、交通導航、通訊定位等方面的應用也日趨廣泛。地理信息系統解決方案的核心——地理信息系統數據的制作與更新也需要有更精準快捷的技術。
目前應用于地形圖制圖的軟件很多,以天津市為例,主要是應用AutoCAD軟件編制,成果為DWG格式數據。基礎地形圖數據已經不再只是滿足量算、噴繪等傳統需要,賦予了地理信息編碼和若干屬性信息滿足復雜的查詢需要。天津市測繪院在2007年先后編制完成了《天津市基礎地理信息要素數據字典第一部分:1∶500、1∶2 000》和《天津市基礎地理信息要素數據字典第二部分:1∶10 000》(以后簡稱數據字典)。數據字典實施后指導生產的天津市濱海新區地形圖數據(1∶2 000)和市域1∶2 000縮編1∶10 000地形圖數據不僅具有詳細的地理信息分類編碼,還具有較詳細的基礎屬性信息(擴展實體數據)。如何便捷的將圖形數據和擴展屬性無損的轉換為地理信息系統數據,并根據客戶需求有取舍的轉換為客戶標準信息數據,成為當前技術需求。
1.1 技術背景
Object DBX是AutoCAD軟件自帶的開發包,包含了一系列的動態鏈接庫(DLL),通過它們可以訪問AutoCAD圖形文件的所有對象,也可以建立獨立于AutoCAD環境的應用程序對DWG圖形文件進行訪問或處理。
ArcGIS Engine是ESRI公司提供的供開發人員自定義應用程序的嵌入式GIS組件的完整類庫。其對象與平臺無關,支持Windows、UNIX、LINUX,能在不同的編程接口中調用,如C++、Java、.NET。借用它可以開發獨立的GIS應用軟件。
數據字典是天津市測繪院為了更好地滿足天津市對基礎地形圖及其數據日益增長的需要,適應目前測繪技術向信息化生產過渡的發展趨勢,結合實際作業情況編寫的指導基礎地形圖數據生產的標準文件。符合數據字典要求的基礎地形圖數據是本系統設計和開發的基礎。
1.2 系統功能設計
數據轉換系統是為濱海新區規劃與建設管理系統生產基礎地形圖數據而開發的。系統實現,以數據字典為依據生產的DWG格式地形圖數據,包括擴展屬性,無損轉換成標準格式的地理信息系統數據;存儲為數據庫GeoDataBase(Access)格式,再提取轉換為客戶數據標準(濱海新區規劃與建設管理系統數據標準)。系統具有以下功能:
(1)先將擴展屬性及自動轉換有誤差的信息數據統一轉出,形成標準信息文件,再將DWG格式文件批量轉換為GeoDataBase(Access)格式。
(2)根據轉換規則提取需要的點、線實體,讀取標準信息文件,將地形圖數據擴展屬性映射成為標準屬性結構并寫入對應實體。
(3)根據轉換規則將線實體拓撲成面實體,轉換屬性,根據規則庫刪除多余的線實體,得到標準地理信息數據庫。
(4)實現數據自動連接(Union)功能。
(5)根據提取標準,提取需要的實體和需要的屬性項,對部分不符合幾何類型要求的實體作必要的幾何類型轉換,輸出符合客戶標準的數據。
2.1 規則庫及規則庫管理模塊
規則庫里定義了目標實體的幾何類型和屬性映射關系,指導數據由DWG格式向GeoDataBase(Access)格式轉換規則(簡稱轉換規則)和標準數據向客戶數據轉換規則(簡稱提取規則)。
在DWG格式文件里的地理信息實體實際只有點、線等基本幾何類型。通常利用ArcToolBox的Import From CAD工具將DWG格式文件轉換為GeoData-Base(Access)格式文件,在該文件里看到的面要素類(Polygon FeatureClass)是把DWG格式文件里的閉合線實體作為面實體轉換進入的。哪些實體需要轉換、轉換為什么幾何類型(Geometry Type)、存放在哪個要素集(Feature Dataset)的哪個要素類(FeatureClass)里、需要哪些屬性在規則庫里做了統一規定。
AutoCAD擴展實體數據即地形圖數據里的擴展屬性,是在常規的圖形數據基礎上增加的按一系列分類代碼組合而成的數據塊,不同于關系型數據庫的表現形式。需要將擴展實體數據信息映射到相應的要素類的屬性表里。
不同的用戶需要的數據標準不一樣。以《濱海新區規劃與建設用地管理系統數據標準》為例,有如下區別:獨立的地理信息編碼、屬性結構、字段名稱與數據字典的標準編碼差異較大;部分地物分類與數據字典不統一;少數地物和屬性信息不需要;少數地物的幾何類型與數據字典相異。在標準地理信息系統數據向客戶系統數據轉換時需要做必要的系統轉換和過濾。
規則庫的設計能夠很好地解決上述3類問題,規則庫設計結構如表1、表2、表3所示。

轉換規則表 表1

?

提取規則表 表2

字段映射表 表3
規則庫管理模塊主要是調用.NET Framework數據,提供程序OLE DB數據源的類集合來實現規則庫管理和訪問功能。規則庫管理模塊主要包含規則庫管理類(RulesManage)及其打開規則庫、讀取轉換規則、讀取字段映射關系等3個重要方法。規則庫類封裝了一個數據庫操作基礎類(clsDBClass)實現對規則庫的打開、關閉、讀取等基本操作。規則庫類調用了OleDb-Connection和 OleDbDataReader的相關方法。規則庫管理類結構如下:


2.2 數據轉換模塊
數據轉換模塊主要實現將DWG文件的所有信息轉換成數據庫GeoDataBase(Access)格式文件。系統調用CadWorkspaceFactoryClass()類的IWorkspaceFactory接口打開DWG文件,用FeatureDataConverterClass ()類的ConvertFeatureClass方法將DWG文件的全部圖形信息和基本屬性轉入臨時數據庫。利用接口實現自動轉換有3個缺點:一是DWG文件里的擴展屬性不能有效轉出,二是文字注記轉換為點后有位置偏移,三是所有點要素的編碼(Thickness)值丟失。為了確保數據精度和信息完整,采用AutoCAD/ObjectDBX類型庫的接口,能夠快速打開DWG文件,遍歷實體按照數據字典的要求讀取所有基本信息和擴展信息寫出為標準信息文件。
2.3 數據處理模塊
數據處理模塊主要實現將臨時數據庫中的基本點、線按規則庫過濾添加屬性,然后按規則庫拓撲生成面實體,刪除不需要的線。數據處理的主要依據是編碼(Thickness,塊為塊名稱)和句柄(Handle)。
臨時數據庫中包含大量垃圾數據。比如,根據數據字典,塊應該轉換為點,但是在轉換中不僅生成了點,還生成了構成塊文件的所有線條,這些線是不需要的;制圖數據中,高程點是用一個點和一個符號塊表示的,轉換之后塊生成的點是不需要的,高程點生成的點因為沒有編碼也不需要,因為點轉換之后缺少編碼(Thickness值);所有閉合的線轉換成的面實體均不需要,因為面實體要用線實體根據規則庫重新拓撲產生。實際上,在臨時數據庫中只有部分線和塊轉換成的線和點是需要的。系統按照規則庫的要求,提取臨時數據庫中需要的點和線實體,放入過程數據庫的目標位置,根據句柄讀取標準信息文件里的屬性,進行字段匹配寫入目標字段。點包括注記(Text)的插入點和普通點(Point),如高程點,同樣也需要經過字段匹配把點的屬性信息寫入對應的實體屬性項。
屬性映射機制是屬性轉換的關鍵,轉換機制如圖1所示。

圖1 DWG格式向GeoDataBase(Access)格式屬性轉換示意圖
面實體由線實體根據數據字典拓撲而成,然后刪除需要刪除的線實體。面的形成比較復雜;針對面實體拓撲設計了拓撲類,拓撲類除了完成線實體拓撲生成面實體,還要完成線、面實體的接邊。拓撲類實現了5個重要算法:
(1)獨立閉合多邊形形成算法。該算法直接讀取多段線的坐標點,通過IFeatureclass接口的CreateFeature方法直接創建。
(2)接邊多邊形自動閉合算法。該算法將斷在內圖廓上的多邊形通過判斷與內圖廓的關系實現自動閉合。
(3)內圖廓生成算法。該算法目前主要完成根據天津市1990年任意直角坐標系1∶2 000地形圖分幅圖幅號計算并返回內圖廓的幾何圖形(IGeometry)。
(4)回字形多邊形處理算法。由于數據字典規定回字形多邊形沒有內框架線(BOUND),該算法通過判斷一個小多邊形完全落在一個大多邊形中,用小多邊形剪切(Clip)大多邊形得到。
(5)接邊算法。該算法主要是通過內圖廓生成算法返回內圖廓引導搜尋圖廓線兩邊的地物,把屬性一致的有共享點的線或有共享邊的面合并。如圖2所示,一段河流分布在4幅地形圖中,需要自動接邊。

圖2 接邊示意圖
2.4 數據提取模塊
數據提取模塊主要是根據規則庫提取實體信息,按客戶標準寫入目標數據庫。數據提取模塊還有一個很重要的功能是完成部分實體的幾何圖形的轉變。
標準數據庫是依據數據字典設計的,客戶標準可能只需要部分地物及其屬性項,比如本項目《濱海新區規劃與建設管理系統數據標準》涵蓋了大部分地物及屬性項,并且部分地物的編碼不一樣,部分字段名稱也不一樣,需要根據轉換規則表進行過濾,根據字段映射表轉換屬性。轉換規則如表4所示。

轉換規則表 表4
在標準數據庫和目標數據庫之間建立了轉換關系類。轉換關系類首先確定某類編碼是否轉換,然后調用規則庫類的GetToCodeInfo()方法,得到包括從源編碼到目標編碼相應的要素名稱、要素集、要素類、屬性項即字段對應關系、是否有Z值及高程與Z值的自動轉換、幾何類型自動轉換等重要控制信息,最后轉換類把需要轉換的源實體圖形及屬性經轉換寫入目標數據庫。轉換關系類結構如下:



系統采用ArcGIS Engine 9.2+AutoCAD ObjectDBX 16+Visual C#.NET2005開發方式,快捷開發出了穩定的數據轉換系統。系統正確處理了天津市濱海新區行政區域內的3511幅1∶2 000 DWG格式地形圖,得到了單幅的地理信息系統數據(GeoDataBase Access格式),并實現自動接邊,拼接成了整幅數據,得到了符合數據字典要求的單幅和整幅兩種數據成果;繼而,將標準成果提取轉換成了符合《濱海新區規劃與建設管理系統數據標準》的客戶標準數據,交付客戶使用。系統實現了預期功能,為制圖數據和系統數據自動相互轉換積淀了經驗。
系統運行界面如圖3。

圖3 系統運行界面
參考資料
[1]ArcGIS Engine Developer Guide.ESRI Press,2004
[2]ArcGIS Desktop Developer Guide.ESRI Press,2004
The Design And Implementation of Data Convert System Based on Object DBX And ArcGIS Engine
Liu WeiGuo
(Tianjin Institute of Surveying and Mapping,Tianjin 300381,China)
This paper firstly introduced some basic technologies of Data Conversion System such as Data Dictionary,and then emphatically introduced the designation and realization of each function module of the Data Conversion System,which can convert topographic map of DWG format as Data Dictionary required,into GIS(Geographic Information System)database of GeoDataBase(Access)format,and finally presented some results of the System.
Data Dictionary;Cartographic Data;GIS Data;Conversion
1672-8262(2010)02-41-05
P208
B
2009—11—28
劉衛國(1960—),高級工程師,主要從事數字地圖的制作與開發,同時負責數字地圖成果質量的控制和監督工作。