張燕,唐相楨(重慶市勘測院,重慶 400020)
MicroStation圖形數據到ArcGIS數據轉換方法的研究
張燕?,唐相楨
(重慶市勘測院,重慶 400020)
摘 要:針對在GIS項目建設過程中,ArcGIS軟件應用廣泛,很多用戶都有將自有圖形數據轉到ArcGIS數據的需求,分析了MicroStation到ArcGIS數據轉換過程中存在的問題,提出通過研發程序,借助中間數據格式的方法,實現了MicroStation數據向ArcGIS Geodatabase的自動化無損轉換。
關鍵詞:MicroStation;DGN文件;ArcGIS;數據轉換
近年來,GIS應用已經逐步深入到各行各業,數據建庫和地理制圖作為應用中兩大方向,也使得測繪行業軟件各有側重。實際應用中,ArcGIS因其大而全的功能,成為行業通用的GIS軟件,數據格式也日漸成為行業中的通用格式,與計算機輔助制圖軟件相比,Arc-GIS軟件在空間數據管理、分析統計等方面功能強大,但其制圖編輯效率低,操控性等較難滿足測繪單位需求[1]。相對來說,測繪單位更偏好于使用具備友好的交互界面的專業制圖軟件,它們囊括了大量快捷靈活的數據采編功能,有強大的圖形表達能力,能快速實現制圖的目的,但其缺陷在于強調圖面的表達,在空間數據的管理和分析利用上較弱。綜合考慮之下,很多用戶選擇使用如MicroStation、CAD、CASS等專業制圖軟件采編制作地圖,然后再轉換到ArcGIS的作業方式。
筆者工作單位多年來一直采用MicroStation做前期數據采集和地形圖生產,積累了大量的MicroStation DGN文件數據,在應用中不可避免需要轉換到ArcGIS Geodatabase。由于DGN文件數據的特殊性以及不同項目需求帶來的自定義擴展屬性的多樣性,使得簡單地借助ArcGIS自帶工具無法保證轉換的完整性。因此,通過考慮研發轉換工具,利用中間數據格式作為銜接,來實現DGN數據到Geodatabase數據的批量自動轉換,目前該方法和轉換軟件已成功應用于生產項目。
轉換方法上,若直接利用ArcGIS的數據導入,難以實現DGN文件數據轉入到指定的圖層,人工工作量大。DGN文件數據中,要素結構經過MicroStation二次開發后實現了擴展,支持要素自定義屬性字段。這種自定義擴展屬性無法被ArcGIS識別,同時也難以被FME這樣的轉換軟件識別,無法導入,會造成許多重要的數據信息丟失。因而,需要自行編寫軟件以滿足轉換需求。
MDL是MicroStation的二次開發工具,提供了在MicroStation里數據存取、操作等功能,開放性好;Arc-GIS Engine是ArcGIS的軟件開發產品,它提供了空間數據存取,空間分析等數據操作功能。
本文選擇MDL在MicroStation里進行開發,輸出中間交換數據,然后利用C# 2005結合ArcGIS Engine開發,完成從中間交換數據到ArcGIS Geodatabase數據的轉換。通過自定義開發,實現按照指定的數據結構對數據進行存儲,并實現大量DGN數據的批量自動轉換。
數據轉換之前,先利用質檢工具對DGN文件數據進行質量檢查,對存在的屬性和拓撲錯誤進行修改;質檢合格后,依據DGN要素層名、顏色到ArcGIS要素編碼之間的對照方案,用MDL研發的導出工具從DGN文件輸出中間數據交換文件,逐一記錄要素的編碼、層名、及其他擴展屬性,最后用ArcEngine研發的轉換工具讀取中間數據交換文件,輸出ArcGIS Geodatabase數據。轉換流程如圖1所示。

圖1 轉換流程圖
3.1要素對照
MicroStation DGN文件主要存儲要素的層、色、線型、單元名及注記內容大小等。文件以圖層組織數據。要素以圖層和顏色作為唯一標識,共分了70個圖層,對測量控制點、水系、居民地及設施、交通、管線、境界、地貌、植被與土質等要素進行表述。一個圖層下可以包含多種幾何類型。點類型由單元Cell、點Point表示;線類型由線串LineString、復雜線Complex LineString、曲線Curve、弧段Arc表示;面類型由簡單面Shape,復雜面Complex Shape,圓Circle,橢圓Ellipse表示。
在ArcGIS中按照要素大類分,大類下再按要素類型(點、線、面、注記)進行分層,共分為CPTP,CPTL, HYDP,HYDL,HYDA,RESP,RESL,RESA等40多個數據層,一個數據層代表唯一的數據幾何類型,層名末字母代表要素的類型:P代表點,L代表線,A代表面。屬性字段在每個數據類中單獨定義。
MicroStation地形圖側重于制圖數據,在數據屬性字段的設置上大多根據當時的項目需求制定的,無論在幾何類型或者屬性上,與ArcGIS成果要求的數據結構和需求都存在很大的差異,需要對兩種數據進行對照,建立兩套數據間的關聯。編碼對照表結構如表1所示。

