用Balder開源3D引擎實現Silverlight用戶端的3D 地圖效果(一)

來源:互聯網
上載者:User
文章目錄
  • 寫作本文的起因:
  • 關於本文的說明:
寫作本文的起因:

  前兩天偶然自己想瞭解一下Web端的三維GIS開發,但是發現實現的過程非常麻煩,ArcGIS API For Flex和ArcGIS API ForSilverlight中都沒有提供3D的支援。

隨後在網上查了查資料,發現了這個例子:

http://maps.esri.com/sldemos/terrainmap/default.html

該樣本實現了地圖的3D效果,且基於Silverlight。於是便開始分析該執行個體的源碼。下面的內容也算是自己在學習以上這個例子時的一點心得。在此和大家分享。

 

開始前的幾個問題:

1.高程資料怎樣獲得?

2.自己有了DEM高程資料,如何利用自己的DEM高程資料來渲染3D圖片?

3.高程資料如何對應到2D地圖上相應的位置?

4.利用高程資料實現地圖3D渲染的具體實現過程是怎樣的呢?

以上是本文涉及的是個小問題,也是筆者在學習3D Map之前一直困擾的問題,所以這也是本文將要解決的幾個問題。

 

實現過程的基本總結: 

通過對源碼的分析,以及對Balder的學習,大致總結出了該樣本實現的基本過程。

1.通過GIS服務提供高程資料,如果沒有高程資料那麼3D就無從談起了。

2.獲得當前顯示的2D地圖的圖片,構建高程資料格

3.調用高程資料的GIS服務,獲得高程網格對應的高程資料。

5.將3D模型的材質設定為2D下地圖的圖片。

4.結合開源的3D引擎 Balder,根據高程資料,開始渲染,最終得到3D效果。

 下面的一幅圖給出上面的實現流程說明:

 

關於本文的說明:

1.本文的重點將放在3D視圖的具體過程,因為設計到的內容較多,所以不會對每一個細節都作具體的介紹。

2.關於Balder 3D引擎的內容不會在本文中詳解,如果您沒有3D的開發基礎(即從來沒有入手過3D),在此建議先瞭解Balder的基本使用。

強烈建議看看該博主的Balder的教程:

http://www.cnblogs.com/nowpaper/tag/silverlight%E6%8A%80%E6%9C%AF/

3.本文基於之前的給出的3D Map樣本,所以本文提取了其中一些關鍵的代碼,希望原作者不要介意,本文沒有用於任何的商務工作,純粹用於技術交流。

4.作者也是3D Map的新手,歡迎一起交流,不喜勿噴。

 

首先我們來看一下如何獲得DEM高程資料,以及如何在ArcGIS Server發布自己的高程資料。

1.提供高程資料的實現。

因為利用現有的ArcGIS Server服務並不能實現提供高程資料的功能,因此這裡需要利用到ArcGI的SOE擴充ArcGIS Server 服務,因此這要求我們自己辨析代碼來擴充現有的GIS功能。不過這裡有一個好訊息就是在ESRI的資源中心已經有人完成了這部分工作,並提供了相應的下載:

http://resources.arcgis.com/zh-cn/gallery/file/arcobjects-net-api/details?entryID=87BEC705-1422-2418-34B5-308930DE323A

在該文檔中有詳細的使用說明,並提供了Silverlight,Flex等Web應用程式擷取高程資料的例子。

當完成擴充之後,我們會在GIS服務能力中多出了一項:Get Elevations,即表示提供高程資料的服務。

2.發布高程資料

完成ArcGIS Server的擴充功能之後,需要發布我們自己的高程資料。高程資料可以上這裡下載:

http://datamirror.csdb.cn/index.jsp

這裡提供了SRTM90米解析度原始高程資料和30米解析度數字高程資料。

獲得高程資料之後,在ArcMap中建立一個MXD文檔,然後將高程的柵格資料添加到MXD文檔中。這裡還可以添加其他資料,但是高程資料只能從柵格資料中獲得。

儲存MXD文檔,然後發布到ArcGIS Server.然後在服務能力中勾選Get Elevations.這樣我們便完成了提供高程資料服務的發布。

開啟我們剛才發布的MXD文檔服務(Map Service)的地址,在最下面就會發現多出了一項,即支援的擴充功能:

完成擷取高程資料服務的發布之後,接下來就是在Web端如何擷取高程資料了。具體過程將在下篇給出。歡迎大家繼續關注。

(著作權,轉載請標明出處)

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.