vgrib2
Version:
[](https://badge.fury.io/js/vgrib2)
61 lines (54 loc) • 1.84 kB
text/typescript
import { Buffer } from 'buffer/'
import { lookupTable51 } from '../tables/table-5'
/**
* @description Returns a template generator for the given template number
* @param template Template number
* @returns Template generator
*/
export const getTemplate5 = (template: number) => {
switch (template) {
case 0:
return template50
default:
throw new Error(`Template 5.${template} not defined`)
}
}
/**
* @description Returns a template map for the given template number
* @param table Template number
* @returns Template Map
*/
export const lookupTemplate5 = (template: number) => {
switch (template) {
case 0:
return lookupTemplate50
default:
throw new Error(`Template 5.${template} lookup table not defined`)
}
}
/**
* Data Representation Template 5.0
*
* [Read more...](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_temp5-0.shtml)
*/
const template50 = (section: Buffer) => {
return {
/** Reference value (R) (IEEE 32-bit floating-point value) */
referenceValue: section.readFloatBE(11),
/** Binary scale factor (E) */
binaryScaleFactor: section.readInt16BE(15),
/** Decimal scale factor (D) */
decimalScaleFactor: section.readInt16BE(17),
/** Number of bits used for each packed value for simple packing, or for each group reference value for complex packing or spatial differencing */
numberOfBits: section.readUInt8(19),
/** Type of original field values (see Code [Table 5.1](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table5-1.shtml)) */
originalType: section.readUInt8(20)
}
}
const lookupTemplate50 = (templateValues: ReturnType<typeof template50>) => {
return {
...templateValues,
/** Type of original field values */
originalType: lookupTable51(templateValues.originalType)
}
}