深色模式
Cesium 在 WebGIS 中的位置
打开一个三维地球,容易以为地图、地形、建筑和天气都来自同一套软件。实际上,浏览器展示的是多条数据链路的汇合。CesiumJS 是运行在浏览器里的三维地理可视化引擎:它把地理位置、几何和影像组织进场景,再通过 WebGL 把场景画成像素。气象模式、地图服务与页面按钮各有自己的职责。
先分清三个问题
数据描述什么? 地形描述地表形状,影像描述地表颜色,温度描述空间中的物理量。这里的标量(scalar)是一个带单位的数,如 20°C;场(field)则是“每个位置对应一个值”的规则,温度场因此不只是某个孤立数字。温度数值本身没有“红色”,建筑几何也不自带业务含义。
用什么表示? 同一温度场可以变成彩色纹理(texture)、等值线(contour)或剖面(cross-section)。等值线连接数值相同的位置,剖面展示选定切面上的结构。这一步叫视觉编码(visual encoding),由应用选择。Cesium 提供承载这些表达的场景、几何、材质和相机能力。
怎样画出来? 引擎还要决定哪些物体可见、使用哪些细节层级、何时请求瓦片、以什么顺序提交绘制。屏幕上一个简单的色块,背后可能涉及纹理采样、深度测试和混合。
text
温度数组 + 经纬度 + 单位
→ 数值范围映射到色带
→ 网格几何 + 数据纹理
→ Cesium 场景
→ GPU 输出像素这条链提醒我们:颜色不对时先检查数据和映射;位置不对时检查坐标;被地球挡住时检查深度关系。直接“调整 Cesium 参数”往往无法定位问题。
从已有能力走向自定义表达
标注城市可从 Entity 开始;显示卫星图可使用 ImageryLayer;城市三维数据适合 3D Tiles;需要高频更新的科学场则可能涉及 Primitive、纹理和 shader。它们是不同抽象层次,不是从低级到高级的排名。选择最能清楚表达任务的一层,才能控制代码与验证成本。
CesiumJS 与 Cesium ion 也应分开理解:前者是客户端引擎,后者提供数据托管、处理及相关服务。引擎可以使用自备数据。本站实验使用随站点发布的静态资源与浏览器生成的数据,不依赖 Cesium ion 账户。具备相应 WebGL 能力的设备可运行实验,正文和图解可独立阅读。
一帧的节奏
观察持续渲染与按需渲染,理解更新和绘制的关系。
在浏览器本地运行 · 无需账号 · 鼠标拖动旋转,滚轮缩放
底图:Natural Earth II(公共领域);其余几何和地形为教学合成。 数据说明
查看运行源码
此代码直接读取实际运行的实验模块。按 kind 分支定位当前实验,也可查看数据公式和 GLSL。
读取源码…观察任务: 旋转地球,比较地球表面与悬在其上的对象。设想关闭地球后,上方对象的三维坐标是否还存在?
展开解释
坐标仍然存在。Globe 是场景里的地球表达,Scene 才负责组织绘制。隐藏 Globe 不会自动删除其他对象。理解这种分层,才能进一步讨论“静态世界与动态天气怎样共存”。
官方延伸:CesiumJS 概览、1.145 引擎源码目录。