基於Skyline與ArcGIS Server的二三維聯動功能實現


基於SkylineArcGIS Server的二三維聯動功能實現主要利用WEB技術、ArcGIS for JavaScriptSkyline 二次開發以及ArcGIS 10.1 桌面工具。 利用ArcGIS桌面工具制作地圖文檔、發布地圖服務並進行地圖切片,這樣就得到了實驗用的二維電子地圖數據。地圖文檔和切片的質量直接影響着二三維聯動功能實現的效果。功能實現過程中,主要有Skyline三維平台的鼠標滾輪、鼠標抬起事件以及二維電子地圖的鼠標拖拽、鼠標按下和范圍改變激發的事件。

在開啟二三維聯動時,調用功能入口函數,開啟三維場景的2D模式,設定正北方向,完成二維電子地圖初始化,並綁定相應的事件。通過設定一個變量來判斷是二維聯動三維還是三維聯動二維,從而運行相應的核心方法。二維聯動三維主要是通過鼠標按下、拖拽事件對控制變量賦值,從而在鼠標拖拽、滾輪縮放動作后激發的地圖范圍改變時運行核心方法。在核心方法中完成實時獲取電子地圖的當前中心點位置,並依此設定三維場景攝像頭的位置。這個過程需要實現平面坐標到球面坐標的轉換,也就是墨卡托投影下的坐標轉換為經緯度坐標。經過多次試驗,攝像頭的高度設為當前二維地圖層級比例的六分之一比較合適。三維聯動二維是主要是通過在三維場景的滾輪事件、鼠標左鍵抬起事件中給控制變量賦值,並同時調用一個核心方法。核心方法完成將電子地圖的中心點坐標設為當前瀏覽的三維場景的中心點坐標,並計算三維場景的顯示比例來確定電子地圖的顯示層級。三維場景的顯示比例是通過當前三維場景在3D窗口的寬度與其所展現的實際的三維地球上的距離的比值確定。這樣就成功實現了二三維的互動。

最后,在關閉聯動功能時,需要關閉電子地圖,同事開啟三維場景的3D模式並取消鼠標滾輪和鼠標左鍵抬起事件。

試驗結果如下:

圖(一)

圖(二)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM