張燕,唐相楨(重慶市勘測(cè)院,重慶 400020)
MicroStation圖形數(shù)據(jù)到ArcGIS數(shù)據(jù)轉(zhuǎn)換方法的研究
張燕?,唐相楨
(重慶市勘測(cè)院,重慶 400020)
摘 要:針對(duì)在GIS項(xiàng)目建設(shè)過(guò)程中,ArcGIS軟件應(yīng)用廣泛,很多用戶(hù)都有將自有圖形數(shù)據(jù)轉(zhuǎn)到ArcGIS數(shù)據(jù)的需求,分析了MicroStation到ArcGIS數(shù)據(jù)轉(zhuǎn)換過(guò)程中存在的問(wèn)題,提出通過(guò)研發(fā)程序,借助中間數(shù)據(jù)格式的方法,實(shí)現(xiàn)了MicroStation數(shù)據(jù)向ArcGIS Geodatabase的自動(dòng)化無(wú)損轉(zhuǎn)換。
關(guān)鍵詞:MicroStation;DGN文件;ArcGIS;數(shù)據(jù)轉(zhuǎn)換
近年來(lái),GIS應(yīng)用已經(jīng)逐步深入到各行各業(yè),數(shù)據(jù)建庫(kù)和地理制圖作為應(yīng)用中兩大方向,也使得測(cè)繪行業(yè)軟件各有側(cè)重。實(shí)際應(yīng)用中,ArcGIS因其大而全的功能,成為行業(yè)通用的GIS軟件,數(shù)據(jù)格式也日漸成為行業(yè)中的通用格式,與計(jì)算機(jī)輔助制圖軟件相比,Arc-GIS軟件在空間數(shù)據(jù)管理、分析統(tǒng)計(jì)等方面功能強(qiáng)大,但其制圖編輯效率低,操控性等較難滿(mǎn)足測(cè)繪單位需求[1]。相對(duì)來(lái)說(shuō),測(cè)繪單位更偏好于使用具備友好的交互界面的專(zhuān)業(yè)制圖軟件,它們囊括了大量快捷靈活的數(shù)據(jù)采編功能,有強(qiáng)大的圖形表達(dá)能力,能快速實(shí)現(xiàn)制圖的目的,但其缺陷在于強(qiáng)調(diào)圖面的表達(dá),在空間數(shù)據(jù)的管理和分析利用上較弱。綜合考慮之下,很多用戶(hù)選擇使用如MicroStation、CAD、CASS等專(zhuān)業(yè)制圖軟件采編制作地圖,然后再轉(zhuǎn)換到ArcGIS的作業(yè)方式。
筆者工作單位多年來(lái)一直采用MicroStation做前期數(shù)據(jù)采集和地形圖生產(chǎn),積累了大量的MicroStation DGN文件數(shù)據(jù),在應(yīng)用中不可避免需要轉(zhuǎn)換到ArcGIS Geodatabase。由于DGN文件數(shù)據(jù)的特殊性以及不同項(xiàng)目需求帶來(lái)的自定義擴(kuò)展屬性的多樣性,使得簡(jiǎn)單地借助ArcGIS自帶工具無(wú)法保證轉(zhuǎn)換的完整性。因此,通過(guò)考慮研發(fā)轉(zhuǎn)換工具,利用中間數(shù)據(jù)格式作為銜接,來(lái)實(shí)現(xiàn)DGN數(shù)據(jù)到Geodatabase數(shù)據(jù)的批量自動(dòng)轉(zhuǎn)換,目前該方法和轉(zhuǎn)換軟件已成功應(yīng)用于生產(chǎn)項(xiàng)目。
轉(zhuǎn)換方法上,若直接利用ArcGIS的數(shù)據(jù)導(dǎo)入,難以實(shí)現(xiàn)DGN文件數(shù)據(jù)轉(zhuǎn)入到指定的圖層,人工工作量大。DGN文件數(shù)據(jù)中,要素結(jié)構(gòu)經(jīng)過(guò)MicroStation二次開(kāi)發(fā)后實(shí)現(xiàn)了擴(kuò)展,支持要素自定義屬性字段。這種自定義擴(kuò)展屬性無(wú)法被ArcGIS識(shí)別,同時(shí)也難以被FME這樣的轉(zhuǎn)換軟件識(shí)別,無(wú)法導(dǎo)入,會(huì)造成許多重要的數(shù)據(jù)信息丟失。因而,需要自行編寫(xiě)軟件以滿(mǎn)足轉(zhuǎn)換需求。
MDL是MicroStation的二次開(kāi)發(fā)工具,提供了在MicroStation里數(shù)據(jù)存取、操作等功能,開(kāi)放性好;Arc-GIS Engine是ArcGIS的軟件開(kāi)發(fā)產(chǎn)品,它提供了空間數(shù)據(jù)存取,空間分析等數(shù)據(jù)操作功能。
本文選擇MDL在MicroStation里進(jìn)行開(kāi)發(fā),輸出中間交換數(shù)據(jù),然后利用C# 2005結(jié)合ArcGIS Engine開(kāi)發(fā),完成從中間交換數(shù)據(jù)到ArcGIS Geodatabase數(shù)據(jù)的轉(zhuǎn)換。通過(guò)自定義開(kāi)發(fā),實(shí)現(xiàn)按照指定的數(shù)據(jù)結(jié)構(gòu)對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ),并實(shí)現(xiàn)大量DGN數(shù)據(jù)的批量自動(dòng)轉(zhuǎn)換。
數(shù)據(jù)轉(zhuǎn)換之前,先利用質(zhì)檢工具對(duì)DGN文件數(shù)據(jù)進(jìn)行質(zhì)量檢查,對(duì)存在的屬性和拓?fù)溴e(cuò)誤進(jìn)行修改;質(zhì)檢合格后,依據(jù)DGN要素層名、顏色到ArcGIS要素編碼之間的對(duì)照方案,用MDL研發(fā)的導(dǎo)出工具從DGN文件輸出中間數(shù)據(jù)交換文件,逐一記錄要素的編碼、層名、及其他擴(kuò)展屬性,最后用ArcEngine研發(fā)的轉(zhuǎn)換工具讀取中間數(shù)據(jù)交換文件,輸出ArcGIS Geodatabase數(shù)據(jù)。轉(zhuǎn)換流程如圖1所示。
圖1 轉(zhuǎn)換流程圖
3.1要素對(duì)照
MicroStation DGN文件主要存儲(chǔ)要素的層、色、線型、單元名及注記內(nèi)容大小等。文件以圖層組織數(shù)據(jù)。要素以圖層和顏色作為唯一標(biāo)識(shí),共分了70個(gè)圖層,對(duì)測(cè)量控制點(diǎn)、水系、居民地及設(shè)施、交通、管線、境界、地貌、植被與土質(zhì)等要素進(jìn)行表述。一個(gè)圖層下可以包含多種幾何類(lèi)型。點(diǎn)類(lèi)型由單元Cell、點(diǎn)Point表示;線類(lèi)型由線串LineString、復(fù)雜線Complex LineString、曲線Curve、弧段Arc表示;面類(lèi)型由簡(jiǎn)單面Shape,復(fù)雜面Complex Shape,圓Circle,橢圓Ellipse表示。
在ArcGIS中按照要素大類(lèi)分,大類(lèi)下再按要素類(lèi)型(點(diǎn)、線、面、注記)進(jìn)行分層,共分為CPTP,CPTL, HYDP,HYDL,HYDA,RESP,RESL,RESA等40多個(gè)數(shù)據(jù)層,一個(gè)數(shù)據(jù)層代表唯一的數(shù)據(jù)幾何類(lèi)型,層名末字母代表要素的類(lèi)型:P代表點(diǎn),L代表線,A代表面。屬性字段在每個(gè)數(shù)據(jù)類(lèi)中單獨(dú)定義。
MicroStation地形圖側(cè)重于制圖數(shù)據(jù),在數(shù)據(jù)屬性字段的設(shè)置上大多根據(jù)當(dāng)時(shí)的項(xiàng)目需求制定的,無(wú)論在幾何類(lèi)型或者屬性上,與ArcGIS成果要求的數(shù)據(jù)結(jié)構(gòu)和需求都存在很大的差異,需要對(duì)兩種數(shù)據(jù)進(jìn)行對(duì)照,建立兩套數(shù)據(jù)間的關(guān)聯(lián)。編碼對(duì)照表結(jié)構(gòu)如表1所示。
編碼對(duì)照表結(jié)構(gòu) 表1
在對(duì)照過(guò)程中,需要注意在MicroStation中要素的類(lèi)型是否與要轉(zhuǎn)換的目標(biāo)數(shù)據(jù)類(lèi)型一致,如果有沖突,就需要進(jìn)行額外的程序處理或人工處理。如DGN的注記要素需要轉(zhuǎn)換為點(diǎn)類(lèi)型,就需要轉(zhuǎn)換程序?qū)ξ谋具M(jìn)行自動(dòng)提取點(diǎn)的操作,并提取注記文本內(nèi)容寫(xiě)入屬性。如島要素在MicroStation中是單元,轉(zhuǎn)入到ArcGIS是面要素,這在轉(zhuǎn)換中也同樣需要額外處理。類(lèi)似的情況需要在做對(duì)照時(shí)進(jìn)行記錄,以利于在下一步編程時(shí)進(jìn)行額外的編程處理。需要程序處理的類(lèi)型轉(zhuǎn)換如表2所示。
類(lèi)型對(duì)照表 表2
在屬性對(duì)照時(shí),將DGN里已有的屬性盡可能對(duì)照到ArcGIS屬性字段,缺失的屬性通過(guò)DGN文件在輸出中間交換文件時(shí)進(jìn)行自動(dòng)提取,無(wú)法提取的屬性通過(guò)值默認(rèn)或者由人工交互的方式進(jìn)行填補(bǔ)。最終要求對(duì)照后的屬性與成果要求一致。屬性對(duì)照表結(jié)構(gòu)如表3所示。
屬性對(duì)照表結(jié)構(gòu) 表3
3.2中間數(shù)據(jù)格式轉(zhuǎn)換
在對(duì)DGN數(shù)據(jù)進(jìn)行轉(zhuǎn)換之前需要運(yùn)用程序?qū)υ紨?shù)據(jù)進(jìn)行質(zhì)量檢查,預(yù)防數(shù)據(jù)錯(cuò)漏等問(wèn)題,確保成果合格。主要包括以下幾個(gè)方面:
①分類(lèi)編碼檢查:依據(jù)編碼對(duì)照表,對(duì)DGN數(shù)據(jù)的層色合法性(是否在對(duì)照關(guān)系里有對(duì)應(yīng)的編碼存在),和要素類(lèi)型進(jìn)行檢查。
②數(shù)據(jù)的拓?fù)錂z查:筆者在MicroStation里自行研發(fā)了拓?fù)錂z查小工具,對(duì)重復(fù)地物、極短線、極小面、自相交線、線交叉,面重疊、懸掛點(diǎn)等進(jìn)行檢查和修復(fù)處理。
③擴(kuò)展屬性檢查:結(jié)合屬性對(duì)照表,對(duì)擴(kuò)展屬性字段類(lèi)型,內(nèi)容進(jìn)行規(guī)范性檢查。
待質(zhì)量檢查通過(guò)后,運(yùn)用MicroStation MDL研發(fā)程序,輸出中間數(shù)據(jù)交換文件。程序逐一訪問(wèn)DGN文件中的要素,獲取要素的圖層和顏色信息,然后到編碼對(duì)照表中,找到對(duì)應(yīng)層色的表項(xiàng),獲取相應(yīng)的編碼、GIS圖層名。然后按屬性對(duì)照表獲取要素的自定義屬性,依據(jù)定義的格式寫(xiě)入中間數(shù)據(jù)交換文件。
(1)點(diǎn)要素
在DGN中,點(diǎn)要素主要對(duì)應(yīng)于單元Cell,包含普通單元、旋轉(zhuǎn)單元、縮放單元。實(shí)際操作中要求提取單元的層、色基本屬性,單元的定位點(diǎn)、旋轉(zhuǎn)角度、縮放比例等圖形信息,填寫(xiě)到對(duì)應(yīng)的擴(kuò)展屬性中;并將各項(xiàng)擴(kuò)展屬性,用以特殊字符分割的字符串輸出。
點(diǎn)要素中間格式如下:
POINTBEGIN
ID,GB編碼,要素分層
X,Y,Z
屬性1^#屬性2^#屬性3^#
POINTEND
(2)線要素
在DGN中,線要素主要對(duì)應(yīng)于簡(jiǎn)單線串、復(fù)雜線、弧段、曲線、多線等。實(shí)際操作中需要針對(duì)不同的類(lèi)型進(jìn)行線結(jié)點(diǎn)坐標(biāo)的讀取。對(duì)于弧段、曲線,需要將其折線化,進(jìn)行輸出,以保證線轉(zhuǎn)入ArcGIS變形較小;復(fù)雜線需要遍歷其下的子線串,將其連接成為一條整線;對(duì)于多線,需要分別對(duì)其邊線分別拆分為單一的線串要素進(jìn)行輸出;同時(shí)提取要素的層、色基本屬性,及各項(xiàng)擴(kuò)展屬性。
線要素中間格式如下:
POLYLINEBEGIN
ID,GB編碼,要素分層
0,X1,Y1,Z1
1,X2,Y2,Z2
...
屬性1^#屬性2^#屬性3^#...
POLYLINEEND
(3)面要素
在DGN中,面要素主要對(duì)應(yīng)于多邊形、復(fù)雜面、圓、橢圓、島單元等。實(shí)際操作中需要針對(duì)不同的面類(lèi)型進(jìn)行線結(jié)點(diǎn)坐標(biāo)的讀取。對(duì)于圓、橢圓,需要將其邊緣線折線化,進(jìn)行輸出,以保證線轉(zhuǎn)入ArcGIS變形較小;復(fù)雜面需要遍歷其下的構(gòu)造線要素,將其連接成為一條閉合的坐標(biāo)序列;對(duì)于島單元,需要遍歷結(jié)構(gòu)下的子面,先讀取實(shí)體面,再讀取空心面,在中間交換文件中按照索引順序輸出各子面的坐標(biāo)序列,以用于在ArcGIS中重構(gòu)。在DGN中面的坐標(biāo)序列,起點(diǎn)和終點(diǎn)是重復(fù)的,在輸出需要將終點(diǎn)重復(fù)點(diǎn)清理掉,最后提取要素的層、色基本屬性,及各項(xiàng)擴(kuò)展屬性。
對(duì)于比較特殊的面要素,如依比例的斜坡坎崖、臺(tái)階等,均作為MicroStation的用戶(hù)自定義數(shù)據(jù)結(jié)構(gòu),在轉(zhuǎn)換程序中,過(guò)濾掉其制圖的圖形數(shù)據(jù),提取骨架面線進(jìn)行輸出。以陡坎為例,在DGN中,陡坎要素的上緣線和投影線均放在同一圖層,以不同顏色區(qū)分。上緣線可以直接通過(guò)層色提取得到,下緣線無(wú)法直接獲得,需要程序從陡坎投影線提取。首先,以上緣線的指定緩沖距離和層色限制為搜索條件得到陡坎投影線,將各投影線與上緣線的交點(diǎn)依次排序,然后將排好序的投影線的另一邊端點(diǎn)連接起來(lái),就構(gòu)成了陡坎的下緣線,最后將上下緣線連接閉合就構(gòu)成了陡坎范圍面。
面要素中間格式如下:
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中以點(diǎn)要素表示,所以中間數(shù)據(jù)交換文件中主要提取注記的點(diǎn)位坐標(biāo)和注記文本內(nèi)容。在DGN中,線要素主要對(duì)應(yīng)于文本、文本節(jié)點(diǎn)等。同樣需要分別針對(duì)兩種類(lèi)型進(jìn)行提取,文本節(jié)點(diǎn)在DGN中通常應(yīng)用于拉線注記、曲線注記,用以兼顧制圖的效果以及整體性。文本節(jié)點(diǎn)通常以第一個(gè)字的定位點(diǎn)作為整個(gè)注記的坐標(biāo)點(diǎn)位。
注記要素中間格式如下:
ANNOTATIONBEGIN
ID,GB編碼,要素分層
X,Y,Z
屬性1^#屬性2^#屬性3^#...
ANNOTATIONEND
在輸出中間數(shù)據(jù)交換文件的過(guò)程中,未能轉(zhuǎn)換的數(shù)據(jù)或者無(wú)需轉(zhuǎn)換的制圖圖形數(shù)據(jù),會(huì)自動(dòng)生成轉(zhuǎn)換過(guò)程圖形文件,以備檢查。
3.3中間數(shù)據(jù)轉(zhuǎn)Personal Geodatabase
在進(jìn)行Geodatabase轉(zhuǎn)換之前,需要先制作數(shù)據(jù)模板.方法是在ArcCatalog工作目錄中,新建“personal geodatabase”,數(shù)據(jù)格式為MDB。按照成果要求,對(duì)為每一個(gè)ArcGIS圖層新建要素類(lèi),設(shè)置要素名稱(chēng)、數(shù)據(jù)類(lèi)型、坐標(biāo)系,并設(shè)置屬性字段。
利用ArcEngine研發(fā)程序,利用數(shù)據(jù)模板新建Geodatabase成果文件,讀取中間數(shù)據(jù)交換文件,識(shí)別點(diǎn)、線、面、注記要素,獲取要素的坐標(biāo)位置、轉(zhuǎn)換圖層名、屬性,重構(gòu)ARCGIS要素寫(xiě)入Geodatabase成果文件,最后刪除空的圖層。
使用筆者的轉(zhuǎn)換方法,能夠自動(dòng)完成絕大部分的轉(zhuǎn)換工作。用戶(hù)只需在輸出中間交換數(shù)據(jù)環(huán)節(jié),對(duì)轉(zhuǎn)換過(guò)程文件進(jìn)行檢查,對(duì)輸出的錯(cuò)漏數(shù)據(jù)進(jìn)行查看和處理,處理完成后再重新轉(zhuǎn)換即可。在執(zhí)行過(guò)程中針對(duì)大批量轉(zhuǎn)換,通常是先批量轉(zhuǎn)中間交換數(shù)據(jù),再批量轉(zhuǎn)Geodatabase,平均一幅1∶5 000地形圖約耗時(shí)2 min。圖2為DGN數(shù)據(jù)轉(zhuǎn)換前后對(duì)比圖。
圖2 DGN數(shù)據(jù)轉(zhuǎn)換前后對(duì)比圖
本文提出的方法解決了DGN制圖數(shù)據(jù)到ArcGIS數(shù)據(jù)的自動(dòng)轉(zhuǎn)換問(wèn)題,轉(zhuǎn)換內(nèi)容完整,較好地保留了數(shù)據(jù)的幾何信息和屬性信息,不存在數(shù)據(jù)變形或?qū)傩孕畔G失的情況。開(kāi)發(fā)的程序經(jīng)過(guò)項(xiàng)目實(shí)際生產(chǎn)的檢驗(yàn),運(yùn)行穩(wěn)定,提高了工作效率。轉(zhuǎn)換根據(jù)需求對(duì)對(duì)照表進(jìn)行配置,適用于各種比例尺M(jìn)icroStation地形圖的自動(dòng)批量轉(zhuǎn)換處理,具有較好的實(shí)用性和擴(kuò)展性。
參考文獻(xiàn)
[1] 楊曉超.MapGIS向ArcGIS數(shù)據(jù)轉(zhuǎn)換過(guò)程中若干問(wèn)題[J].地理空間信息,2012(10):121~123.
[2] 楊帆,薄成.基于FME的DWG數(shù)據(jù)到ArcGIS轉(zhuǎn)換的應(yīng)用研究[J].測(cè)繪科學(xué),2012,37(2):143~145.
[3] 茍浩遠(yuǎn),胡元亮.ArcGIS中數(shù)字化地形圖快速入庫(kù)的方法與技巧[J].地理空間信息,2012,10(3):62~64.
[4] 丁俊杰,薄偉偉,張戈蘭.GIS數(shù)據(jù)建庫(kù)與地圖制圖一體化方案研究與實(shí)現(xiàn)[J].華北水利水電學(xué)院學(xué)報(bào),2013, 34(6):69~72.
[5] 畢云華,馬霖,羅明.基于ArcEngine的清華山維與Arc-GIS數(shù)據(jù)轉(zhuǎn)換的設(shè)計(jì)[J].地理空間信息,2013,11(2): 62~65.
[6] 王波,張亮,孫霞.CAD向GIS數(shù)據(jù)的轉(zhuǎn)換入庫(kù)[J].地理空間信息,2011,9(3):24~26.
[7] 鄭偉,黃明,朱曙光等.排水管網(wǎng)CAD數(shù)據(jù)導(dǎo)入ArcGIS的方法研究[J].安徽建筑工業(yè)學(xué)院學(xué)報(bào),2012,20(5): 63~67.
[8] 張省,戚文來(lái),范維鋒.DLG建庫(kù)數(shù)據(jù)到制圖數(shù)據(jù)自動(dòng)轉(zhuǎn)換程序的研究與實(shí)現(xiàn)[J].測(cè)繪與空間地理信息,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
文章編號(hào):1672-8262(2015)01-26-04中圖分類(lèi)號(hào):P208.1
文獻(xiàn)標(biāo)識(shí)碼:A
收稿日期:?2014—07—18
作者簡(jiǎn)介:張燕(1979—),女,高級(jí)工程師,從事GIS系統(tǒng)應(yīng)用與開(kāi)發(fā)工作。
基金項(xiàng)目:住房和城鄉(xiāng)建設(shè)部科研開(kāi)發(fā)項(xiàng)目(2014-K8-038)