Experimental dataset. This dataset may change or be removed without notice. Experimental datasets are not supported like the rest of the dynamical.org catalog.
| Spatial domain | Global ASOS/AWOS stations |
| Time domain | 1940–present |
| Time resolution | Hourly (METAR) |
| Update frequency | Hourly |
| Format | GeoParquet (year-partitioned) |
⎘
Historical and near-real-time METAR observations from global airports. Observation data is retrieved from the Iowa Environmental Mesonet, maintained by Iowa State University, which archives and distributes ASOS data.
Each file contains decoded METAR fields for all global ASOS/AWOS stations in a given year, including temperature, dewpoint, precipitation, wind, visibility, and pressure in both imperial and metric units. Station metadata (name, elevation, state, country, county, WFO, timezone) is embedded in each observation row. Latitude and longitude are included as a GeoParquet geometry, enabling spatial queries and direct use with geospatial tools.
The dataset is partitioned by year using Hive-style paths
(year={YYYY}/data.parquet). This allows efficient access to
specific time ranges without scanning the entire archive.
Observations are stored as received from the Iowa Environmental Mesonet with no resampling, interpolation, or quality-control filtering applied. The raw METAR reports are decoded into tabular columns and written to GeoParquet with zstd compression. Updates are ingested hourly as new reports become available.
Storage for this dataset is generously provided by Source Cooperative, a Radiant Earth initiative.
import duckdb
from datetime import datetime
base = "https://data.source.coop/dynamical/asos-parquet"
urls = [f"{base}/year={y}/data.parquet" for y in range(1940, datetime.now().year + 1)]
df = duckdb.execute("""
SELECT valid, station, name, country, tmpf, dwpf, sknt, p01i
FROM read_parquet($1, hive_partitioning=true)
WHERE station = 'JFK'
ORDER BY valid
""", [urls]).fetchdf()