一、前言
1、地形
地形是指地物形状和地貌的总称,具体指地表以上分布的固定物体所共同呈现出的高低起伏的各种状态。百度百科
三维场景开发中,地形是最基础且不可缺少的元素,地形高低起伏的呈现是区别二维地图的关键,能够更好的呈现地理地貌,给人更好的三维效果和真实感。
2、Tiff和Terrain
TIFF(Tagged Image File Format)格式是一种文件格式,在GIS行业通常用tiff格式的文件存储影像数据或高程数据。
Terrain是Cesium支持的地形数据格式。
Terrain官网说明
3、DEM
DEM(Digital Elevation Model)是数字高程模型,用于描述地球表面的高程信息,是地形数据的数字化表达。dem格式存储格式较多,比如.tif
、.dem
等。
二、数据处理
1、DEM下载
常用的DEM数据下载网站有:
以【地理空间数据云】为例下载DEM数据
- 高级检索
- 选择数据集
- 选择空间位置;注意:实际下载范围 > 空间选择范围
- 检索,下载对应检索内容即可
2、tif转terrain
由于我们下载的地形原始数据是TIF格式的,而Cesium支持的是TERRAIN格式的数据,因此需要先处理数据,将tif转为terrrain。
转换工具:
- terr2cesiumApp
- Cesiumlab
- Cesium Terrain Builder 开源工具(CTB)
以CesiumLab为例,存储类型选择【散列】
三、Cesium加载本地Terrain
1、nginx部署terrain文件夹
terrain文件存放在以下文件夹中
location /terrain/ {
alias "D:/GisData/Terrain/001/";
}
本地访问http://localhost:1301/terrain/layer.json
,能访问到json内容即可。
2、调用terrain数据
Cesium当前使用版本1.119.0
加载示例:
const viewer = new Cesium.Viewer('cesiumContainer', {
terrainProvider: await Cesium.CesiumTerrainProvider.fromUrl('/terrain/')
})
加载效果(边界位置)
四、在线地形加载
Cesium封装了接口createWorldTerrainAsync
,该接口封装了Cesium提供的全球在线地形数据,只需要在viewer中增加配置即可。
示例:
const viewer = new Cesium.Viewer('cesiumContainer', {
terrainProvider: await Cesium.createWorldTerrainAsync()
})