Cesium加载地形
Cesium中地球默认为光滑的椭球体,相当于地形高度为都为零。开发者可以调用具有真实地理高度的地形数据,同样也可以利用数字高程模型(DEM)数据生成地形加载到Cesium地球上。
- 加载地形数据
Cesium定义了地形构造函数,开发者可以通过terrainProvider接口直接调用地形数据服务。需要注意的式一个项目中通常只有一种地形数据,terrainProvider不支持多种地形数据叠加。开发者注册Cesium ion账号获得令牌(token)后,即可完成地形数据的加载。
const viewer = new Cesium.Viewer("mycesium", {
baseLayerPicker: false, //关闭图层选择
imageryProvider: esri,
terrainProvider:Cesium.createWorldTerrain({
requestVertexNormals: true, //当前属性可以增加法线,用于提高光照效果
requestWaterMask: true, //当前属性可以增加水面特效
})
});
viewer.scene.globe.enableLighting=true
- 地形服务
Ceisum提供了多种现有地形服务数据接口,并且支持自定义地形数据- 调用地形数据服务
Cesium的rtreeainProvider支持多种地形数据请求方法,大部分地形Provider通过基于HTTP的描述性状态迁移(REST)接口请求地形数据切片。依据地形数据的组织方式和请求方式不同,Cesium支持下列地形Provider:
- CesiumTerrainProvider:高精度全球地形数据,附有光照和书面效果。地形切片使用quantized-mesh v1.0格式,Cesium使用CesiumTerrainProvider API调用该服务
- Google Earth Enterprise Server:通过Google Earth的搞成地图(height map)方式生成地形,Cesium使用GoogleEarthEnterpriseTerrainProvider API调用该服务
- VT MAK VR-TheWorld Server:从VR-TheWorld Server请求地形切片,这个服务数据式90m采样精度的全球地形数据,且包含水深数据,Cesium使用VRTheWorldTerrainProvider API调用该服务
- Ellipsoid:光滑椭球体,这是Cesium默认的全球地形,地形高度为零,没有任何起伏效果。Cesium嗲用EllipsoidTerrainProvider API调用该服务
const viewer = new Cesium.Viewer("mycesium", { baseLayerPicker: false, //关闭图层选择 terrainProvider: new Cesium.CesiumTerrainProvider({ //terrainProvider属性用于放入引入的地形 CesiumTerrainProvider 将地形数据,转换为Cesium可以访问的格式 url: Cesium.IonResource.fromAssetId(1), //url属性用于访问地图服务器的地址 requestVertexNormals: true, //当前属性可以增加法线,用于提高光照效果 requestWaterMask: true, //当前属性可以增加水面特效 }), });
- 自定义地形数据
Cesium支持加载自定义地形数据服务,开发者可以将本地的DEM地形数据处理并加载到Cesium中,然后通过CesiumLab地形处理模块添加高程数据,并设定坐标参数及输入路径,然后进行数据处理得到地形数据服务。
- 调用地形数据服务