SF2G Route Corridors
Loading maps...
💨 How Wind Factor Is Calculated
Every SF2G ride is enriched with historical wind data so you can see how much Mother Nature helped — or hurt — your commute. Here's how it works:
Fetch Historical Wind
We pull hourly wind speed, direction, and gust data from the Open-Meteo Archive API using your ride's start coordinates and date. Wind is sampled at the hour your ride began (Pacific time).
Calculate Ride Bearing
Your ride's direction of travel is computed from the start and end GPS coordinates using the Haversine bearing formula. This gives a compass heading (0° = north, 90° = east, etc.) representing the overall direction you rode.
Project Wind onto Ride Direction
Wind direction is reported as where wind blows from (meteorological convention). We flip it 180° to get the direction wind is going to, then use cosine projection to decompose it into:
- Tailwind component = wind speed × cos(wind_to − ride_bearing)
- Crosswind component = wind speed × sin(wind_to − ride_bearing)
A positive tailwind means the wind was pushing you forward; negative means you were riding into a headwind.
Classify & Display
The tailwind value (in m/s, displayed as mph) is classified for color-coding:
On the leaderboard, each rider's Avg Wind column shows the mean tailwind across all their SF2G rides. Individual ride wind values are visible on profile pages.