袁淑芳 韓立洲 郝永攀
(河北建設(shè)勘察研究院有限公司,河北石家莊 050031)
近年來,GIS在各個(gè)領(lǐng)域和深度上不斷發(fā)展,專業(yè)性的GIS應(yīng)用開發(fā)日趨增多。獨(dú)立的GIS二次開發(fā)為我們的科研項(xiàng)目帶來了便利,然而,如果存在兩個(gè)不同系統(tǒng)之間的聯(lián)合開發(fā)時(shí),就會(huì)涉及到不同軟件應(yīng)用平臺(tái)之間的數(shù)據(jù)格式共享問題。例如:理正工程地質(zhì)的勘察數(shù)據(jù)格式不能直接被ArcGIS所利用。
由于ArcGIS與理正勘察數(shù)據(jù)之間不能直接相互讀取,實(shí)現(xiàn)數(shù)據(jù)共享的目的,因此需要通過編制程序進(jìn)行數(shù)據(jù)轉(zhuǎn)換。文章以開發(fā)城市巖土工程信息系統(tǒng)中遇到的問題為例,介紹在VB開發(fā)平臺(tái)下,實(shí)現(xiàn)理正格式的 Access工程地質(zhì)數(shù)據(jù)和 ArcGIS下的ArcSDE for SQL數(shù)據(jù)間的相互轉(zhuǎn)換。
1.1.1 理正工程地質(zhì)勘察數(shù)據(jù)庫管理信息系統(tǒng)
理正工程地質(zhì)數(shù)據(jù)庫管理信息系統(tǒng)(Leading GGIS)是北京理正公司在GIS平臺(tái)基礎(chǔ)上的專門針對(duì)工程地質(zhì)行業(yè)而自主開發(fā)的專業(yè)GIS應(yīng)用系統(tǒng)。實(shí)現(xiàn)對(duì)勘察數(shù)據(jù)進(jìn)行錄入、管理,并依據(jù)已有的鉆孔信息,形成工程建設(shè)場區(qū)的工程地質(zhì)資料及場區(qū)分析評(píng)估。
1.1.2 ArcGIS與AO組件庫
ArcGIS是一種集成地理信息系統(tǒng),利用智能GIS模型來表達(dá)幾何信息。ArcObject是ArcGIS基于COM技術(shù)所構(gòu)建的組件集。AO組件庫則是ArcGIS Desktop產(chǎn)品的一個(gè)部分,用戶可以利用AO提供的組件對(duì)象來進(jìn)行應(yīng)用開發(fā)。
1.2.1 理正工程地質(zhì)勘察數(shù)據(jù)結(jié)構(gòu)
理正工程地質(zhì)勘察數(shù)據(jù)文件為理正工程地質(zhì)勘察數(shù)據(jù)庫管理信息系統(tǒng)軟件形成的Access備份庫文件。理正工程地質(zhì)勘察數(shù)據(jù)庫文件中共包含81個(gè)表,包括工程信息表單組、鉆孔信息表單組和實(shí)驗(yàn)信息表單組。表中的數(shù)據(jù)由沒有實(shí)體空間矢量信息的屬性數(shù)據(jù)組成。
1.2.2 ArcGIS數(shù)據(jù)結(jié)構(gòu)
Geodatabase是 ArcGIS獨(dú)有的面向?qū)ο蟮?GIS數(shù)據(jù)模型。Geodatabase是建立在DBMS之上的統(tǒng)一的、智能化的空間數(shù)據(jù)模型。它將屬性要素和行為結(jié)合在一起,采用現(xiàn)代化的、標(biāo)準(zhǔn)的方式實(shí)現(xiàn)對(duì)象,每個(gè)對(duì)象都定義為一個(gè)COM組件,并允許用戶在這些基本模型的基礎(chǔ)上擴(kuò)展自己的面向?qū)ο蟮臄?shù)據(jù)模型。Geodatabase中一個(gè)表就是一個(gè)要素類,一條記錄對(duì)應(yīng)一個(gè)要素。要素的矢量結(jié)構(gòu)信息被存儲(chǔ)在表格的結(jié)構(gòu)字段中。
首先,在理正工程地質(zhì)勘察數(shù)據(jù)轉(zhuǎn)換為Geodatabase數(shù)據(jù)之前,先在Geodatabase中建立與理正工程地質(zhì)勘察軟件格式相對(duì)應(yīng)的信息結(jié)構(gòu)。其中,要將鉆孔表轉(zhuǎn)為由點(diǎn)實(shí)體構(gòu)成實(shí)體要素表,鉆孔的平面坐標(biāo)值由z_zuankong表中的x,y值確定,將勘察工程表轉(zhuǎn)為由面實(shí)體構(gòu)成實(shí)體要素表,勘察工程是由z_zuankong表所有屬于該工程的鉆孔坐標(biāo)最大值和最小值連接而成。
下面以轉(zhuǎn)入GIS實(shí)體工程表為例,介紹如何進(jìn)行空間數(shù)據(jù)的轉(zhuǎn)換。
Set mRs=objDatabase.OpenRecordset("select max(zkx),min(zkx),max(zky),min(zky)from z_zuankong where gcsy=" & access_gcsy)
//獲取鉆孔坐標(biāo)的最大值和最小值mRs.MoveFirst
For i=0 To mRs.RecordCount-1
X1=mRs.Fields(0).Value
X2=mRs.Fields(1).Value
Y1=mRs.Fields(2).Value
Y2=mRs.Fields(3).Value
Next i
//創(chuàng)建一個(gè)由坐標(biāo)最大值和最小值圍成的面狀實(shí)體作為工程
Set pPointCollection=New Polygon
pPoint.x=X1
pPoint.y=Y1
pPointCollection.AddPoint pPoint
pPoint.x=X1
pPoint.y=Y2
pPointCollection.AddPoint pPoint
pPoint.x=X2
pPoint.y=Y2
pPointCollection.AddPoint pPoint
pPoint.x=X2
pPoint.y=Y1
pPointCollection.AddPoint pPoint
屬性數(shù)據(jù)的轉(zhuǎn)換在系統(tǒng)數(shù)據(jù)轉(zhuǎn)換中顯得容易的多,只要將所選表中的項(xiàng)按順序一一轉(zhuǎn)換即可。
//讀取理正工程地質(zhì)勘察數(shù)據(jù)
Set pRec=objConnection.Execute("select* from" & access_name&"where gcsy="&access_gcsy)
……
//把數(shù)據(jù)寫入到Geodatabase
Set pTable=pFeatWS.OpenTable(access)
Set pWorkspaceEdit=pFeatWS
For j=0 To RCount-1
Set pRow=pTable.CreateRow
For k=0 To pRec.Fields.Count-1
pRow.Value(k)=pRec.Fields(k).Value
Next k
pRec.MoveNext
pRow.Store
Next j
數(shù)據(jù)共享是當(dāng)前GIS技術(shù)發(fā)展和應(yīng)用的必然需求。理正工程地質(zhì)勘察數(shù)據(jù)和ArcGIS數(shù)據(jù)的相互轉(zhuǎn)換為理正系統(tǒng)和ArcGIS
系統(tǒng)之間的信息交換提供了途徑,實(shí)現(xiàn)了兩個(gè)系統(tǒng)之間的數(shù)據(jù)共享,可以為巖土行業(yè)所借鑒。
[1] 王創(chuàng)新,甘 羲.ArcGIS與MapGIS空間數(shù)據(jù)轉(zhuǎn)換技術(shù)與方法[J].計(jì)算機(jī)與現(xiàn)代化,2006(8):89-92.
[2] 鄢志輝,孫宏睿.AutoCAD和ArcInfo數(shù)據(jù)轉(zhuǎn)換[J].測繪與空間地理信息,2006(4):1-5.
[3] 王海芹,楊永俠.MapGIS到ArcSDE的數(shù)據(jù)轉(zhuǎn)換方法與實(shí)踐[J].國土資源遙感,2005(3):13-14.
[4] 董均祥,宋 麗.MapGIS數(shù)據(jù)向Oracle Spatial空間數(shù)據(jù)的轉(zhuǎn)換[J].長江科學(xué)院院報(bào),2006(4):199-211.
[5] 王德思.基于ComGIS的從Shape文件到Dxf文件格式轉(zhuǎn)換的方法[J].廣東土地科學(xué),2005(6):25-26.
[6] 郭繼發(fā),魏峰遠(yuǎn).基于.Net的AutoCAD文件向MapInfo文件轉(zhuǎn)換方法分析與實(shí)現(xiàn)[J].河南理工大學(xué)學(xué)報(bào),2006(4):111-113.
[7] 傅 俊,劉 南,劉仁義.實(shí)現(xiàn)ArcSDE向OracleiSpatial空間數(shù)據(jù)的轉(zhuǎn)換[J].計(jì)算機(jī)應(yīng)用研究,2003(12):215-217.