Radar scans
noaa:nexrad-level2 downloads whole Level II scans over anonymous HTTPS from the
public archive. Provide both timestamps and a radar ID or geographic query.
Start with a dry run to inspect the number and size of files:
usdata fetch noaa:nexrad-level2 -p site=KTLX \
--start 2024-05-06T20:00Z --end 2024-05-06T20:05Z --dry-run
A query spans at most 31 days; split longer intervals. Remove --dry-run to
download. There is no server-side variable subsetting; each file contains the
available scan moments.
Times are UTC
Timestamps without a timezone are treated as UTC, including queries built
directly in Python; explicit offsets are converted to UTC. Both bounds are
inclusive. A date alone as the end means the last instant of that UTC day,
in any ISO 8601 spelling (2024-05-07, 20240507, or 2024-W19-2), so a
window from 2024-05-07 to 2024-05-07 is that whole day; give the end a
time to stop earlier. See time and place.
site and sites are mutually exclusive and accept non-empty strings or lists.
IDs are case-insensitive. With a geographic query, nearest selects a positive
number of nearby radars and cannot be combined with explicit IDs. Selection
falls back to the nearest radar when none lies inside the bounding rectangle.
The bundled station list excludes test/research radars from default selection. See archive and station metadata notes.
Coverage outside the declared extent
The catalog extent, 180°W to 27°W and 15°N to 72°N, holds every bundled radar
in the western hemisphere, from the Aleutians to Lajes in the Azores (LPLA).
Four radars lie across the antimeridian from it: Andersen AFB on Guam (PGUA),
Kunsan (RKJK) and Camp Humphreys (RKSG) in Korea, and Kadena on Okinawa
(RODN). A box cannot wrap across 180°, and one spanning every longitude would
match any search anywhere, so these four stay outside the extent. Registry
search by place or point does not list the radar datasets there; fetch them by
site id (-p site=PGUA), or with a geographic query, which falls back to the
nearest radar. A registry test keeps this list and the bundled table in agreement.
The optional usdata[radar] reader opens local scans with xradar; an explicit
zero-based sweep chooses a sweep. See choosing sweeps,
reader limits,
temporal selection, and the
executed radar example.
Choosing sweeps
A sweep index is a position in the volume, not an elevation. Each low angle is
a split cut, scanned once for reflectivity and the dual-polarization moments
and once more for velocity, and SAILS rescans the lowest angle inside the
volume. KTLX20240507_021123_V06, the KTLX volume in progress when the
Barnsdall EF4 began, is VCP 212 with three SAILS cuts, 23 sweeps over seven
minutes:
$ usdata inspect noaa:nexrad-level2/KTLX20240507_021123_V06
vcp: 212
sweeps:
# cut angle moments start end rays notes
0 1 0.48 DBZH ZDR PHIDP RHOHV CCORH 02:11:23 02:11:39 720
1 2 0.48 DBZH VRADH WRADH 02:11:40 02:12:04 720
2 3 0.88 DBZH ZDR PHIDP RHOHV CCORH 02:12:05 02:12:21 720
3 4 0.88 DBZH VRADH WRADH 02:12:23 02:12:46 720
4 5 0.48 DBZH ZDR PHIDP RHOHV CCORH 02:12:47 02:13:04 717 SAILS
5 6 0.48 DBZH VRADH WRADH 02:13:05 02:13:29 720 SAILS
...
8 9 1.80 DBZH VRADH WRADH ZDR PHIDP RHOHV CCORH 02:14:11 02:14:24 360
...
16 17 0.48 DBZH ZDR PHIDP RHOHV CCORH 02:16:18 02:16:34 720 SAILS
17 18 0.48 DBZH VRADH WRADH 02:16:35 02:16:59 720 SAILS
...
22 23 19.51 DBZH VRADH WRADH ZDR PHIDP RHOHV CCORH 02:17:55 02:18:07 360
The 0.5° angle is eight sweeps, four of reflectivity and four of velocity, and
a VCP without SAILS puts different angles at those indices. In this volume
velocity (VRADH) and spectrum width (WRADH) arrive only on the Doppler half
of each split cut, at 1.32° and below, and on every sweep from 1.80° up.
To select the same scan in every volume, choose by angle, moment, and time
rather than by index. readers.nexrad_sweeps reads that table from the
volume's metadata without decoding any moment, and item.inspect().nexrad
returns it with the VCP number:
from usdata.readers import nexrad_sweeps
sweeps = nexrad_sweeps(item.path)
lowest = min(sweep.fixed_angle for sweep in sweeps)
first_velocity = next(s for s in sweeps if s.fixed_angle == lowest and "VRADH" in s.moments)
radar = item.open_nexrad(sweep=first_velocity.index)
Whether to take the first lowest-angle scan of each volume or every SAILS
rescan is a choice the analysis makes: here the rescans add three more
low-level velocity scans, starting 85 to 112 seconds apart, all later than the
time in the file name. Each sweep's start and end say when.
Metadata sources
Every value in the catalog entry's resolution, cadence, citation, terms, variables, and limits comes from one of these pages. A field the agency does not publish is left empty rather than estimated.
- Temporal resolution: the NCEI NEXRAD product page, which says a Level II file typically holds four, five, six, or ten minutes of base data depending on the volume coverage pattern.
- Updates, citation, and terms: the NODD registry entry ("New Level II data is added as soon as it is available") and the NOAA Open Data Dissemination statement it quotes.
- Variables: the moments the
radarreader returns across every sweep ofKTLX20240507_021123_V06, decoded on 2026-10-08, with the units it states; velocity and spectrum width in m/s, which the reader writes as "meters per seconds". - Longest query window:
MAX_WINDOWinusdata.providers.noaa.nexrad. - Spatial resolution and latency are empty: the NCEI page refers gate and azimuth spacing to Federal Meteorological Handbook No. 11, and neither NCEI nor NODD publishes a latency figure for the archive.
Reference
noaa:nexrad-level2 · Released · Included since usdata 0.2. NEXRAD Level II Radar.
At a glance
- Files: NEXRAD Level II
- Selection: Whole radar scans by site and inclusive UTC scan-start time
- Required inputs: Both timestamps; radar IDs or a geographic query
- Open locally:
usdata[radar]· Reader guide - On usdata.dev: NEXRAD radar scans, with a walkthrough
- Studies: What did radar and satellites show around a reported tornado?; Which severe reports came with rotation and lightning?; For one Oklahoma tornado, do the two report archives agree on when and where it was, and what did radar, lightning, and the model analysis show at that place and time?
Parameters
Pass these as --param name=value to the CLI, as params: entries in a manifest, or as keyword arguments to build_query.
| Parameter | Meaning |
|---|---|
nearest |
Take the N radars nearest the query centre instead of naming sites. |
site |
One radar ICAO id, for example KTLX. |
sites |
Several radar ICAO ids, comma-separated or a list. |
Variables
| Variable | Units | Meaning |
|---|---|---|
DBZH |
dBZ | Equivalent reflectivity factor H |
ZDR |
dB | Log differential reflectivity H/V |
PHIDP |
degrees | Differential phase HV |
RHOHV |
unitless | Correlation coefficient HV |
VRADH |
m/s | Radial velocity of scatterers away from instrument H; Doppler sweeps only |
WRADH |
m/s | Doppler spectrum width H; Doppler sweeps only |
CCORH |
unitless | Clutter correction H; surveillance and batch sweeps |
Catalog facts
- Availability: since 0.2
- Domain: Weather radar
- Temporal resolution: One volume scan every 4, 5, 6, or 10 minutes, set by the volume coverage pattern
- Updates: New Level II data is added as soon as it is available
- Longest query window: 31 days
- Terms of use: https://www.noaa.gov/information-technology/open-data-dissemination
- Citation: NEXRAD on AWS was accessed on [date] from https://registry.opendata.aws/noaa-nexrad
- Geographic bounds (WGS84): west -180°, south 15°, east -27°, north 72°
- Catalog date range: 1991-06-01 to open-ended
- Coverage varies by station, product, and date; the range above does not guarantee observations.
- Upstream documentation
- License: US Government Work (public domain)
- Transport:
s3 - Adapter:
usdata.providers.noaa.nexrad:NexradLevel2