Skip to content

等值线:几何提取与隐式着色 ​

等值线(contour)表示满足 f(lon,lat)=c 的位置。f 是位置到数值的函数(function),c 是等值阈值(isovalue);两者单位一致,例如都是 °C。它不是色带上随意描出的边缘。底色、线条与标签如果使用不同的场、时间或插值方式,即使都很好看,也可能相互矛盾。

先理解采样与插值的四角场,再读场与导数里的等值关系与梯度,就能解释线的位置与线宽。

Marching Squares 边交点、鞍点连法与双线性曲线细化

从一个网格单元提取线 ​

行进方格法(Marching Squares)将四个角与阈值 c 比较,用四个二进制位表示高低组合。若一条边两端值为 a、b 且跨越阈值,交点比例是 (c-a)/(b-a)。例如边上从 8 到 12,阈值 10 的交点就在中间。逐格提取后,还需要把共享端点拼接成连续线。

对角高、另两个角低时,四条边都有交点,连法存在歧义。应使用与双线性插值一致的鞍点(saddle point,沿不同方向可分别上升和下降)判断,例如渐近判别法(asymptotic decider);随意固定一条对角线,可能改变连通性。恰好等于阈值、整条边相等、缺测单元也要有一致规则,否则会重复线段或出现裂口。

端点准确,不代表整段准确 ​

双线性场的一般形式是 f(s,t)=a0+a1*s+a2*t+a3*s*t。s、t 是单元内 0–1 的无量纲坐标,a0–a3 由四角值决定,与 f 同单位;等值阈值 c 不属于这些系数。边交点可以精确满足阈值,但连接两个交点的直线内部未必继续满足。曲线细化可以在单元内求更多等值点,控制标量残差(scalar residual),即该点采样值与阈值之差。把线放到球面或起伏压力面时,还要按地理位置重新求高度;细化等值线与细化曲面贴合是两个误差目标。

动态 shader 与静态几何 ​

隐式着色逐片元检查采样值离最近等值级别有多远,用屏幕空间导数(screen-space derivative,数值随相邻屏幕位置的变化)估计线宽,适合 alpha 连续变化。它无需每帧重新提取线,却不天然提供可导出的折线拓扑与稳定标签。静态几何更适合标签、拾取与导出,但提取、拼接、几何组合都需要成本。

可以在播放时用 shader,暂停后由 Worker 提取几何,等对应 Primitive ready 再切换。任务需带版本号:如果用户快速拖动,旧 Worker 结果不得覆盖新时刻。Cesium 的异步几何准备与应用自己的提取 Worker 是两段工作,不能以“已有 Worker”推断主线程没有重活。

本页实际运行隐式 shader 等值线,提供按间隔/指定值、线宽、采样与时间控件。Marching Squares 和 Worker 交接是本章讲解的几何方案;当前实验没有生成可导出的矢量折线或静态标签。

看见等值线EXPERIMENT 08 · CESIUM 1.145.0

看见等值线

调整 level 和线宽,比较数值场与屏幕上的线。

在浏览器本地运行 · 无需账号 · 鼠标拖动旋转,滚轮缩放

教学合成数据,不代表真实观测或天气预报。规则场用于验证,拟真形态用于观察复杂结构。 数据说明
查看运行源码

此代码直接读取实际运行的实验模块。按 kind 分支定位当前实验,也可查看数据公式和 GLSL。

读取源码…

观察任务 ​

切到指定值模式并调整阈值,再比较规则场和拟真场。锋面、多尺度扰动与缺测会暴露哪些问题?另设你已实现几何提取:提高细分密度后仍与底色不重合,下一步检查什么?

展开答案

复杂场更容易产生密线、短环、鞍点与缺测边界,需要检查连通性和视觉拥挤。持续不重合时,应核对底色和线是否共享空间采样核、时间 alpha、单位及经纬坐标;增加细分不能修复“两个不同场”的根本冲突。拟真场固定种子有助于重现问题,但不代表真实预报。

阅读依据:Cesium 1.145 Primitive 源码、Nielson 与 Hamann:The Asymptotic Decider。

气象学 · 数学基础 · 地理可视化