李海旭
(珠海市測繪院,廣東珠海 519000)
從MicroStation數(shù)據(jù)格式到ArcGIS數(shù)據(jù)格式轉(zhuǎn)換的研究
李海旭?
(珠海市測繪院,廣東珠海 519000)
隨著GIS技術(shù)的蓬勃發(fā)展,GIS在各個領(lǐng)域的應(yīng)用日益廣泛,許多行業(yè)對GIS數(shù)據(jù)的需求不斷擴大,如何將現(xiàn)有的測繪數(shù)據(jù)或制圖數(shù)據(jù)轉(zhuǎn)換為GIS數(shù)據(jù)是獲得GIS數(shù)據(jù)的有效捷徑,本文通過分析MicroStation的數(shù)據(jù)格式,提出了如何利用軟件的二次開發(fā)接口來實現(xiàn)數(shù)據(jù)格式轉(zhuǎn)換的可行性方法,同時討論了該方法具有可擴展性。
MicroStation;ArcGIS;二次開發(fā);數(shù)據(jù)轉(zhuǎn)換
MicroStation作為國際優(yōu)秀的圖形設(shè)計平臺,被國內(nèi)許多城市勘測單位所采用,主要用于測繪生產(chǎn)和建庫,而ArcGIS作為國際GIS領(lǐng)域的頂級優(yōu)秀軟件,被廣泛地應(yīng)用于各個行業(yè),由此對GIS數(shù)據(jù)的需求日益增加。如果將現(xiàn)有的測繪數(shù)據(jù)及制圖數(shù)據(jù)全部或部分轉(zhuǎn)換為GIS數(shù)據(jù),在很大程度上節(jié)約了人力和物力,是加工制作GIS數(shù)據(jù)的有效捷徑,對促進(jìn)行業(yè)GIS的應(yīng)用和發(fā)展具有重要的實際意義。
本文先對MicroStation及ArcGIS數(shù)據(jù)進(jìn)行分析,然后利用MicroStation的MDL二次開發(fā)接口將圖形信息轉(zhuǎn)換為可用于交互的明碼信息,再利用ArcGIS軟件的二次開發(fā)接口將所提取的明碼信息轉(zhuǎn)換成ArcGIS的Shape矢量數(shù)據(jù)格式,這一轉(zhuǎn)換方法可應(yīng)用于同類軟件數(shù)據(jù)格式的轉(zhuǎn)換。
MicroStation是Bentley公司推出的一款功能強大的圖形設(shè)計平臺,MicroStation的數(shù)據(jù)格式為 Dgn文件。一個Dgn文件包含一個或多個模型,每個模型由直線、圓弧和多邊形等元素表示。
ArcGIS支持的矢量數(shù)據(jù)格式包括 Shape、Coverage、Geodatabase,Shape數(shù)據(jù)是ArcView 3.x的原生數(shù)據(jù)格式,屬于簡單要素類,用點、線、多邊形存儲要素的形狀,具有簡單、快速顯示的優(yōu)點。Shape數(shù)據(jù)一般由?.shp、?.shx、?.dbf 3個文件組成。空間信息和屬性信息分別存儲于?.shp和?.dbf,空間索引存儲在?. shx文件中。
本文所要研究討論的就是要將 MicroStation的 Dgn數(shù)據(jù)格式通過二次開發(fā)轉(zhuǎn)換為ArcGIS的Shape矢量數(shù)據(jù)格式。
MicroStation數(shù)據(jù)格式(?.dgn)轉(zhuǎn)換為ArcGIS的Shape矢量數(shù)據(jù)格式流程如圖1所示。
圖1 數(shù)據(jù)格式轉(zhuǎn)換流程圖
4.1 明碼文件說明
明碼文件是將地圖文件的空間信息如坐標(biāo)、空間關(guān)系及其他相關(guān)的專題信息提取出來,按一定的順序存儲于文本文件中,以供二次開發(fā)或其他數(shù)據(jù)處理使用。
有些軟件(諸如MicroStation)的明碼文件信息提取的類別及存儲格式可以由開發(fā)者按照需要自行定義,可以選擇性的提取自己所需要的信息,這樣大大增加了靈活性。有些軟件(諸如MapGIS)的明碼信息由軟件自動提取,無法自定義提取。
第一種方式的優(yōu)點是可以自定義明碼文件信息提取類別及存儲格式,缺點是不同用戶提取的明碼文件無法通用;第二種方式的缺點是無法自定義明碼文件信息提取類別及存儲格式,優(yōu)點是不同用戶提取的明碼文件可以通用,并且可以直接導(dǎo)入到軟件來使用。本文所研究討論的是第一種方式。
4.2 MicroStation明碼文件提取方法
MDL(MicroStation Development Language)是 MicroStation的C環(huán)境開發(fā)語言,其功能強勁。事實上,MicroStation的很多功能都是用MDL開發(fā)的。MDL是MicroStation的“應(yīng)用引擎(Application Engine)”,MDL可以直接在MicroStation中運行并且表現(xiàn)為MicroStation本身的一部分。許多MicroStation的命令都可以在MDL中應(yīng)用。
利用MDL可以自定義提取MicroStation的明碼文件,由于篇幅所限,本文只給出要素提取函數(shù)ProcessElement的算法,算法描述如下:
提取明碼并將明碼存儲于文本文件 (?.pnt)中,用不同的標(biāo)示符標(biāo)記類別,比如點要素用P+類別號(P211200)表示;線要素用L+類別號表示(L211100);單行注記用T表示,多行注記用TT表示,自定義類別符號便于在轉(zhuǎn)換時進(jìn)行編程實現(xiàn),所提取的明碼文件的樣例如圖2所示。
在定義明碼格式時需要注意以下幾個方面:
(1)統(tǒng)一數(shù)據(jù)分隔符。明碼文件中數(shù)據(jù)或字符間的分隔符要統(tǒng)一,比如統(tǒng)一用空格或統(tǒng)一用分號(;),但不能混用,這樣不利于編程。
(2)統(tǒng)一數(shù)據(jù)精度。明碼文件中數(shù)據(jù)的精度要統(tǒng)一,且精度不能太低,比如圖2中的數(shù)據(jù)精度為6位,那么文件中所有數(shù)據(jù)統(tǒng)一保留6位,這樣可以減小誤差。
(3)統(tǒng)一命名規(guī)則。明碼文件可以按照比例尺及圖幅命名,圖2中文件名為kIV-23-4,代表500比例尺第四象限23行4列圖幅,這樣便于檢查比對。
圖2 提取的MicroStation明碼文件
5.1 ArcGIS開發(fā)環(huán)境簡介
ArcGIS Engine是一組完備的并且打包的嵌入式GIS組件庫和工具庫,開發(fā)人員可用來創(chuàng)建新的或擴展已有的桌面應(yīng)用程序。
使用ArcGIS Engine,開發(fā)人員可以將GIS功能嵌入到已有的應(yīng)用軟件中,如自定義行業(yè)專用產(chǎn)品;或嵌入到商業(yè)生產(chǎn)應(yīng)用軟件中,還可以創(chuàng)建集中式自定義應(yīng)用軟件,并將其發(fā)送給機構(gòu)內(nèi)的多個用戶。
本文主要調(diào)用 ArcEngine中 esriCarto類庫下的IGeometry、Ilayer及IFeatureLayer等接口;esriGeoDatabase類庫下的 IFeatures、IFeatureClass及 IWorkspace-Edit等接口。
5.2 明碼文件轉(zhuǎn)換為Shape數(shù)據(jù)實現(xiàn)
明碼文件生成Shape矢量數(shù)據(jù)主要通過對明碼文件利用ArcEngine二次開發(fā)實現(xiàn)矢量數(shù)據(jù)轉(zhuǎn)換,其中轉(zhuǎn)換的VB6關(guān)鍵部分代碼如下:
MicroStation數(shù)據(jù)格式Dgn包含點、線、注記等類別要素,不包含面要素,所以明碼轉(zhuǎn)換為Shape文件的要素類別為點或者線,如果需要轉(zhuǎn)換為面,需要對點線進(jìn)行拓?fù)錁?gòu)面(ArcGIS Desktop提供拓?fù)涔ぞ?,明碼轉(zhuǎn)換為Shape文件的樣例如圖3所示。
實際工作中,先定義提取要素類別及存儲格式,然后根據(jù)定義好的明碼格式,利用MDL編程實現(xiàn)提取地圖要素,編寫程序時需要注意以下幾個方面:
(1)可以實現(xiàn)批量轉(zhuǎn)換。程序可以添加多個明碼文件進(jìn)行轉(zhuǎn)換或指定目錄自動識別明碼文件進(jìn)行轉(zhuǎn)換。
(2)可以實現(xiàn)增量轉(zhuǎn)換。根據(jù)需要可以將明碼文件轉(zhuǎn)換為一個Shape文件或多個Shape文件,比如要對Shape數(shù)據(jù)分層管理,將不同類別要素轉(zhuǎn)換為不同的Shape文件。
(3)避免重復(fù)轉(zhuǎn)換。如果重復(fù)選擇相同的明碼文件,自動識別已經(jīng)轉(zhuǎn)換的明碼文件,停止重復(fù)轉(zhuǎn)換。
(4)對轉(zhuǎn)換數(shù)據(jù)的后續(xù)處理。一般需要對轉(zhuǎn)換后的數(shù)據(jù)進(jìn)行接邊及拓?fù)涞炔僮鳌?/p>
圖3 明碼文件轉(zhuǎn)換Shape文件樣例
本文主要給出了從MicroStation數(shù)據(jù)到ArcGIS矢量數(shù)據(jù)的轉(zhuǎn)換方法,即通過調(diào)用MicroStation的MDL提取明碼文件,然后利用ArcGIS二次開發(fā)接口將明碼文件轉(zhuǎn)換為Shape矢量數(shù)據(jù)格式。該方法具有很大的靈活性,可以選擇性的提取地圖要素,即可以定制轉(zhuǎn)換參數(shù);同時該方法具有可擴展性,即同類軟件間數(shù)據(jù)轉(zhuǎn)換可參照該方法,比如 MapGIS的數(shù)據(jù)格式轉(zhuǎn)換為ArcGIS的數(shù)據(jù)格式;MapGIS的數(shù)據(jù)格式轉(zhuǎn)換為Super-Map的數(shù)據(jù)格式及MicroStation的數(shù)據(jù)格式轉(zhuǎn)換為SuperMap數(shù)據(jù)格式等都可參照該方法。
[1]宋關(guān)福.王爾琪 MicroStation開發(fā)語言(MDL)應(yīng)用教程.中國科學(xué)院地理信息產(chǎn)業(yè)發(fā)展中心,1996.10
[2]劉仁義,劉南.ArcGIS開發(fā)寶典.北京:科學(xué)出版社[J]. 2006.
[3]ESRI,ArcGIS Engine Developer Help 9.2 C++Help[M].
[4]ESRI.ArcGIS Desktop 9.2 Using Help[M].
Transform of Data Format From Microstation to ArcGIS
Li HaiXu
(ZhuHai Surveying and Mapping of Institute,ZhuHai 519000,China)
Following as technology of GIS’s rapid development,it have been largely applied in many fields.The data of GIS’s needs has become larger and larger.It is a shortcut to transform available surveying data or special map into data of GIS.The paper discusses and gives a feasible method by re-developed interface of microstatiion and arcgis.Finilly it discusses its extensity.
Microstation;ArcGIS;Re-developement;Data Tansfrom
1672-8262(2010)03-41-04
P208
B
2009—12—28
李海旭(1970—),男,工程師,主要從事測繪與GIS數(shù)據(jù)處理工作。