A javascript implementation for decoding Nexrad Level II radar archive files.
A live demo showing the output of this library (via nexrad-level-2-plot) for select radar sites is available at https://nexrad-demo.netbymatt.com/
v2.0.0 is a major overhaul of the parsing engine and has several breaking changes. See UPGRADE.md for detailed breaking changes.
s3://unidata-nexrad-level2-chunks/
s3://noaa-nexrad-level2
$ npm i nexrad-level-2-data
const { Level2Radar } = require('nexrad-level-2-data')
const fs = require('fs');
const file_to_load = "./data/KTLX20130420_205120_V06" // The radar archive file to load
const rawData = fs.readFileSync(file_to_load);
new Level2Radar(rawData).then(radar => {
console.log(radar.getHighresReflectivity())
})
Complete API documentation
A formal testing suite is not provided. Several test-*.js
are provided with matching data in the ./data
folder. These can be run individually as shown below.
node test.js
node test-chunks.js
node test-error.js
The output of each test script is sent to the console.
This library will throw on many errors including:
s3://noaa-nexrad-level2
and s3://unidata-nexrad-level2-chunks/
. A very basic attempt is made to detect these errors, discard the affected record and find the begining of the next record. This does not always succeeded. The following are the possible outcomes:Invlaid record id
or Invalid block type
Level2Radar.data[] arrays
looking at Azimuths would need to be performed to find the gaps in data. However any program calling this routine should be considering the Level2Radar.data[].azimuth
data for further processing and thus should be unaffected.Level2Data.hasGaps
is set to true
Invalid record id
or Invalid block id
Unable to recover message
Level2Data.isTruncated is set to
true The script
test-error.jscan be run to test some of this functionality. It parses data in
./data/messagesizeerror`.Nexrad data is stored as message types. This package currently processes the following messages. | Message | Title | Description |
---|---|---|---|
1 | Digital Radar Data | Reflectivity and velocity data. Replaced by message 31 in 2008 which supports a higher resolution. | |
2 | RDA Status | ||
5 | Volume Coverage Pattern | Overview of the scanning paramaters | |
7 | Volume Coverage Pattern | Overview of the scanning paramaters | |
31 | Digital Radar Data Generic Format | Reflectivity and velocity data |
You can find more information on how radar data is encoded at NOAA mainly in the document ICD FOR RDA/RPG - Build RDA 20.0/RPG 20.0 (PDF)
This work is based on the project of Unidata and nexrad-radar-data