vgrib2
Version:
[](https://badge.fury.io/js/vgrib2)
47 lines (35 loc) • 1.34 kB
text/typescript
import { Buffer } from 'buffer/'
import { splitGribChunks, createPacket } from './grib'
import { splitSectionChunks, parseSections, lookupSections } from './section'
import { GRIBPacket, GRIBPacketValues } from './types/grib'
/**
* @param data Buffer containing entire GRIB file contents
* @returns Parsed GRIB file object
*/
const parse = (data: ArrayBuffer): Array<GRIBPacket> => {
const buffer = Buffer.from(data)
const gribChunks = splitGribChunks(buffer)
const packets = gribChunks.map((gribChunk: Buffer) => {
const sectionChunks = splitSectionChunks(gribChunk)
const sectionValues = parseSections(sectionChunks)
const sections = lookupSections(sectionValues)
return createPacket(sections)
})
return packets
}
/**
* @param data Buffer containing entire GRIB file contents
* @returns Parsed GRIB file object with value numbers
*/
const parseNoLookup = (data: ArrayBuffer): Array<GRIBPacketValues> => {
const buffer = Buffer.from(data)
const gribChunks = splitGribChunks(buffer)
const packets = gribChunks.map((gribChunk: Buffer) => {
const sectionChunks = splitSectionChunks(gribChunk)
const sectionValues = parseSections(sectionChunks)
return createPacket(sectionValues)
})
return packets
}
export const GRIB = { parse, parseNoLookup }
export * from './types/grib'