摘要:本文以實際項目為例,設計一個以Visual Basic2010.NET為開發(fā)平臺的ArcMap和Skyline二三維GIS聯動系統(tǒng),經過運行和實踐證明,此系統(tǒng)具有可靠性和實用性。系統(tǒng)實現二三維GIS雙向聯動顯示相同的位置,并充分發(fā)揮ArcMap的編輯分析功能,又實現了Skyline逼真的三維可視化,ArcMap屬性編輯完成在Skyline中實時顯示,彌補了二三維GIS的不足。也是作為二三維地理信息數據加工融合工具的一種有意義探討。
關鍵詞: ArcMap Skyline 雙向聯動顯示 數據加工
中圖分類號: P208 文獻標識碼:A 文章編號:1672-3791(2015)01(c)-0000-00
二維GIS系統(tǒng)自從上世紀90 年代迅猛發(fā)展以來,經過眾多學者、軟件開發(fā)者、用戶的多方面實踐,GIS應用深入城建、土地、測繪、規(guī)劃、林業(yè)、電力、燃氣、公安等各行各業(yè),并得到了廣泛的應用。二維GIS的代表ArcGIS以其強大的編輯、制圖、空間分析功能,但可視化不強。因此,三維地理信息系統(tǒng)平臺的代表Skyline出現,加速了三維智慧城市的發(fā)展。然而三維平臺側重可視化和三維分析功能,其二維分析功能和編輯功能較弱。為了解決ArcMap不直觀及Skyline編輯和分析功能弱的矛盾,二三維一體化聯動系統(tǒng)便是發(fā)展的方向。
1 ArcMap與Skyline簡介
1.1 ArcMap簡介
ArcGis是可伸縮的,全面的GIS平臺,ArcGIS Desktop是一個完整的專業(yè)的應用套件,ArcMap是ArcGIS Desktop三個用戶桌面組件之一,是一個用于編輯、顯示、查詢和分析地圖數據的核心模塊。
1.2 Skyline簡介
Skyline是一套優(yōu)秀的三維地理信息系統(tǒng)平臺軟件,可以利用海量的測影像數據、數字高程數據,以及其他二、三維數據搭建出一個對真實世界進行模擬的三維場景。Skyline包含三類產品:Terra Builder,用于創(chuàng)建三維地形數據mpt;Terra ExplorerPro,用于創(chuàng)建、編輯、發(fā)布三維場景,提供豐富的二次開發(fā)接口;Terra Gate 是能夠實時流暢傳輸三維地理數據的功能強大的網絡數據服務軟件。
2 系統(tǒng)主要設計
2.1系統(tǒng)主要功能
通過Visual Basic2010.NET開發(fā),建立一個能使ArcMap和Skyline交互平臺,實時將ArcMap和Skyline獲取顯示窗口坐標信息雙向傳遞,實現二三維聯動顯示。
2.2系統(tǒng)運行環(huán)境
系統(tǒng)使用ArcMap和Skyline平臺的功能,可以認為是一個中間件。因此,需要ArcMap10.0或其它版本和Skyline Explorer Pro6.5.1版本支持。
3 系統(tǒng)主要功能實現
3.1系統(tǒng)主要代碼
ArcMap和Skyline的二三維聯動實現,主要代碼說明如下:
(1)主要變量聲明獲取ArcMap和Skyline運行平臺
Public m_app As IApplication '定義獲取ArcGis運行的實例
Public m_sg As SGWorld65 '定義獲取Skyline運行的實例
m_application = m_appROT.Item(0) '獲取運行的ArcMap
pMxDoc = m_application.Document '獲取ArcMap文檔對象接口
pActiveView = pMxDoc.FocusMap '獲取ArcMap數據顯示接口
IPosition = m_sg.Navigate.GetPositions(TerraExplorerX. AltitudeTypeCode. ATC_ON_TERRAIN) '獲取初始的Skyline位置信息
(3)二三維聯動顯示
獲取Skyline平臺顯示范圍和旋轉角,向ArcMap傳輸信息主要代碼如下:
Dim x1 As Integer=m_sg.Window.Rect.Width–1 '獲取屏幕寬度
Dim y1 As Integer=m_sg.Window.Rect.Height–1 '獲取屏幕高度
'屏幕轉地理坐標,左下角地理坐標和右上角地理坐標
Dim Zs As TE.IWorldPointInfo65=m_sg.Window.PixelToWorld(0,0)
Dim Yx As TE.IWorldPointInfo65=m_sg.Window.PixelToWorld(x1,y1)
'自定義坐標轉換函數,地理坐標轉直角坐標
Dim XYMax As PointD=JWgetGK(Zs.Position.Y, Yx.Position.X)
Dim XYMin As PointD=JWgetGK(Yx.Position.Y, Zs.Position.X)
pEnvelope=New ESRI.ArcGIS.Geometry.Envelope '定義顯示范圍
pEnvelope.XMax=XYMax.Y: pEnvelope.YMax=XYMax.X '給顯示范圍賦值
pEnvelope.XMin=XYMin.Y: pEnvelope.YMin=XYMin.X '給顯示范圍賦值
pActiveView.Extent=pEnvelope '給顯示范圍賦值
pActiveView.ScreenDisplay.DisplayTransformation.Rotation=IPosition.Yaw
獲取ArcMap平臺的顯示范圍,并向Skyline傳輸顯示范圍的主要代碼如下:
Dim CentP As PointD = GKgetJW((pEnvelope.YMax + pEnvelope.YMin) / 2, (pEnvelope.XMax + pEnvelope.XMin) / 2) '計算顯示范圍的中心點坐標
Dim IPosion As IPosition65 = m_sg.Creator.CreatePosition(CentP.Y, CentP.X, pEnvelope.Height, TE.AltitudeTypeCode.ATC_TERRAIN_ABSOLUTE, 0, 270, 0, 0)
m_sg.Navigate.SetPosition(IPosion) '設置ArcMap傳遞的顯示范圍
3.2系統(tǒng)運行結果
首先運行ArcMap和Skyline,并打開相應的工程文件mxd和fly,再啟動二三維聯動系統(tǒng),通過勾選“是否啟用二三維聯動”,即可實現兩個平臺的聯動顯示,若不需要同步,則取消“是否啟用二三維聯動”,系統(tǒng)運行結果如圖1。
圖1 二三維聯動顯示
4 結束語
基于ArcMap和Skyline平臺開發(fā)的二三維聯動系統(tǒng),可以實時判斷兩個平臺的顯示范圍,并進行傳輸,實現位置的二三維同步顯示;并且可以將Skyline的模型定位文件,自動加載到ArcMap平臺,實現數據的同步編輯,數據的快速制作和三維可視化查看,是數據融合技術的有意義探討。
參考文獻
[1] 林乾開.基于Skyline的森林防火輔助決策系統(tǒng)的研建[J].測繪通報.2013(12)
[2] 高宏兵,王繼忠.基于AutoCAD與SuperMapObject實時同步顯示系統(tǒng)的設計與實現[J].
科技風.2013(6)
[3] 羅凌.Visual Basic 2010程序設計教程(第八版)[M].電子工業(yè)出版社.2012
[4] 戴洪寶.基于Skyline的數字城市三維可視化系統(tǒng)的研究—以天津市某實驗區(qū)為例[D].
西安科技大學,2010
[5] 趙涓涓.SKYLINE虛擬現實開發(fā)與設計[M].人民郵電出版社.2013
[6] 王曉麗,高宏兵,崔向軍.基于ArcMap與AutoCAD同位對比程序設計[J].
科技信息.2011(31)
作者簡介:王繼忠(1979-),男,本科,河北滄州,工作于北京自來水設計公司。職稱:工程師,研究方向:三維管網