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