Skip to content
产品中心
天气雷达createStiLayer

QX/T 653 风暴追踪。当前位置、历史路径和预报路径画成点 / 线,当前位置按最大反射率分色。工厂 createStiLayer。能时序,写在产品的「能力」里。

参数 ​

本页绘制用这些字段。site 是雷达站心,必填。风暴画点线,不填色。

参数必选用途默认
data必选解析出口的 values,一张风暴表—
product必选固定写 sti—
site必选雷达站心 { lon, lat },用来把方位 / 距离投到地面—
显示与交互可选见 图层—

数据 ​

风暴追踪是 RSTM 原件。二进制,魔术字 RSTM。GenericType=2,ProductType=37,产品代号 058 / 58。

RSTM
通用头
站点块
切块 × 切块数
产品块(256 字节)
风暴表(从产品块 +192 起)
参数含义
RSTM魔术字。认文件靠它
GenericType2 气象产品
ProductType37 风暴追踪
产品代号058 / 58。与平面最大反射率高度的 ProductType=58 不是同一种块
站号 / 站名 / 经度 / 纬度站点块。图层用经纬把方位 / 距离投到地面
风暴数风暴表头 20 字节里的个数,最多 256
运动每个风暴 24 字节:速度、方向
预报点 / 历史点先写点数,再写点。每点 12 字节:方位、距离(米)、unix 时次
属性每个风暴 60 字节:编号、方位、距离、高度、最大反射率 sti、最大反射率高度、液态水、顶高、底高等

数据从产品块 +192 起:风暴头 → 运动 ×N → 预报点 → 历史点 → 属性 ×N。路径点是该点自己的方位 / 距离 / 时次,不是格网点列。路径点时次来自该点 unix。原件多为 .bin,也可传打包,解开再认 RSTM。


风暴追踪 ​

风暴追踪(示例)

通过绘制风暴当前位置、历史和预报路径,用来看风暴怎么走。产品 key 为 sti,单位 dBZ(最大反射率)。本产品能时序。

文件 ​

QX/T 653「风暴追踪」。国内交换名 Z_RADR_I_*_P_DOR_*_STI_*。原件多为 .bin,也可传 .gz / .bz2 / .zip / .tgz。format: 'rstm'。

数据 ​

文件规则见页头。本产品当前位置按属性里的最大反射率分色,单位 dBZ。sti / 距离 / 高度是标量;预报 / 历史是路径点。地面位置由站点 + 方位 + 距离推。

调用 ​

ts
const parsed = await parse(buffer, {
    format: 'rstm',
    // 一次只出这一列
    product: 'sti'
})
const layer = createStiLayer({
    // 解析出口
    data: parsed.values,
    // 画哪一列,与 parse 相同
    product: 'sti',
    // 雷达站心,用来把方位 / 距离投到地面
    site: parsed.site
})
layer.addTo(globe)

当前场四至:layer.getBounds()。库不飞入,套合由地球宿主相机做。没有风暴距离时按 345 km。见 图层。

色标 ​

按最大反射率分色:≥50 红,≥40 深橙,≥35 橙,其余黄。≥50 的红心带呼吸闪烁。预报路径橙色虚线,历史路径蓝色实线。

档 (dBZ)5354050
色#ffc107#ff9800#ff5722#f44336

能力 ​

雷达时序 同一要素 2~6 个时次。parse 一次解开,图层只画第一场,bindSequence 切帧。某一场可以是空表(消亡),仍算合法时序帧。不调 play 就不会播。

ts
const frames = await parse([bufferA, bufferB], {
    format: 'rstm',
    // 一次只出这一列,多份必须相同
    product: 'sti'
})
const layer = createStiLayer({
    // 第一场
    data: frames[0].values,
    // 画哪一列,与 parse 相同
    product: 'sti',
    // 雷达站心,用来把方位 / 距离投到地面
    site: frames[0].site
})
const sequence = bindSequence(layer, frames)
sequence.setIndex(1)

细写见 雷达时序。对照 风暴时序示例。