Methodology & Data Sources

How the tools on this site are built, and what I've found while building them

Every map on this site is built the same way: pull a NOAA or EPA inventory directly from its primary source, parse it against the published format specification (not a guess), and disclose whatever the data itself turns out to say — including when it disagrees with its own documentation. This page is the long version of what's summarized in each map's footer.

Data sources

DatasetSourceFormat reference
GHCNh station inventoryNOAA NCEI Global Historical Climatology Network hourlyghcnh-station-list.txt
ISH / ISD station historyNOAA NCEI Integrated Surface Databaseisd-history.csv, isd-history.txt
Upper-air station inventoryNOAA NCEI Integrated Global Radiosonde Archive v2igra2-station-list.txt, igra2-list-format.txt
1-minute ASOS availabilityNOAA NCEI ASOS one-minute data, Day-1 Month Inventory Reporttd6405.txt
AERMINUTE 2013 gapEPA AERMINUTE User's Guide, Appendix BEPA-454/B document series

General approach

Findings worth flagging

These came out of building and QA'ing the tools, not out of a separate research exercise. They're the kind of thing that matters if you're citing this data in a permitting record or a technical paper.

A blank record in the IGRA v2 station list

Line 955 of the current igra2-station-list.txt carries no station ID, name, or coordinate — every field is blank except the period of record (1946–2025) and a sounding count of 70,410. It sorts alphabetically between HUM00012982 and ICM00004089, and ICM00004018 Keflavík is otherwise absent from the inventory. The blanked record is probably Keflavík — that's an inference from sort position and absence, not a NOAA statement — and it is not plotted on the upper-air map because no coordinate is published for it.

ISD's freeze date doesn't quite match its own data

NCEI announced that ISD would not be updated beyond 24 August 2025. The station history file itself tells a slightly different story: 8,985 records end exactly on that date, but 2,194 more run past it, to a maximum end date of 28 August 2025. Treat 2025-08-24 as the effective freeze and the few days beyond it as residual, not as evidence the dataset is still being maintained.

The AERMINUTE 2013 gap, parsed and verified

Appendix B of the AERMINUTE User's Guide lists ASOS stations missing 1-minute data for June–December 2013. A first parse of the guide's text came back with 247 stations against a stated total of 253 — six Wyoming stations were dropped because the parser's line buffer didn't reset after a failed match. Fixed, the parse returns exactly 253, matching the guide.

The surface/upper-air pairing tool is proximity only

The pairing map selects each surface station's nearest upper-air site that meets a given period-of-record filter. That is a distance calculation, not a representativeness determination under 40 CFR Part 51 Appendix W. Proximity is not the test Appendix W applies, and the nearest sounding site can sit on the wrong side of a mountain range or a coastline. Use the tool to build a candidate list; argue representativeness separately, on the merits.

What the AERMINUTE map does and doesn't show

The 1-minute ASOS availability map on this site layers two different kinds of information, and they answer different questions:

What it does not show is continuous archive-availability history between 2014 and today. NCEI's bulk asos-onemin folders stop at 2022, and the only ongoing record after that is a long, irregular series of dated inventory snapshots in NCEI's Inventory directory — each one a point-in-time report covering a different window, not a running total. Building a genuine multi-year completeness picture means fetching and reconciling dozens of those files against each other. That work has not been done yet; it's a natural next step for this tool, not something the current map claims to already do.

Limitations that apply across the board