Earth2Studio 中文学习手册0.19.0交互实验 ↗
CHAPTER 05 / LEARN BY UNDERSTANDING

看懂输出与数据格式

一个预测值需要哪些坐标

数组中的 values[0, 4, 100, 200] 本身没有气象含义。只有维度顺序和坐标齐全,才知道它代表哪次起报、哪个时效和哪个地理位置。Earth2Studio 用张量与命名坐标一起传递状态;输出后仍要保存这些含义。

确定性预报常见逻辑维度是 [initialization, lead_time, latitude, longitude],每个变量单独存储;集合预报增加 member。某些模型另有历史输入轴、非规则网格或不同坐标形式,必须读实际输出。IO 说明

三层数据,而不是一份文件包办所有用途

层 推荐用途 格式方向
推理与科学留存 回报评估、诊断、重处理 Zarr;需要单文件互换时用 NetCDF
标准科学描述 变量、网格、层次、时间、来源 采用 CF 思想的明确元数据
浏览器分发 快速显示选中的变量与目标 JSON manifest + 按目标分开的数值二进制

Zarr 擅长多维分块访问;NetCDF 便于气象工具互换。浏览器不必为了显示一帧而下载整个全球、多变量、多个集合成员的运行结果。图像瓦片可以作为显示派生物,但不能取代 tooltip 所需的原始科学值。

CF 约定 为坐标、单位、日历、时间边界和统计方法提供了成熟表达。普通 JSON 采用其中的思想,不等于它已经成为完整的 CF 合规文件。

时间是最容易悄悄出错的地方

瞬时值:明确 valid_time 和 lead_time。例如 00:00 起报的 +6 小时 t2m 是 06:00 的状态,不是 00:00~06:00 的平均温度。

区间量:明确 valid_start、valid_end、边界规则及 mean/sum/max/...。例如 [00:00, 06:00) 的区间平均,与终点 06:00 的瞬时场并不相同。

累计量:明确是“本时段累计”还是“从起报累计”。把累计场转成每段量时要先核实重置规则,不能只做相邻帧相减。

非公历资料:保存原始 calendar 和数值时间单位。365_day、360_day 不能直接塞进 JavaScript Date 后声称是 UTC 公历;若要与公历产品叠加,必须有经过确认的映射规则。

数值规范

一个可用于浏览器的标量资产可以采用 little-endian Float32,行优先,缺测为规范化 NaN。元数据需要至少包含:dtype、字节序、shape、dimension order、单位、网格、解码字节数、压缩方式、摘要和缺测数量。

decoded_bytes = 各维度长度乘积 × 每元素字节数

SHA-256 应明确针对压缩前的规范化字节还是压缩后的对象;若沿用压缩前摘要,最好另外保留存储对象摘要以验证上传。JSON 不能写裸 NaN;元数据写字符串规则,NaN 只存在于二进制数组。

科学值与低精度显示副本应分开标记。Float64 转 Float32、重新网格化、平滑和分位数计算都要记录转换方法与误差含义。

温度、气压与位势

变量 常见科学单位 显示转换 需要特别注意
t2m / pressure-level temperature K °C = K − 273.15 温差 K 与温差 °C 数值相同,但绝对温度要减偏移
msl Pa hPa = Pa / 100 海平面气压与地面气压不同
u / v m s⁻¹ 风速为 √(u²+v²) 明确 east/north 分量;气象风向是来向
geopotential m² s⁻² 位势高度 = 位势 / 9.80665 不能把 z 名称直接解释为米
geopotential height m 可按业务以 m 或 dam 展示 不可再次除以重力常数

这些转换必须发生在明确知道变量语义后。Earth2Studio 的源适配器可能已做一次转换;保留其使用的常数和转换记录,避免重复处理。

网格和地图不是同一个东西

经纬度网格是数据空间;Web Mercator、地球三维视图等是显示空间。拥有经纬度输入不代表某个地图引擎已经支持任意投影。

全球经度可以规范到 [-180,180),但必须同步重排数组列。纬度变成北到南时也要同步重排行。不能只改坐标而不改数值。经度周期边界、极点是否包含、格点中心与单元边界要明确;720 和 721 行不能靠“补一行”随意互换。

曲线网格需要同形二维经纬度坐标;不能用四个边界值替代真实网格。风场从投影网格转到地理坐标时,还可能需要旋转分量,而不仅是重采样。

一次预报会有多大

以 721 × 1440、Float32 为假设,单变量单目标约 3.96 MiB。72 变量、含初始帧的 41 个目标约 11.42 GiB/成员;16 个成员约 182.68 GiB,尚未计算压缩、坐标、其他元数据和中间工作空间。

这只是按维度算出的未压缩量,不是模型显存,也不是实测下载大小。假设每 6 小时一次,41 帧对应初始时刻加未来 10 天。公开展示只需要少量变量时,应减少分发内容;科学留存范围另行决定,不能默认永久保存所有成员。

练习

假设一个资产有 721×1440 个 Float32 样本。若解压后字节数不是 4,152,960,应拒绝解码或重新检查元数据。若字节数相同,也不能据此证明数据正确:还要检查摘要、坐标、单位与时间。