Skip to content

时间插值与两个时钟 ​

两幅预报场切换时会跳变,时间插值(temporal interpolation)能让视觉连续。但一段顺滑动画不代表模型真的输出了所有中间时刻。我们需要同时说明数据是什么,以及浏览器如何展示它。

先用采样与插值理解权重,再用向量理解为什么 U/V 必须先分别混合。

数据时间跨越离散成员,动画时间推动粒子,二者由明确规则关联

数据时刻决定采样哪两个场 ​

对于相邻数据时刻 t0、t1,在中间时刻 t 定义无量纲权重 alpha(α):t、t0、t1 采用相同时间单位,且 t1>t0;相邻温度则必须使用同一单位与高度层。

text
alpha = (t - t0) / (t1 - t0)
value(t) = (1-alpha) × value0 + alpha × value1

例如两帧温度为 10°C 和 14°C,四分之一处是 11°C。若用户暂停在 alpha=0.37,状态应保留在该位置;不能因为进入静态渲染路径就悄悄吸附到下一帧。周序列、月序列或不同起报时间也不能仅按数组位置随意拼成连续时间轴。

矢量先插值分量 ​

U 表示东西向速度分量(velocity component),向东为正;V 表示南北向分量,向北为正,单位均为 m/s。先混合 U/V,再用 sqrt(U*U+V*V) 求矢量的模(magnitude,也叫长度),即风速,结果仍为 m/s。两帧分别为 (20,0) 与 (-20,0),中点矢量是零;若先把两帧风速都算成 20 再插值,就会得到方向抵消但速度不减的矛盾结果。方向角同样不能直接在 359° 与 1° 之间线性插值。

动画时钟决定粒子走多远 ​

粒子还需要一个积分步长(integration time step)dt,单位为模拟秒。积分(integration)在这里是把连续的小位移累加起来;匀速时位移就是速度乘时间。用户把“每个预报成员播放时间”从 4 秒改为 8 秒,不一定希望风粒子移动速度也减半。应分别维护数据时间和动画时间,明确播放暂停时粒子是继续流动还是一起停止。固定帧率假设也不可取:每帧都移动同样距离,会让高刷新率屏幕上的粒子更快。

应用可以限制过大的 dt 或分成多个子步,避免标签页恢复后粒子一次跨过半个地球。手动跳转时清空旧轨迹,通常比把旧位置误认为新时刻的历史更清楚。

风的运动EXPERIMENT 09 · CESIUM 1.145.0

风的运动

观察 GPU 更新粒子状态与在地球上的运动。

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

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

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

读取源码…

观察任务 ​

观察风场中的粒子运动。即使底层 U/V 完全固定,粒子为什么仍能不断移动?再判断:某月累计降水从 20 mm 到另一个月 40 mm,中间插值得到 30 mm,能否称为那个日期的真实累计降水?

展开答案

粒子沿静态速度场积分,变化的是粒子位置,而非数据。月累计量有明确统计窗口,两个月的数值混合不自动定义中间日期的累计量。可以作为注明假设的视觉过渡,却不能伪装成新增的模型预报;必要时应使用离散切换。

缺测从一帧出现到另一帧消失时,也必须选择保守隐藏、最近有效帧或其他明确策略。不能把 sentinel 当普通数参与混合。

阅读依据:Cesium 1.145 Clock、Cesium 1.145 SampledProperty。

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