Skip to content
Research / weather32
weather32 Meteorology Completed Updated June 2025

Upper-troposphere wind measurement
from aircraft in flight

Airliners carry sensors that measure speed, heading and attitude, and part of that data reaches our receivers in Mode-S messages. Put together with the GPS speed broadcast over ADS-B, it gives the wind where the aircraft is flying. The project is complete: below are the method and the results of the comparison with ERA5 and IASI.

+0.21
m/s
Bias u (vs ERA5)
+1.77
m/s
Bias v (vs ERA5)
7.38
m/s
RMSE u
6.57
m/s
RMSE v

Methodology

The physical principle is straightforward: the ground speed of an aircraft (measured via GPS/ADS-B) is the vector sum of its airspeed and the ambient wind. Inverting the relationship:

W = Vground − Vair
W = wind (m/s) Vground = ground speed (GPS) Vair = True Air Speed + heading

In vector form, decomposed into zonal (u, west→east) and meridional (v, south→north) components:

u = GS·sin(track) − TAS·sin(corrected_heading)
v = GS·cos(track) − TAS·cos(corrected_heading)

The magnetic heading transmitted by the aircraft is corrected for local magnetic declination (computed with a geodetic model) and for aircraft compass deviation. True airspeed (TAS) comes from Mode-S BDS50; Mach number and IAS, from BDS60, are an alternative path above 10,000 ft.

Data sources

ADS-B

ADS-B typecode 19: velocity

Ground speed (GS) and GPS track from ADS-B typecode 19 messages. Accuracy class NACv ≥ 1. Filters: GS 50–850 knots, roll angle < 2.5°.

BDS50

Mode-S BDS50: track and speed

True airspeed (TAS) and roll angle. BDS50 only comes as a reply to a secondary interrogation (Comm-B), so it needs a receiver that decodes Mode-S EHS. Filter: TAS 100–570 knots.

BDS60

Mode-S BDS60: heading and speed

Indicated airspeed (IAS), magnetic heading and Mach number. Used as an alternative TAS source when BDS50 is unavailable, and for magnetic heading correction.

ADS-C

ADS-C via ACARS (oceanic)

For transatlantic aircraft outside ADS-B range, ADS-C reports transmitted via ACARS/satcom contain wind speed and direction directly (BDS44/BDS45). Received on UDP port 50174.

Validation

The wind worked out from aircraft was compared with two independent references.

ERA5 (ECMWF)

Global meteorological reanalysis from the European Centre for Medium-Range Weather Forecasts. Horizontal resolution ~31 km, 37 pressure levels from 1000 hPa to 1 hPa. Downloaded via the Copernicus Climate Data Store (CDS).

IASI (MetOp satellite)

Infrared interferometer aboard MetOp-A/B/C satellites (EUMETSAT). Provides vertical profiles of wind, temperature and humidity on 26 levels. BUFR data received via SFTP in near-real-time.

Validation results (June 2025)

Comparison Bias u Bias v RMSE u RMSE v Std u Std v
Mode-S vs ERA5
Jun 23, 2025
+0.21 m/s +1.77 m/s 7.38 m/s 6.57 m/s 7.37 m/s 6.33 m/s
IASI vs ERA5
Jun 13, 2025
+1.29 m/s –4.16 m/s 4.61 m/s 7.15 m/s 4.43 m/s 5.82 m/s
Mode-S vs IASI
Jun 13, 2025
–1.91 m/s +6.83 m/s 10.99 m/s 12.33 m/s 10.83 m/s 10.26 m/s

u = zonal component (west→east) · v = meridional component (south→north) · density filter active for Mode-S vs ERA5

Technical infrastructure

Data reception FlyItalyADSB: ADS-B/MLAT network (BEAST protocol)
Mode-S decoding pyModeS: BDS50, BDS60, BDS44, CPR position
Magnetic correction PyGeoMag: local magnetic declination (geodetic model)
Storage PostgreSQL: measurements table (timestamp, lat, lon, u, v)
Orchestration APScheduler: multi-process pipeline with a worker pool
Validation SciPy griddata, Hampel filter (MAD), Bias/RMSE/Std-dev
ERA5 Copernicus CDS API: u, v and temperature on 37 pressure levels
IASI BUFR via pdbufr: vertical profiles from MetOp-A/B/C

Collaboration and data access

Tracks are already self-serve through the API; for researchers and academic institutions bulk extractions (many aircraft or long periods) are available too. If you are conducting meteorological or aeronautical research and are interested in collaborating, contact us with a brief project description.

Request collaboration →