经纬志
首页 / Cesium / 使用示例

代码生成高程地形

官方示例用 ArcGIS 的高程服务。这里的等价做法是自己写一个高程回调,每个瓦片按坐标算出高度数组交给 Cesium。

CesiumJS 1.121 · 更新 2026-10-28
源码与运行效果
运行效果

提供者的输入输出

CustomHeightmapTerrainProvider 需要 width、height 两个采样数和一个 callback(x, y, level)。回调返回长度 width×height 的 Float32Array,数值是相对椭球的高程(米),按行优先排列。

采样数一般取 2 的幂,示例用 32,既够看出山形,也不会让每个瓦片的生成时间过长。

高度怎么算

示例用几组正弦函数叠加出山脉和盆地,再把海岸线附近压到 0 以下,看起来像大陆边缘。真实业务里这一步换成读 DEM 数据即可,接口不变。

可以直接改的地方

位置改什么效果
callback 里的振幅800 改 2000山更高
width / height32 改成 64更细但更慢
tilingSchemeGeographicTilingScheme改用经纬度切片

先等瓦片:地形瓦片是异步生成的,相机快速移动时会先看到低层级瓦片,等一两秒再判断效果。