地形简介
Cesium默认是不包含地形的,准确的说应该是Cesium默认加载的地形是没有起伏效果的,如下图所示,在包含山脉的地区是看不到地形起伏的:
默认使用的地形为 "WGS84 Ellipsoid":
地形提供者 TerrainProvider
与影像类似,在Cesium
中包含了一些地形提供者TerrainProvider
用于加载各类地形,举例如下,具体情况可参阅官方文档:
ArcGISTiledElevationTerrainProvider
:由ArcGIS提供的地形服务;CesiumTerrainProvider
:由Cesium官方提供的地形服务;CustomHeightmapTerrainProvider
:自定义高程的地形服务;EllipsoidTerrainProvider
:高程为 0 的地形服务,如果初始化时不指定地形,那么默认的就是使用的该地形服务;GoogleEarthEnterpriseTerrainProvider
:由GoogleEarth提供的地形服务;VRTheWorldTerrainProvider
:由VRTheWorld提供的地形服务。
加载地形的方法
与加载影像图层十分类似,加载地形的方法也有两种:
- 在初始化
viewer
的时候添加; - 通过
viewer.terrainProvider
赋值添加
注意,一个视图下只能加载一个地形;
而影像图层是可以加载多个的,同一视图下可以叠加多个影像;
另外,从语义上来说,每一个影像图层都是一个imageryLayer
,所有的imageryLayer
都是通过ImageryLayerCollection
来管理,添加一个影像图层用的方法是addImageryProvider
,注意add
而对于地形来说,是直接给viewer.terrainProvider
赋值的
初始化Viewer时添加地形
在初始化Viewer
时在第二个参数Viewer.ConstructorOptions
中添加terrainProvider
属性并提供一个TerrainProvider
对象:
const viewer = new Cesium.Viewer("cesiumContainer", {
terrainProvider: new Cesium.ArcGISTiledElevationTerrainProvider({
url: 'https://elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer',
})
})
通过viewer.terrainProvider赋值添加
通过viewer.terrainProvider
赋值添加的代码如下:
const viewer = new Cesium.Viewer("cesiumContainer")
const ArcGisTerrainProvider = new Cesium.ArcGISTiledElevationTerrainProvider({
url: 'https://elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer',
})
viewer.terrainProvider = ArcGisTerrainProvider
地形提供者示例
与影像类似,在Cesium中提供了一些地形提供者TerrainProvider用于加载各类地形
ArcGISTiledElevationTerrainProvider
:由ArcGIS提供的地形服务;CesiumTerrainProvider
:由Cesium官方提供的地形服务;CustomHeightmapTerrainProvider
:自定义高程的地形服务;EllipsoidTerrainProvider
:高程为 0 的地形服务,如果初始化时不指定地形,那么默认的就是使用的该地形服务;GoogleEarthEnterpriseTerrainProvider
:由GoogleEarth提供的地形服务;VRTheWorldTerrainProvider
:由VRTheWorld提供的地形服务。