cesiumjs開發實踐(四) 地形介紹

cesiumjs中的地形系統是一種由流式瓦片數據生成地形的技術。html

                          添加地形將視角放平時python

                            地形顯示wireframe
web

cesiumjs支持兩種類型的地形,STK World Terrain和Small Terrain。數據庫

    STK World Terrain是高分辨率, 基於quantized mesh的地形。這是一種基於網格的地形,可充分利用GL中的Shader來渲染,效果至關逼真。STK World Terrain使用了多種數據源,分別適應不一樣地區和不一樣精度時的情形。好比對於美國本土使用National Elevation Dataset (NED)的高程,精度3-30米;對於歐洲使用EU-DEM高程,精度30米;對於澳洲使用Australia SRTM-derived 1 Second DEM高程,精度30米;對於-60至60緯度段使用CGIAR SRTM高程,精度90米;對於整個地球使用GTOPO30,精度1000米。STK World Terrain地形是怎樣生成的是不公開的,如需應用於封閉的局域網時,則需購買AGI的STK terrain server。可是AGI提供了一個webapi可供因特網上調用,並提供了這種地形的格式細節,期待早日有高手做出一個轉換工具。編程

http://cesiumjs.org/data-and-assets/terrain/formats/quantized-mesh-1.0.html


     Small Terrain是中等高分辨率,基於heightmap的地形,渲染出的地形效果不如quantized mesh的地形,但也基本能接受。網上已經有一些開源的生成工具能夠由DEM數據生成這種規範的.terrain文件,所以咱們重點討論這種類型的地形。api

     生成工具是cesium googlegroup裏一個俄國人提供的gdal2srtmtiles.py(https://groups.google.com/forum/#!topic/cesium-dev/rBieaEBJHiU),須要gdal庫和numpy。服務器

具體用法 python gdal2srtmtiles.py --cesium  -z 0-15 -p geodetic ‘YN_DEM.tif', 'I:\\tilesCache\\terrain_tiles'網絡

YN_DEM.tif是輸入地形源文件,是一個geotiff格式的高程數據,網絡上有不少免費的高程數據,比較著名的SRTM90的,ASTER30的,均可以用做輸入的地形數據源。terrain_tiles是生成的地形瓦片所在的目標目錄,app

-z 0-15參數表示zoom爲0到15級,級別越高越詳細,數據量也越大。-p geodetic暫時不知道,估計與投影相關,--cesium表示生成cesium特定的地形。生成過程時間長短與源數據的大小有關,樓主的YN_DEM.tif覆蓋雲南全境的30米精度ASTER DEM,1G多大小,頭一天下班時運行,次日下午生成完畢,8G多的瓦片,0-15級。ide

每一個目錄下都有.terrain,.hdr,.kml三種文件,咱們只用到.terrain文件。

       發佈爲地形服務很簡單,不須要任何服務器端編程知識,把terrain_tiles配置到webserver的Webroot下的一個子目錄就行,同時要把.terrain這種文件的Content-Type設爲'application/octet-stream'加到web服務器的配置中,服務器端就算搞定。

      client端就更簡單了,viewer中有個terrainProvider屬性,直接new一個CesiumTerrainProvider就行。

var viewer = new Cesium.Viewer('cesiumContainer',{
		terrainProvider:new Cesium.CesiumTerrainProvider({
			url: "http://localhost:88/terrain_tiles"
		})
	});

PS:heightmap的地形整體上來講基本還原了地球表面應有的高低起伏,有些區域會有一些橫斷面像刀切同樣失真,在一些對細節不是很在乎的應用中仍是頗有吸引力的。

     在截稿時忽然想到一個辦法,既然AGI開放了STK World Terrain的webapi,那何不把這些高精度quantized mesh瓦片按所需區域下載下來存到數據庫或文件系統上,這樣本地局域網也能應用到高精度地形了,反正地形幾十年也不變,不存在更新什麼的。

本篇到此結束,下一篇《cesiumjs開發實踐(五) 座標系統》

相關文章
相關標籤/搜索