Catalog > Global Observations GeoParquet
experimental

Global Airport Observations (ASOS/AWOS)

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.

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.

Processing

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

Storage for this dataset is generously provided by Source Cooperative, a Radiant Earth initiative.

dynamical.org - Global Observations
Query with DuckDB
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()

Query

SQL Query
Initializing...

Zero-shot forecasting and the nature of time