@azohra/meteo.grib
纯 TypeScript 中的 GRIB2 解码器, 因为预测引擎需要编写
网格模板3.1(旋转经纬度:每个ECCCHRDPS,RDPS,
REPS,以及 RAQDPS 字段)和多场消息(NCEP的配对U/V)
子消息),并且没有维护的JavaScript解码器也提供.
浏览器安全核心没有I/O; JPEG 2000 和工人池
仅生活在节点 @azohra/meteo.grib/j2k-node 子路径.
pnpm add @azohra/meteo.grib
解码真实字段
此解码一个承诺的HRDPS 2 m 温度场(旋转网格, JPEG 2000包装,促使包装的组合)和 一次发射样本:
// decode-fixture.mjs — run inside grib/ after `pnpm build`
import { readFileSync } from "node:fs";
import {
decodeFieldValues,
nearestGridpoint,
parseFields,
parseGrid,
splitMessages,
} from "./dist/index.js";
import { createNodeJ2kDecoder } from "./dist/j2k-node.js";
const bytes = readFileSync("test/fixtures/hrdps-continental-tmp-2m.grib2");
const [field] = parseFields(splitMessages(bytes)[0]);
const grid = parseGrid(field.section3); // rotated lat-lon (GDT 3.1)
const decodeJ2k = await createNodeJ2kDecoder(); // every ECCC field is JPEG 2000
const { values } = decodeFieldValues(field, { decodeJ2k });
const site = nearestGridpoint(grid, 49.3634, -117.2361); // a launch near Nelson, BC
console.log(`${grid.kind} ${grid.ni}x${grid.nj} = ${values.length} points`);
console.log(site);
console.log(`2 m temperature: ${(values[site.index] - 273.15).toFixed(2)} C`);
rotated 2540x1290 = 3276600 points
{
index: 879425,
latitude: 49.3642714812993,
longitude: -117.23441055371016,
distanceKm: 0.1560769875776412
}
2 m temperature: 23.05 C
每个解码路径都被接受比特比特比特比特比特比特
被冻结的20份邮件 test/fixtures/· ;
门的完整故事是在
https://meteo.azohra.com/docs/grib/recentness/ 页面存档备份,存于互联网档案馆。 。 。 .
文档
参考文献存在于 docs/ (封面,环绕门,
和JPEG 2000编码器和工人游泳池各有一个页面)
任职于 https://meteo.azohra.com/docs/grib/ (中文(简体) )。 。 。 .
麻省理工学院