編碼對照表結構 表1
在對照過程中,需要注意在MicroStation中要素的類型是否與要轉換的目標數據類型一致,如果有沖突,就需要進行額外的程序處理或人工處理。如DGN的注記要素需要轉換為點類型,就需要轉換程序對文本進行自動提取點的操作,并提取注記文本內容寫入屬性。如島要素在MicroStation中是單元,轉入到ArcGIS是面要素,這在轉換中也同樣需要額外處理。類似的情況需要在做對照時進行記錄,以利于在下一步編程時進行額外的編程處理。需要程序處理的類型轉換如表2所示。

類型對照表 表2
在屬性對照時,將DGN里已有的屬性盡可能對照到ArcGIS屬性字段,缺失的屬性通過DGN文件在輸出中間交換文件時進行自動提取,無法提取的屬性通過值默認或者由人工交互的方式進行填補。最終要求對照后的屬性與成果要求一致。屬性對照表結構如表3所示。

屬性對照表結構 表3
3.2中間數據格式轉換
在對DGN數據進行轉換之前需要運用程序對原始數據進行質量檢查,預防數據錯漏等問題,確保成果合格。主要包括以下幾個方面:
①分類編碼檢查:依據編碼對照表,對DGN數據的層色合法性(是否在對照關系里有對應的編碼存在),和要素類型進行檢查。
②數據的拓撲檢查:筆者在MicroStation里自行研發了拓撲檢查小工具,對重復地物、極短線、極小面、自相交線、線交叉,面重疊、懸掛點等進行檢查和修復處理。
③擴展屬性檢查:結合屬性對照表,對擴展屬性字段類型,內容進行規范性檢查。
待質量檢查通過后,運用MicroStation MDL研發程序,輸出中間數據交換文件。程序逐一訪問DGN文件中的要素,獲取要素的圖層和顏色信息,然后到編碼對照表中,找到對應層色的表項,獲取相應的編碼、GIS圖層名。然后按屬性對照表獲取要素的自定義屬性,依據定義的格式寫入中間數據交換文件。
(1)點要素
在DGN中,點要素主要對應于單元Cell,包含普通單元、旋轉單元、縮放單元。實際操作中要求提取單元的層、色基本屬性,單元的定位點、旋轉角度、縮放比例等圖形信息,填寫到對應的擴展屬性中;并將各項擴展屬性,用以特殊字符分割的字符串輸出。
點要素中間格式如下:
POINTBEGIN
ID,GB編碼,要素分層
X,Y,Z
屬性1^#屬性2^#屬性3^#
POINTEND
(2)線要素
在DGN中,線要素主要對應于簡單線串、復雜線、弧段、曲線、多線等。實際操作中需要針對不同的類型進行線結點坐標的讀取。對于弧段、曲線,需要將其折線化,進行輸出,以保證線轉入ArcGIS變形較小;復雜線需要遍歷其下的子線串,將其連接成為一條整線;對于多線,需要分別對其邊線分別拆分為單一的線串要素進行輸出;同時提取要素的層、色基本屬性,及各項擴展屬性。
線要素中間格式如下:
POLYLINEBEGIN
ID,GB編碼,要素分層
0,X1,Y1,Z1
1,X2,Y2,Z2
...
屬性1^#屬性2^#屬性3^#...
POLYLINEEND
(3)面要素
在DGN中,面要素主要對應于多邊形、復雜面、圓、橢圓、島單元等。實際操作中需要針對不同的面類型進行線結點坐標的讀取。對于圓、橢圓,需要將其邊緣線折線化,進行輸出,以保證線轉入ArcGIS變形較小;復雜面需要遍歷其下的構造線要素,將其連接成為一條閉合的坐標序列;對于島單元,需要遍歷結構下的子面,先讀取實體面,再讀取空心面,在中間交換文件中按照索引順序輸出各子面的坐標序列,以用于在ArcGIS中重構。在DGN中面的坐標序列,起點和終點是重復的,在輸出需要將終點重復點清理掉,最后提取要素的層、色基本屬性,及各項擴展屬性。
對于比較特殊的面要素,如依比例的斜坡坎崖、臺階等,均作為MicroStation的用戶自定義數據結構,在轉換程序中,過濾掉其制圖的圖形數據,提取骨架面線進行輸出。以陡坎為例,在DGN中,陡坎要素的上緣線和投影線均放在同一圖層,以不同顏色區分。上緣線可以直接通過層色提取得到,下緣線無法直接獲得,需要程序從陡坎投影線提取。首先,以上緣線的指定緩沖距離和層色限制為搜索條件得到陡坎投影線,將各投影線與上緣線的交點依次排序,然后將排好序的投影線的另一邊端點連接起來,就構成了陡坎的下緣線,最后將上下緣線連接閉合就構成了陡坎范圍面。
面要素中間格式如下:
POLYGONBEGIN
ID,GB編碼,要素分層
0
0,X1,Y1,Z1
1,X2,Y2,Z2
…
1
0,X1,Y1,Z1
1,X2,Y2,Z2
…
2
0,X1,Y1,Z1
1,X2,Y2,Z2
…
屬性1^#屬性2^#屬性3^#…
POLYGONEND
(4)注記要素
注記要素最終在ArcGIS中以點要素表示,所以中間數據交換文件中主要提取注記的點位坐標和注記文本內容。在DGN中,線要素主要對應于文本、文本節點等。同樣需要分別針對兩種類型進行提取,文本節點在DGN中通常應用于拉線注記、曲線注記,用以兼顧制圖的效果以及整體性。文本節點通常以第一個字的定位點作為整個注記的坐標點位。
注記要素中間格式如下:
ANNOTATIONBEGIN
ID,GB編碼,要素分層
X,Y,Z
屬性1^#屬性2^#屬性3^#...
ANNOTATIONEND
在輸出中間數據交換文件的過程中,未能轉換的數據或者無需轉換的制圖圖形數據,會自動生成轉換過程圖形文件,以備檢查。
3.3中間數據轉Personal Geodatabase
在進行Geodatabase轉換之前,需要先制作數據模板.方法是在ArcCatalog工作目錄中,新建“personal geodatabase”,數據格式為MDB。按照成果要求,對為每一個ArcGIS圖層新建要素類,設置要素名稱、數據類型、坐標系,并設置屬性字段。
利用ArcEngine研發程序,利用數據模板新建Geodatabase成果文件,讀取中間數據交換文件,識別點、線、面、注記要素,獲取要素的坐標位置、轉換圖層名、屬性,重構ARCGIS要素寫入Geodatabase成果文件,最后刪除空的圖層。
使用筆者的轉換方法,能夠自動完成絕大部分的轉換工作。用戶只需在輸出中間交換數據環節,對轉換過程文件進行檢查,對輸出的錯漏數據進行查看和處理,處理完成后再重新轉換即可。在執行過程中針對大批量轉換,通常是先批量轉中間交換數據,再批量轉Geodatabase,平均一幅1∶5 000地形圖約耗時2 min。圖2為DGN數據轉換前后對比圖。

