skyline软件体系及工作流程
?? ?skyline軟件系列平臺提供了從數據生產、編輯到網絡發布的一整套的成熟的商業解決方案。無論是單機環境還是網絡環境,用戶都能夠根據自己的需求進行功能定制,建立起自己的三維地理信息系統。本文主要從skyline軟件的工作流程出發,介紹一下skyline的軟件體系結構。
一、數據生產----TerraBuilder
?? ? 我們知道,要建立起一個真正的三維地理信息系統,首先必須要有DEM以及遙感影像數據,它們是構成三維場景的基礎。skyline軟件家族中的TerraBuilder?所扮演的角色就是利用DEM以及遙感影像數據來搭建自己的三維場景。
?? ?TerraBuilder?支持絕大數格式的DEM以及影像數據,并且可以支持多CPU服務器或多臺機器同時運算(TerraBuilder??Fuser模塊)。
?? ?TerraBuilder?有兩種方式產生出skyline自己的三維場景數據:一種是MPT數據,它是TerraBuilder計算出來的一個三維場景文件(后綴名是.mpt);還有一種方式是不事先計算好mpt文件,而是實時運算DEM和影像數據(DirectConnect模塊,并且與TerraGate結合),實時發布給瀏覽器(TerraExplorer Pro或TerraExplorer Viewer),這時的數據是.tbp后綴的文件。后面這種實時發布模式顯然可以避免耗時很長的運算MPT文件的時間,實現快速發布更新較為頻繁的數據。
二、數據編輯----TerraExplorer Pro
?? ?在TerraBuilder創建好MPT文件或tbp文件后,便可以在TerraExplorer Pro軟件中打開三維地形數據,然后便可以進行各種編輯工作,包括添加GIS專題圖層、標繪、3D模型等等,從而建立起更加真實豐富的三維虛擬環境。經過TerraExplorer Pro的各項處理和編輯工作,再進行打包(Basic kit)存儲,生成一個.FLY后綴的文件,它存儲了區域的三維地形信息(注意并不是地形數據)以及在地形場景中創建的各種對象信息(二維的以及三維的)。FLY文件有點類似于ArcGIS的mxd文件,它可以在本地由pro或viewer打開,或通過IIS發布,供客戶端打開。
三、數據網絡發布----三維地形數據發布TerraGate、矢量數據發布Streaming Feature Server(SFS)
?? ?TerraGate是一款強大的地形傳輸服務器,它能夠同時向數以千計的客戶傳送三維地形數據(MPT文件或DirectConnect實時形成的三維地形數據)。TerraGate的運行是基于網絡無縫可變帶寬的,并且不會被連通性的潛伏和中斷而影響。當網速較慢而地形數據傳送不暢時,初始影像便以低分辨率的形式被用戶接收,用戶就可以進行三維瀏覽顯示,而不用等到所有數據傳送完畢。
?? ?SFS是skyline自己的矢量數據發布工具,即skyline自己構建的WFS。它能夠讀取各種數據源,包括Oracle Spatial、ArcSDE、Shape文件數據等等,通過緩存機制實現矢量數據的高效傳輸。
?
四、二次開發
?? ?TerraExplorer API提供了一套強大的接口用來集成TerraExplorer、TerraExplorer Pro和用戶自定義應用,同時也提供了一套ActiveX控件,可將三維窗口、信息樹和導航圖以控件對象的方式嵌入到用戶自定義的可視化界面中。skyline開發只有一個組件類入口,那就是TerraExplorerClass,在實例化TerraExplorerClass后,其他TerraExplorer CoClass Interfaces中所有的接口都實現了TerraExplorerClass類,而skyline中的各種對象(ITerraExplorerObject5 Interface中,如ITerrainPolyline5、ITerrainLabel5、ITerrainBuilding5等等)則都是由CoClass Interfaces中的IObjectManager接口創建。
?
?? ? ? ? //skyline中的接口定義
?? ? ? ?private TerraExplorer objTerraExplorer;
?? ? ? ?private ITerraExplorer51 objITerraExplorer;
?? ? ? ?private IMenu objIMenu;
?? ? ? ?private IInformationTree5 objIInformationTree5;
?? ? ? ?private ISnapShot2 objISnapShot;
?? ? ? ?private IPlane5 objIPlane5;
?? ? ? ?private IRender5 objIRender5;
?? ? ? ?private IObjectManager5 objIObjectManager5;
?? ? ? ?private ICoordSys3 objICoordSys3;
?? ? ? ?private ITerrain5 objITerrain5;
?? ? ? ?private IContainer2 objIContainer2;
?? ? ? ?private ILayer5 objILayer5;
?
?? ? ? ?/// <summary>
?? ? ? ?/// 初始化對象和事件
?? ? ? ?/// </summary>
?? ? ? ?private void InitializeTerraExplorer()
?? ? ? ?{
?? ? ? ? ? ?objTerraExplorer = new TerraExplorerClass();
?? ? ? ? ? ?objITerraExplorer = objTerraExplorer as ITerraExplorer51;
?? ? ? ? ? ?objIMenu = objTerraExplorer as IMenu;
?? ? ? ? ? ?objICoordSys3 = objTerraExplorer as ICoordSys3;
?? ? ? ? ? ?objIObjectManager5 = objTerraExplorer as IObjectManager5;
?? ? ? ? ? ?objIInformationTree5 = objTerraExplorer as IInformationTree5;
?? ? ? ? ? ?objIPlane5 = objTerraExplorer as IPlane5;
?? ? ? ? ? ?objIRender5 = objTerraExplorer as IRender5;
?? ? ? ? ? ?objISnapShot = objTerraExplorer as ISnapShot2;
?? ? ? ? ? ?objITerrain5 = objTerraExplorer as ITerrain5;
?? ? ? ? ? ?objIContainer2 = objTerraExplorer as IContainer2;
?? ? ? ? ? ?objILayer5 = objTerraExplorer as ILayer5;
?
?? ? ? ? ? ?objTerraExplorer.OnLButtonDown += new _ITerraExplorerEvents5_OnLButtonDownEventHandler(objTerraExplorer_OnLButtonDown);
?
?? ? ? ? ? ?objTerraExplorer.OnObjectAction += new _ITerraExplorerEvents5_OnObjectActionEventHandler(objTerraExplorer_OnObjectAction);
?? ? ? ?}
?
?
?? ? ? ? ? ?//加載數據
?? ? ? ? ? ?objITerraExplorer.Load(@"D:/Default.fly");
?
?? ?關于各個接口的使用在本文中就不作介紹了。
?
總結
以上是生活随笔為你收集整理的skyline软件体系及工作流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DMX512标准发送及代码整理
- 下一篇: DMX512 for Arduino 例