内容概览
1.基于cesium 实现地形图 Terrain 效果
2.源代码 demo 下载
本篇实现 cesium 加载地形图 Terrain 功能,效果图如下:
-
cesium 支持地形图数据格式
Quantized-mesh ,Cesium团队提供的开发的格式
Heightmap,Google Earth Enterprise -
cesium 加载地形图类 CesiumTerrainProvider
cesium 中添加地形数据,我们创建一个 CesiumTerrainProvider, 指定一个 URL 地址和一些配置的选项,然后讲它分配给一个 viewer.terrainProvider。在这个实例中,我们可以使用 createWorldTerrain 辅助功能创建一个 Cesium 世界地形。
核心代码://Cesium动态叠加地形图 MapConfig.terrainObj = {url:"//assets.agi.com/stk-terrain/world",requestWaterMask:false,requestVertexNormals:false,proxyUrl:""}; MapConfig.terrainObj = {url:"http://localhost:8180/cesium/worldTerrain",requestWaterMask:false,requestVertexNormals:false,proxyUrl:""};
/** * 添加地形图图层 * @method addTerrainLayer * @param url 地形图url proxyUrl 代理请求url * @return / addTerrainLayer: function (terrainObj) { if (terrainObj.url && terrainObj.url.replace(/(^s)|(s*$)/g, "").length >0) { var provider ={}; if(terrainObj.proxyUrl && terrainObj.proxyUrl.length>0) provider = {proxy:new Cesium.DefaultProxy(terrainObj.proxyUrl),url:terrainObj.url,requestWaterMask:terrainObj.requestWaterMask,requestVertexNormals:terrainObj.requestVertexNormals}; else provider = {url:terrainObj.url,requestWaterMask:terrainObj.requestWaterMask,requestVertexNormals:terrainObj.requestVertexNormals};
var terrainProvider = new Cesium.CesiumTerrainProvider(provider); this.cesiumViewer.terrainProvider = terrainProvider; } }
RequestWaterMask 和 requestVertexNormals 的配置选项,是告诉 Cesium 需要额外的获取水和照明效果。默认情况下他们设置是 false。
- cesium 加载地形图模式:在线以及离线1. 第一行
-
在线模式,这个最简单,cesium 官网直接提供在线 url://assets.agi.com/stk-terrain…
最新cesium版本的在线地形加载改为:var viewer = new Cesium.Viewer('cesiumContainer', { terrainProvider : Cesium.createWorldTerrain() });
-
离线模式,制作离线地形图数据需要现成的 dem 数据,比图 tif 格式的,然后利用转换工具来制作,转换工具我这里用的是 cesiumlab 在线模式转换工具:Cesium 的万花筒
具体的教程,cesiumlab 官网有操作步骤教程;
转换之后数据源格式如下: