Cesium开发中,如果想要看到真实感,地形数据(DEM)不可或缺。
首先,地形数据是什么?拿DEM数据来说,DEM数据就是数字高程模型,就是描述每个点位的高程数据而已,没有其他附加信息,更不会包含影像图,单独展示是看不出什么名堂的。DEM数据在ArcGIS中打开只能看到是灰度图。
其次,如何展示呢?地形数据需要结合影像图或者普通瓦片来展示才能看到地球表面的高低起伏状态;结合影像图展示效果最佳。
下面我将从获取DEM数据到最后成功展示到Cesium中,详细描述其中的各个步骤,希望对大家有所帮助。
1.下载DEM数据,下载地址:http://www.gscloud.cn/,使用高级检索,根据实际需求,下载不同精度的DEM数据。
image.png2.下载下来的DEM数据解压后,有三个文件,其中带有dem标识的即为我们需要的DEM数据文件;另外一个tif文件,num是DEM的允差值。。
image.png3.如果一个区域存在多张dem数据,为了方便切图,可以使用ArcGIS Toolbox的数据管理工具——栅格——栅格数据集——镶嵌,可以将多张dem的tif合并为一个tif文件。
4.利用工具gdal2srtmtiles_x64(我用的是64位的,32位的我没测过),工具的使用说明已经很详细了,这里我就不多作解释了。切图完成之后的,成果如下图:
image.png5.将上边的地形瓦片文件,发布到tomcat,IIS等服务器。发布完成后的访问地址为http://localhost:8081/wzf_dem
6.在Cesium中创建 terrainProvider和imageryProvider。
var viewer = new Cesium.Viewer('cesiumContainer');
var terrainProvider = new Cesium.CesiumTerrainProvider({
url: 'http://localhost:8081/wzf_dem'
});
viewer.terrainProvider = terrainProvider;
viewer.camera.flyTo({
destination:Cesium.Cartesian3.fromDegrees(116, 40, 15000.0)
});
7.运行页面,打开之后,定位到有地形数据的地方。
从正上方俯视,地形数据已经很明显了
image.png
按住Ctrl键,旋转地球,从地平线方向看,地形数据更明显,效果更好。
image.png
最后再重复一下,地形数据单独是没法展示出来看的,只是一堆高程数据而已。结合影像图来展示,效果最佳。
注意:最好把项目服务和高程数据服务部署在同一个服务器和端口下,避免跨域。
本文主要参考了https://www.jianshu.com/p/62d6f03f44e3。
网友评论