首页 / 专栏 / Cesium / cesium教程:地形数据quantized-mesh介绍

cesium教程:地形数据quantized-mesh介绍

  • 发布时间: 2026-03-13 09:49:03
  • 相关标签: cesium quantized mesh tile
  • 简介: `quantized-mesh` 是 Cesium 官方推荐的**高效地形瓦片格式**,专为 WebGL 实时渲染优化设计,也是目前 Cesium 中加载地形的主流格式。下面从新手易懂的角度,拆解这个格式的核心概念、工作原理和使用要点。

一、什么是 quantized-mesh?

先给一个通俗定义:

quantized-mesh(量化网格)是一种轻量化的二进制地形格式,它不存储每个高程点的原始数值,而是通过“量化压缩”和“三角网格”的方式描述地形表面,既能大幅减小文件体积,又能保证渲染效率。

对比传统地形格式(如 GeoTIFF):

  • GeoTIFF:存储规则格网的高程值,精度高但文件大(1km×1km 30m分辨率的 DEM 约 10MB);
  • quantized-mesh:仅存储地形的三角网格顶点+量化高程,同等区域仅需几KB到几十KB,加载速度提升10倍以上。

二、quantized-mesh 的核心设计思路

1. 核心优化手段

(1)高程量化(Quantization)
  • 原理:将地形瓦片范围内的高程值,从「原始浮点数(如 568.23m)」映射到「0~65535 的整数」(16位无符号整数),减少数据存储量。
  • 举例:若某瓦片的高程范围是 100m ~ 1000m,那么 100m 对应 0,1000m 对应 65535,中间的 550m 会被量化为 (550-100)/(1000-100)*65535 ≈ 36408
  • 优势:16位整数仅占2字节,远小于浮点数的4字节,且渲染时可快速反算回真实高程。
(2)三角网格(Mesh)
  • 原理:不再存储规则格网的所有点,而是用不规则三角网(TIN) 描述地形——地形平坦区域用少量三角形,地形起伏大的区域用更多三角形,兼顾精度和性能。
  • 效果:同等视觉精度下,三角网格的顶点数量比规则格网少 50%~80%。
(3)层级金字塔(Level of Detail)
  • 原理:生成不同层级的瓦片(如 0级全球、10级省级、18级城区),Cesium 会根据相机距离自动加载对应层级的瓦片:
    • 远距离:加载低层级(少顶点)瓦片,渲染快;
    • 近距离:加载高层级(多顶点)瓦片,细节全。

2. quantized-mesh 瓦片的结构

一个 .terrain 后缀的 quantized-mesh 瓦片包含:

  • 顶点数据:量化后的高程+经纬度坐标;
  • 三角网格索引:描述哪些顶点组成三角形;
  • 边界信息:瓦片间的无缝拼接数据;
  • 可选:法向量(用于地形光影)、水面掩码(用于水域渲染)。

三、如何生成/使用 quantized-mesh 地形?

1. 生成工具(回顾)

所有主流 Cesium 地形工具都默认输出该格式:

  • Cesium Terrain Builder (CTB):ctb-tile -f Mesh(Mesh 即 quantized-mesh);
  • MapTiler:选择「Cesium Terrain (quantized-mesh)」输出;
  • pycesiumterrain:指定 format="quantized-mesh"

2. Cesium 加载示例

// 加载本地 quantized-mesh 地形瓦片
const terrainProvider = new Cesium.CesiumTerrainProvider({
  url: "./cesium-terrain", // 瓦片目录(含各级 quantized-mesh 文件)
  requestVertexNormals: true, // 加载法向量(光影效果)
  requestWaterMask: false     // 无需水面掩码时关闭
});

const viewer = new Cesium.Viewer("cesiumContainer", {
  terrainProvider: terrainProvider
});

3. 验证 quantized-mesh 瓦片

可通过 Cesium 官方工具验证瓦片有效性:

// 检查地形格式是否为 quantized-mesh
terrainProvider.readyPromise.then(() => {
  console.log("地形格式:", terrainProvider.tilingScheme); // 输出 WGS84 即正确
  console.log("是否支持 quantized-mesh:", terrainProvider.supportsQuantizedMesh); // 应返回 true
});

四、关键优势与适用场景

优势 适用场景
文件体积小,加载快 网页端 Cesium 地形加载(核心场景)
渲染效率高 大规模地形(全国/全球)可视化
支持层级细节(LOD) 交互式地形浏览(缩放/漫游)
无缝拼接 跨瓦片的连续地形显示

总结

  1. 核心本质:quantized-mesh 是 Cesium 专用的轻量化二进制地形格式,通过「高程量化+三角网格」大幅压缩体积,提升加载/渲染效率;
  2. 生成方式:CTB/MapTiler/pycesiumterrain 等工具可一键生成,无需手动配置格式细节;
  3. 使用要点:Cesium 中通过 CesiumTerrainProvider 加载,开启 requestVertexNormals 可获得更好的光影效果。

简单来说,只要你是在 Cesium 中做地形可视化,优先选择 quantized-mesh 格式,这是兼顾性能和精度的最优解。

同分类推荐