ADS-B-derived upper-air winds for the UK & NW Europe
What am I looking at?
A live wind field for the airspace over Britain, Ireland, the North Sea and the Western Approaches — reconstructed from the ground speed and track of aircraft transmitting ADS-B. No model, no radiosondes, no forecast. These are observed winds from what's actually flying.
How the solver works
Every aircraft broadcasts its ground speed and track (direction of travel over the ground) many times a second. The missing piece is the wind — solve for it using the wind triangle:
Given N ≥ 3 aircraft at similar altitude sharing a similar cruise TAS, this becomes linear in (Wu, Wv, C) and is solved via 3×3 normal equations. We get wind vector + an implied TAS for the cell.
Grid & altitude bands
The airspace is divided into 2°×2° tiles (about 220 km N-S, 130 km E-W at 55°N) and 8 flight-level bands from the surface through FL400+:
Each tile × band is solved independently. A solution is rejected if tracks are too clustered (resultant R > 0.92) or residual RMS > 25% of TAS, so aircraft all flying the same airway don't fake a wind.
Reading the barbs
Standard aviation wind barbs, pointing from the direction the wind is coming from:
Triangular flag = 50 kt
Full barb = 10 kt
Half barb = 5 kt
< 30 kt — calm to light
30–60 kt — moderate
60–100 kt — strong
100–150 kt — very strong
> 150 kt — jet-stream core
Controls
Altitude band — switch between 9 bands: SURFACE (APRS/CWOP weather stations) + 8 FL bands from the ADS-B solver.
Tile grid — 2°×2° outlines. Click any tile for its vertical profile + hodograph + 24 h timeseries.
Coverage heatmap — shows aircraft count per cell; green = solved, yellow = ≥3 aircraft but rejected, red = too thin.
Wind barbs — per-tile barb for the current band. Interpolated cells are faded.
Show interpolated — toggle neighbour-filled cells.
Δ vs 1 h ago — circles showing 1-hour wind-speed change, sized + coloured by magnitude.
Jet stream — purple polyline walking the fastest upper-band cores.
Streamlines — animated canvas particles following the current-band wind. Visual flow.
Vertical profile + hodograph
Click a tile to open its profile on the right. You get:
Per-band speed bars + direction
Hodograph — classic polar plot with one dot per altitude band, coloured surface→upper. A clockwise curve through the bands = veering (supports supercell rotation).
24 h timeseries for the selected band
Refresh
The server's scheduler re-solves the entire grid every 5 minutes. The UI pulls fresh data every 60 seconds. Timestamps on each cell reflect when that specific tile-band was last solved.
Why this is useful
Radiosondes go up twice a day from a handful of sites. Model winds (ECMWF, GFS) are forecasts. ADS-B gives you continuously updated, directly-observed upper-air winds across the whole coverage area — land and sea, anywhere there's a commercial or GA aircraft. Especially valuable offshore, where no radiosondes launch.
Used by chase.wispayr.online for deep-layer shear, storm-chase planning, and jet-stream tracking.
Limits & caveats
Cells with fewer than 3 valid aircraft in the band are left blank — the solver won't invent data.
Highly-clustered tracks (all on the same airway) are rejected as unreliable.
TAS residual is a confidence signal — high RMS means mixed aircraft types with different TAS; the solver rejects if RMS/TAS > 25%.
Low-altitude coverage is sparse over land (aircraft climb quickly after departure) and rich near major airports. Upper bands are densest along transatlantic / European corridors.