学习 · 天气与天空详解

实时雷达如何到达你的手机

流畅的雷达循环一开始只是数字,而不是现成的影片。Forecast Bar让全国扫描依次经过图块、校验、缓存和设备端渲染,再处理两次扫描之间的空档,让风暴在屏幕上流畅移动。

课程

流畅的雷达循环一开始只是数字,而不是现成的影片。Forecast Bar让全国扫描依次经过图块、校验、缓存和设备端渲染,再处理两次扫描之间的空档,让风暴在屏幕上流畅移动。

一次全国扫描,约一千六百万个数值

NOAA每两分钟将雷达观测合并为一次全国扫描。这部影片使用的扫描包含6,100×2,700个点,共16,470,000个数值。Forecast Bar的服务器每二十秒检查一次有无新扫描。

这是不同的时钟。每二十秒检查一次,并不会每二十秒产生一次新观测。同样,屏幕每秒刷新多次,也不代表收到了同样多的新雷达扫描。

先发送数值,之后再添加颜色

雷达以数字形式传输,每个点一个字节。手机在绘制地图时才添加颜色。这样就把底层雷达数值和观看者看到的配色分开了。

单字节雷达数值网格,其中154被高亮,并按(154减65)除以2换算为44.5dBZ
雷达以每点一字节的形式到达;手机在绘制地图时把每个数值转换成颜色。

各个雷达的扫描并不同步。某个雷达滞后时,它的数据会平缓过渡到下一次真实扫描。影片将此描述为在真实扫描之间工作,而不是虚构一次观测。

用校验过的图块构建完整的帧

每一帧都被切成图块。图块从相邻图块借用一像素的边框,让显示的各部分无缝衔接。每个图块还会获得一个SHA-256指纹。

只有所有图块都通过校验,一帧才会上线。发布后它就不再改变。屏幕所需的图块会在一次请求中以一个文件一起到达,而不是以一连串不完整的片段出现。

切成图块的雷达帧,每个图块都带对勾和LIVE标记,旁边是SHA-256指纹列表,并注明“不可变,发布一次,绝不更改”
只有每个图块的SHA-256指纹都核对无误,一帧才会上线,此后绝不改变。

把不可变的帧放在离你近的地方

因为已发布的帧不会改变,边缘缓存可以保留它一年。缓存的旧帧仍然是那一帧;查找最新扫描是另一项工作。

在设备上,图块叠入GPU内存,颜色在绘制时逐像素应用。影片测得的自动播放结果约为一秒半。这衡量的是循环准备好播放的时间,而不是雷达观测的时效,也不是通用的传输时间。

在扫描之间移动风暴,而不只是淡入淡出

在两次观测之间的几分钟里,风暴一直在移动。普通的交叉淡化会让旧风暴淡出、新风暴淡入,产生两个模糊的副本。

GPU则会估算运动场,让回波沿路径在帧之间移动。结果可以在屏幕下一次刷新时更新,在支持的屏幕上最高可达120Hz。这是显示上限,不是对每台设备的承诺,也不会增加观测频率。

雷达回波上叠加了晚上7:56至8:02之间测得的运动场箭头,旁边写着“测量运动”
GPU不做交叉淡化,而是测量运动场,让回波在扫描之间沿其移动。

要点

下次可以这样核对:

  1. 区分扫描节奏、服务器检查和屏幕刷新。
  2. 即使动画看起来连续,也要看时间戳。
  3. 平滑运动是扫描之间的渲染,不是新的雷达观测。
Transcript

Video transcript

Read the full transcript

这就是实时雷达。真实的风暴,在你的手机上滑行。要做到这么流畅,得解决十个难题。一切从这样的雷达开始。每两分钟,NOAA把它们合并成一次全国扫描:一千六百万个数值。我们每二十秒检查一次有没有新的。

我们不发送图片。我们发送数字,每个点一个字节,让手机来添加颜色。各个雷达的扫描并不同步。所以某个雷达滞后时,我们让它平缓过渡到下一次真实扫描。没有任何虚构。

每一帧都被切成图块,每个图块都从相邻图块借用一像素的边框,所以你永远看不到接缝。每个图块都有指纹。只有全部核对无误,一帧才会上线。然后,它就再也不会改变。你的整个屏幕以一个文件到达。一次请求。

因为帧不会改变,边缘节点会把它们保留一年,就在离你很近的地方。在手机上,图块直接叠入GPU内存,颜色在绘制时逐像素上色。自动播放大约一秒半就绪。

现在,到了最难的部分。扫描相隔几分钟才到,而风暴一直在移动。简单的淡入淡出会把每场风暴变成两个模糊的副本。所以GPU会测量每场风暴的去向,让它沿路径滑动。

没有闪动。只有运动。每一帧,都在屏幕下一次刷新时呈现。一次扫描。十个难题。一个流畅的循环。Forecast Bar。

现在,来学学怎么读懂它显示的内容。选好下一个视频,并订阅频道,别错过下一集。

Forecast Bar能帮上什么

学以致用。

实时雷达

一个完整的帧,然后是流畅的循环。

影片跟随Forecast Bar的实时雷达,从NOAA的全国扫描,经过校验过的不可变图块,到设备上添加颜色。运动融合可在iPhone、iPad、Mac和Apple TV上运行。

  • 添加颜色前,每个雷达点一个字节
  • 一次请求获取屏幕所需的帧数据
  • 在所引用的测量中,约1.5秒开始自动播放
读懂结果

流畅的运动只是故事的一半。

了解循环的绘制方式,能解释风暴为何滑行。学会读雷达,才能明白颜色、运动和时间标签的含义。配套课程讲的就是这下一步。

  • 屏幕刷新与雷达扫描频率是两回事
  • 运动融合可在iPhone、iPad、Mac和Apple TV上运行
常见问题

常见问题

实时雷达每秒更新120次吗?
在支持的设备上,屏幕最高可以120Hz刷新。影片中的全国雷达扫描每两分钟更新一次;扫描之间的平滑渲染不会产生新的观测。
为什么发送雷达数字而不是图片?
Forecast Bar每个点发送一个字节,在设备上绘制时添加颜色。雷达数值与显示的配色是分开的。
雷达帧为什么可以缓存一年?
一帧只有在图块通过校验后才会发布,此后绝不改变。不可变的帧可以被缓存,而帧列表负责标识新的扫描。
1.5秒这个数字是说雷达数据只有1.5秒前的吗?
不是。这是测得的自动播放就绪时间,不是观测时效或传输延迟。
Forecast Bar App图标

结合背景读懂预报。

探索上述Forecast Bar功能。功能可用性取决于你的订阅方案、设备和位置。

免费下载;实时天气需要订阅。在iPhone和iPad上,每种订阅都为新订阅者提供7天免费试用;Mac方案不含。Mac与iOS方案相互独立;iOS上的Forecast Bar Gold包含Apple TV版。