Data limits
The samples cover 8–21 January and 8–21 August 2025. They illustrate the seasonal pattern,
but two fortnights cannot capture its full variation. Averaging also hides sea breezes,
squalls and calm periods.
The map uses 1,325 points on a 1° grid, roughly 110 km apart, interpolated between points.
This is coarser than ERA5’s native 0.25° grid to keep the download within the API allowance.
The build script supports finer sampling.
ERA5’s 10 m wind is a model estimate over its representation of terrain and vegetation.
Wind at street level can be much weaker.
How it is drawn
Two canvases separate the static map from the moving particles. Each particle reads the
wind by interpolating between four grid points, moves along it, and leaves a short segment
coloured by speed. Fading the previous frame creates the trails.
Segments are grouped by colour to reduce draw calls. Particles respawn when they leave
the grid, reach calm air or exceed their lifetime. Animation pauses offscreen and becomes
a still image when reduced motion is enabled.
The wind roses use d3.arc with a square-root radius scale, so spoke area is proportional
to the number of hours.
Data
| File | Source | Notes |
|---|
field.json | ERA5 (ECMWF) via the Open-Meteo archive API | Mean u/v on a 1° grid, two seasons; 22 kB |
roses.json | Same | 16 sectors × 4 speed classes at eight cities |
land.json | Natural Earth 1:50m | Shared with the earthquake post |
node scripts/wind/build.mjs rebuilds both. It caches every response, so a rerun after the quota resets only fetches what is missing.