当前位置: 首页 > 文档资料 > Cesium 中文文档 >

Cesium 之加载地形图 Terrain 篇

优质
小牛编辑
132浏览
2023-12-01

本篇实现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://http://assets.agi.com/stk-terrain/world

2.离线模式,制作离线地形图数据需要现成的dem数据,比图tif格式的,然后利用转换工具来制作,转换工具我这里用的是cesiumlab在线模式转换工具:Cesium的万花筒

具体的教程,cesiumlab官网有操作步骤教程;

转换之后数据源格式如下: