For sources of Nexrad level 3 data, refer to these urls:
- ftp://tgftp.nws.noaa.gov/ (FTP server, go to /SL.us008001/DF.of/DC.radar/ for the data. Can be used in Windows file explorer)
- https://registry.opendata.aws/noaa-nexrad/
- https://console.cloud.google.com/storage/browser/gcp-public-data-nexrad-l3;tab=objects?pli=1&invt=AbulJA&prefix=&forceOnObjectsSortingFiltering=false
- https://console.cloud.google.com/storage/browser/gcp-public-data-nexrad-l3-realtime;tab=objects?inv=1&invt=Ab30-A&prefix=&forceOnObjectsSortingFiltering=false&pageState=(%22StorageObjectListTable%22:(%22f%22:%22%255B%255D%22)) (for real time level 3 from Google)
This package is on NuGet.org and can be found here https://www.nuget.org/packages/Nexrad.NET/.
To add it to a project via the package manager console, run this dotnet add package Nexrad.NET --version 1.0.6 (latest version as of 10/16/25).
Or add it in your package reference in your project file <PackageReference Include="Nexrad.NET" Version="1.0.6" />
Nexrad.NET is a C# library created for the purpose of reading and processing NEXRAD Level 3 radar files.
This library is pretty straightfoward in its usage. Here is a basic example of decoding a radar file:
BinaryReader reader = new(File.OpenRead("super_res_base_ref_file"));
Level3 level3 = new(ref reader);The Level3 object has different arguments. They are specified as:
Level3 level3 = new(
ref reader, // binary reader, which is always required and is the only required arg. (must be passed as reference via ref keyword)
processingStages = 0b111, // processing stages. see below for more details.
textHeaderLength = -1, // the length of the text header, if known. default value is -1.
guessFormat = true, // tells the object to try to guess the format and text header length. default value is true.
enableDebuggingLogging = true // tells the object to output to console for logging reasons.
);Currently, there are 4 unsupported products that may get support in the future. Those products are:
- Storm Structure (code=62)
- Melting Layer (code=166)
- Digital Precipitation Array (code=81)
- Supplemental Precipitation Data (code=82)
The Level3 object has a processing stages argument which tells the class what parts of the product to decode. The value is structured as "0b111". This value is composed of 3 bits, each one telling the program what part to decode.
Basic overview of the bit stucture:
0b111
^^^
|||
||⤷ Bit 3. Decode symbology block if set to 1.
|⤷ Bit 2. Decode graphic block if set to 1.
⤷ Bit 1. Decode tabular block if set to 1.
Setting any of the bits to 0 will make that block not get processed. Can be used to save memory and processing time if you do not need the other blocks.