圖2 DGN數據轉換前后對比圖
本文提出的方法解決了DGN制圖數據到ArcGIS數據的自動轉換問題,轉換內容完整,較好地保留了數據的幾何信息和屬性信息,不存在數據變形或屬性信息丟失的情況。開發的程序經過項目實際生產的檢驗,運行穩定,提高了工作效率。轉換根據需求對對照表進行配置,適用于各種比例尺MicroStation地形圖的自動批量轉換處理,具有較好的實用性和擴展性。
參考文獻
[1] 楊曉超.MapGIS向ArcGIS數據轉換過程中若干問題[J].地理空間信息,2012(10):121~123.
[2] 楊帆,薄成.基于FME的DWG數據到ArcGIS轉換的應用研究[J].測繪科學,2012,37(2):143~145.
[3] 茍浩遠,胡元亮.ArcGIS中數字化地形圖快速入庫的方法與技巧[J].地理空間信息,2012,10(3):62~64.
[4] 丁俊杰,薄偉偉,張戈蘭.GIS數據建庫與地圖制圖一體化方案研究與實現[J].華北水利水電學院學報,2013, 34(6):69~72.
[5] 畢云華,馬霖,羅明.基于ArcEngine的清華山維與Arc-GIS數據轉換的設計[J].地理空間信息,2013,11(2): 62~65.
[6] 王波,張亮,孫霞.CAD向GIS數據的轉換入庫[J].地理空間信息,2011,9(3):24~26.
[7] 鄭偉,黃明,朱曙光等.排水管網CAD數據導入ArcGIS的方法研究[J].安徽建筑工業學院學報,2012,20(5): 63~67.
[8] 張省,戚文來,范維鋒.DLG建庫數據到制圖數據自動轉換程序的研究與實現[J].測繪與空間地理信息,2013, 36(1):91~93.
Research on the Data Conversion From MicroStation to ArcGIS
Zhang Yan,Tang Xiangzhen
(Chongqing Survey Institute,Chongqing 400020,China)
Abstract:In the process of GIS project,ArcGIS software is widely used.There is strong demand for converting the other format data to ArcGIS data.This paper analyzes the problems in MicroStation to GIS data conversion process,put forward the method of using the intermediate data and program development,to realize automatic translation from MicroStation data to Geodatabase data in ArcGIS.
Key words:MicroStation;DGN file;ArcGIS;data conversion
文章編號:1672-8262(2015)01-26-04中圖分類號:P208.1
文獻標識碼:A
收稿日期:?2014—07—18
作者簡介:張燕(1979—),女,高級工程師,從事GIS系統應用與開發工作。
基金項目:住房和城鄉建設部科研開發項目(2014-K8-038)