The map

bird passage: little → muchflight direction (sharper, steadier)radar and its mean directionstop stop at peak hours watch run · size = MWwind farm: mean passage of the season · size = MW

How to read it: lines and particles go where the birds fly, and are sharper the more the direction repeats night after night. Particles gather where more passage is expected. Circles are the OpenStreetMap wind zones (cells of about 25 km).

Why stop these wind farms, and only on a few nights

Four figures, all computed from the data on this page.

A broad front that crosses everything

In autumn, 38 of the 43 radar stations on the map see the passage heading between south and south-west, 31 of them with a steadiness of 0.7 or more. It is not a narrow corridor: it is a river of birds hundreds of kilometres wide sweeping France and Iberia towards the Strait. Every wind farm along it is in its way.

A few nights decide it

At the median station, the heaviest 10% of nights carry 54% of the whole season's passage. Stopping on those nights protects a lot; stopping on the rest, little.

And they tend to be calm nights

Tested on 2021-2026 at 151 zones, the rule would have stopped 7.5 nights per season and zone, for 3.1% of the night output; stopping on every very high night would cost 12.8%. Measured with the forecast itself, which flattens the peaks, it covers 8.8% of the predicted passage.

The radar confirms the chosen nights

On the nights the rule says stop, the nearest radar measured heavy passage 67% of the time; by chance it would be 24%. That is 2.8 times more.

The forecast per zone, night by night: wind farm report; the rule tested since 2021: verification. Back to the home page.

The routes, station by station

What the white arrows draw, with all their figures.

Show the table: direction, steadiness, speed, altitude and concentration
stationseasonyearsnightsdirectionsteadinessm/saltitude (m)heaviest 10%
A Coruñaautumn2019–202032WSW · 255°0.7111.774244%
Abbevilleautumn2016–2020503SSW · 210°0.5912.762758%
Ajaccioautumn2019–2024201SSE · 168°0.737.61,63142%
Albiautumn2016–2020402SSW · 206°0.8410.21,41847%
Almeríaautumn2018–2020181SSW · 195°0.7410.368552%
Alériaautumn2016–2020381SSW · 208°0.9312.896481%
Asturiasautumn2018–2020116N · 3°0.0713.41,09359%
Avesnesautumn2016–2020531SW · 228°0.7113.168260%
Barcelonaautumn2018–2022220SSW · 210°0.557.085259%
Belfortautumn2016–2020371SW · 235°0.8311.81,44359%
Bizkaiaautumn2018–2020119SW · 224°0.6511.974953%
Bollèneautumn2016–2020349SSW · 213°0.8813.485047%
Bourgesautumn2016–2022573SW · 216°0.7011.077150%
Brestautumn2016–2020553SW · 214°0.3410.351647%
Briveautumn2016–2020445SSW · 211°0.8911.598257%
Burdeosautumn2016–2020560SSW · 202°0.9011.675555%
Caenautumn2016–2022659SW · 214°0.6512.565254%
Cáceresautumn2018–2020134SSW · 198°0.9411.381648%
Digneautumn2020–202027SE · 137°0.438.82,26783%
Dijonautumn2016–2022652SW · 221°0.8712.71,08556%
Faroautumn2019–2026559SSW · 207°0.738.31,05448%
Le Puyautumn2016–2022704SW · 218°0.8511.41,67250%
Lisboaautumn2019–2026314S · 188°0.849.465748%
Madridautumn2018–2020185SW · 223°0.9212.195546%
Mallorcaautumn2018–2020120S · 181°0.519.534654%
Murciaautumn2018–202060SSW · 203°0.9111.51,48870%
Málagaautumn2018–2020181SSW · 204°0.8811.01,31647%
Mâconautumn2016–2020536SW · 217°0.8411.51,38457%
Nancyautumn2016–2022617SW · 230°0.7611.688857%
Nantesautumn2016–2022501SSW · 203°0.6811.771356%
Nimesautumn2016–2022619SW · 217°0.9013.492066%
Oportoautumn2019–2026452SSW · 200°0.577.31,47948%
Parísautumn2016–2022636SW · 222°0.8412.470957%
Pauautumn2016–2020549SSW · 207°0.919.886647%
Perpiñánautumn2016–2020209SSW · 197°0.9511.71,23155%
Poitiersautumn2016–2020508SSW · 212°0.7212.377250%
Sevillaautumn2018–2026200SSW · 200°0.8910.977456%
Tolónautumn2016–2020546SSW · 212°0.849.71,22766%
Toulouseautumn2016–2020520SSW · 207°0.869.11,11650%
Troyesautumn2016–2020509SW · 221°0.8213.082164%
Valenciaautumn2018–201946S · 169°0.7710.450046%
Valladolidautumn2018–2022251WSW · 237°0.9012.81,09043%
Zaragozaautumn2018–2026277SSW · 197°0.709.41,07738%
A Coruñaspring2020–202022WNW · 283°0.6412.273933%
Abbevillespring2017–2020280NE · 45°0.8115.393959%
Ajacciospring2020–2021128N · 10°0.899.11,48741%
Albispring2017–2020265NNE · 26°0.8113.11,49354%
Almeríaspring2018–2020104ESE · 108°0.1212.861239%
Alériaspring2018–2020240NNE · 28°0.9314.01,13285%
Asturiasspring2019–202098NNW · 348°0.5510.01,08160%
Avesnesspring2017–2020257NE · 48°0.9015.296656%
Barcelonaspring2019–202672NE · 53°0.697.61,00550%
Belfortspring2017–2020236NE · 56°0.9515.01,62466%
Bizkaiaspring2018–202096NE · 45°0.9013.886452%
Bollènespring2017–2020241NNE · 26°0.8911.287960%
Bourgesspring2017–2021310NE · 40°0.9011.996552%
Brestspring2017–2020320N · 350°0.5410.661151%
Brivespring2018–2020247NNE · 31°0.9213.81,18860%
Burdeosspring2017–2020293NNE · 27°0.9214.31,07159%
Caenspring2017–2021351NNE · 26°0.7813.588753%
Cáceresspring2018–202096NNW · 342°0.519.281648%
Dijonspring2017–2020316NE · 42°0.9515.91,29861%
Farospring2019–2026386NNW · 327°0.318.41,12746%
Le Puyspring2017–2021343NE · 35°0.9215.11,71760%
Lisboaspring2019–2026171NNW · 345°0.107.672845%
Madridspring2019–202096NNE · 13°0.409.996542%
Mallorcaspring2020–202024NNW · 340°0.358.028243%
Murciaspring2019–202042NNE · 11°0.8910.21,43739%
Málagaspring2018–2020158NNE · 30°0.6411.61,31255%
Mâconspring2017–2020325NE · 39°0.8814.71,54170%
Nancyspring2017–2021321NE · 51°0.9514.31,22955%
Nantesspring2017–2020327N · 356°0.7011.078947%
Nimesspring2017–2020278NE · 42°0.9210.998075%
Oportospring2019–2026296N · 358°0.639.51,54954%
Parísspring2017–2020326NE · 37°0.8514.21,02057%
Pauspring2017–2020292NE · 43°0.9614.21,18857%
Perpiñánspring2018–202086NNE · 16°0.9612.01,25761%
Poitiersspring2017–2020263NNE · 22°0.8512.698045%
Sevillaspring2018–2020147N · 2°0.629.272048%
Tolónspring2017–2020284NE · 41°0.7410.61,19371%
Toulousespring2017–2020305NNE · 31°0.8310.91,36748%
Troyesspring2017–2020314NE · 43°0.9215.01,08068%
Valenciaspring2019–202059NNE · 33°0.8011.338452%
Valladolidspring2018–2020118NNE · 25°0.5914.11,08856%
Zaragozaspring2018–202060NNW · 333°0.609.598247%

