THE ANALYSIS, NOT A FORECAST: RTMA'S CYCLE IS A DAY
One field set an hour, nothing after it, and a picker that offers days.
Note 04August 20265 min read
Every other page on this site shows a forecast: one cycle, many lead times, a timeline that runs forward from the cycle hour. The RTMA page is the other thing. The Real-Time Mesoscale Analysis is NOAA's hourly 2.5 km estimate of what the surface weather was — observations, radar, satellite and a short-range background reconciled onto the west-expanded NDFD grid, 2345 by 1597 Lambert Conformal cells. Forecasters verify against it. This page lets a reader do the same, in the same colours and on the same viewport as the model pages, so a forecast and the thing it was wrong about sit one tab apart. The raster is 2560 by 1440 on the CONUS view — byte for byte the frame geometry the HRRR and RRFS pages use — which makes analysis-versus-forecast a pixel-for-pixel comparison rather than an interpolation problem.
| source | AWS Open Data, noaa-rtma-pds |
| grid | 2345 × 1597 Lambert Conformal, 2.5 km |
| published | about 48 minutes past the hour |
| file | 84 MB, 13 messages, index alongside |
| fetched per hour | 42 MB in 7 byte ranges |
| drawn per hour | 8 frames and a wind sidecar, 7.4 MB |
| archive | 30 days, about 5.3 GB |
Why the cycle is a day
An analysis has no cycle and no lead time: it is one field set per hour with nothing after it. The literal translation — one hour, one cycle — is wrong twice over. It would put 720 entries in the run picker for a 30-day archive instead of 30, and the site's routing for immutable frames expects a ten-digit cycle, which eight digits of a bare date are not.
So the cycle is a UTC day, and a step is minutes from 00Z: twenty-four steps at 0, 60, … 1380, a day-long loop. A day is also the unit that genuinely commits — complete once and complete forever — where an hour-cycle would be a commit marker for a single frame. Today's day is partial by definition and grows by one step an hour. On every forecast page, resuming a half-finished cycle is an error-recovery path; here it is the ordinary case, exercised twenty-four times a day.
The viewer follows from that and changes as little as possible: the timeline says
18Z where a forecast says F18, the picker offers a day
rather than a run, the export plate's subtitle drops the cycle, and a fresh day
opens on its last step rather than its first — because on a
partly-filled day the interesting hour is the newest one, and opening at 00Z would
hand you this morning and make you scrub.
Eight fields from seven messages
The RTMA publishes height, pressure, temperature, dewpoint, the two wind components, specific humidity, wind direction, wind speed, gust, visibility, ceiling and total cloud — thirteen messages — and nothing else. So half of what this site draws elsewhere does not exist in an analysis: no reflectivity, no CAPE, no precipitation. Of the eight fields drawn, three are derived, and the eight come from seven messages, because temperature and dewpoint each feed three fields and the wind components feed two. The index is read once an hour, the seven distinct messages are fetched together, and the fields are built from that cache: 42 MB of an 84 MB file.
Apparent temperature has no message anywhere. It is the NWS's own composition of three things: the heat index at or above 80 °F, the 2001 wind chill at or below 50 °F with at least 3 mph of wind, and the plain temperature in between. The joins are real and are not smoothed: at 50 °F with a 25 mph wind the wind chill is 42.8, so the map steps seven degrees along the 50-degree contour. Blending that away would make this "feels like" disagree with the NWS's, which is a worse failure on a product whose whole point is to mirror theirs. Two details are easy to get wrong, and were. The heat index is the NWS's two-stage algorithm, not the Rothfusz regression alone, and its dry-air correction is allowed to push the index below the air temperature — an obvious-looking "never colder than the air" safety rail silently deletes it, and turns the NWS's 107 °F at 110 °F and 15% humidity back into 110. And the wind chill needs a floor on the wind: below 3 mph the NWS does not define it, and neither does this.
Relative humidity is derived from temperature and dewpoint by the same code as the HRRR page, so the two products' humidity means one thing.
Wind speed is computed from the components rather than read from the speed message the RTMA also publishes. Measured across the full grid the two agree to 0.012 m/s — packing precision — so taking the components costs nothing and buys two things: one fewer 5.6 MB message an hour, which is 4 GB across a 30-day archive, and a speed raster that cannot disagree with the barbs drawn over it, because they come from the same two numbers.
The winds are grid-relative
RTMA's wind components are resolved against the Lambert grid's own axes rather than against east and north. Across this domain that is up to 18 degrees off true at the corners, and a barb 18 degrees out still looks authoritative. The rotation is undone on the native grid before the warp, and checked against the one message this ingest does not otherwise read — the RTMA's own published wind direction:
| direction error vs the file's own WDIR | mean | 99th percentile |
|---|---|---|
| components as published | 8.045° | 16.832° |
| after rotation to earth | 0.035° | 0.101° |
That also confirms the grid entry itself. The rotation is built from the projection's cone constant and central meridian, and could not land within a tenth of a degree if either were wrong.
Thirty days
The analysis lands about 48 minutes past the hour — measured at :47, :48, :48 and :49 on four in a row — and the pass runs hourly. Thirty days are kept, and the archive was built once by walking backwards a day at a time: about 30 GB off AWS and an hour and a half. The hourly pass always looks at yesterday as well as today, and on a normal run finds every one of yesterday's frames already drawn and does nothing. The reason is the last hour of the day: the 23Z analysis lands at about 23:48 and is drawn at 23:55 on the day it belongs to, so a pass that is late, skipped or blocked at exactly that hour would leave a hole nothing would ever fill, because tomorrow's run only looks at tomorrow.
One domain today. The bucket also carries Alaska, Hawaii, Puerto Rico and Guam analyses on their own grids, and the page is already domain-shaped, so adding one is a grid entry rather than a redesign.