Steadiness: 1 if every night flies the same way, 0 if they cancel out. Speed over the ground (wind included). Mean altitude above sea level, weighted by traffic. Last column: share of the passage carried by the heaviest 10% of nights.

How it is computed

  1. From echo to flight vector

    Each radar profile (vol2bird, every 5 to 15 minutes) gives, in 200 m layers from 200 m to 3 km, the density of birds and their ground speed towards the east and the north. Density × speed × layer depth × time, summed over the night, is the traffic: how many birds cross each kilometre of a front across their flight. Its direction is that night's.

  2. Which nights count

    Passage months (March to May, August to November) in which the radar published vectors. A night counts if at least 50% of its density carries a vector, if the radar saw 120 minutes or more of it and if the ground speed stays under 25 m/s: faster is usually rain or an echo carried by the wind, not birds.

  3. From nights to a route

    Per station and season, the traffic vectors of all its nights are added. The direction of the sum is the route; its steadiness (length of the sum ÷ sum of the lengths, 0 to 1) says whether the nights agree. For the direction no night weighs more than the 95th percentile of its station, so a single huge night cannot turn the arrow. It takes 15 nights. Old and renewed radars on one site are one station, each on its own scale.

  4. From radar to map

    The lines do not come from a model: they are a smoothing between radars (a 130 km Gaussian kernel on a 0.5° grid), drawn fully up to 160 km from the nearest radar and gone at 320 km. Where there is no radar, there is no line.

  5. The coming nights

    In «Coming nights» the direction is the usual one for the date (nights within ±15 days, every year) and the colour is the Sub Nocte forecast at each wind zone and city. In the record, the colour is the season mean the same model computes from the 2021-2026 weather.

  6. Why stop here

    Tap a wind farm: the night's level (relative to its own record), the forecast wind at 100 m and what stopping would cost, the route overhead, its rank among the zones by mean passage, and how well the model does against the nearest radar.

What this map does not say

Sources

Bird vertical profiles and flight vectors: Aloft (CC0), computed with vol2bird on the AEMET, IPMA and Météo-France radars (OPERA network). Wind farms: © OpenStreetMap contributors (ODbL). Weather: Open-Meteo (CC BY 4.0) and Copernicus ERA5. Coasts and borders: Natural Earth (public domain). Method: Dokter et al. (2011) for vol2bird; Horton et al. (2021) for the concentration of the passage on a few nights.

All the code and derived data (each night's traffic in data/routes/flight_nights.parquet) live in the repository.