European Weather Alerts (Regions)
Experimental project exploring regional weather hazards over France, Spain, Germany, Italy, and Portugal. A separate Python pipeline combines Open‑Meteo archive data with OpenWeather forecast data to turn each day into hazard levels (0 = none, 3 = strong) for five hazards—heat, cold, wind, rain, and snow— aggregated at admin‑1 region level and exported as JSON into this site via a scheduled GitHub Action.
Goal
Build a fully automated, explainable pipeline that tracks regional heat, cold, wind, rain, and snow hazards, and surfaces them as interactive stories on my portfolio. Each region and day receives a discrete hazard level from 0 (no alert) to 3 (strong event) per hazard, making the maps and curves easy to read and reason about.
Approach
- Select a handful of high‑population cities per admin‑1 region (Geonames + simple filters), then treat them as representative points.
- Use the Open‑Meteo archive API to build and maintain a ~180‑day history of daily max/min temperature, max wind, accumulated rain, and snowfall per point, and the OpenWeather 5‑day / 3‑hour forecast API to refresh today and tomorrow in CI.
- Aggregate the point data to region level and apply transparent threshold rules to assign hazard levels (0–3) for each hazard and day (for example, mild alerts at level 1, strong events at level 2, and very rare/extreme situations at level 3).
- Group consecutive days above a minimum level into multi‑day events, storing their duration, maximum level, and an indicative metric such as peak temperature or max 24‑hour rainfall.
- Export region‑day records and alert events as JSON; a GitHub Action runs the pipeline nightly and keeps the website data fresh.
Guiding questions
- Which regions see the most frequent or persistent hazards over the last 180 days?
- How different are hazard patterns between northern Germany and southern Spain or Italy?
- Can a simple, rule‑based system still give useful spatial and temporal intuition?
Data
- Open‑Meteo for historical regional daily aggregates (max/min temperature, wind, precipitation, and snowfall).
- OpenWeather 5‑day / 3‑hour forecast API for short‑term forecasts (today + tomorrow) used in the daily refresh.
- Geonames city database (via geonamescache) to pick the top‑population cities per region.
- The pipeline code and CI configuration live in the weather‑alert‑pipeline repository.
- Because the project relies on free tiers, some location requests occasionally hit rate limits or timeouts. The pipeline logs and skips those points, so a small number of region–day records may be missing, but the regional patterns remain stable enough for exploration.
Hazard thresholds
To keep the pipeline explainable, all hazard levels come from simple, hand‑rolled rules applied per region and day. Level 1 marks a noticeable event, level 2 a strong episode, and level 3 an unusually intense situation:
- Heat:level 1 ≥ 30°C, level 2 ≥ 35°C, level 3 ≥ 40°C (daily max temperature).
- Cold:level 1 ≤ 0°C, level 2 ≤ −5°C, level 3 ≤ −10°C (daily min temperature).
- Wind:level 1 ≥ 50 km/h, level 2 ≥ 70 km/h, level 3 ≥ 90 km/h (daily max wind speed).
- Rain:level 1 ≥ 20 mm, level 2 ≥ 40 mm, level 3 ≥ 60 mm (daily accumulated rain).
- Snow:level 1 ≥ 10 mm, level 2 ≥ 20 mm, level 3 ≥ 40 mm (daily snowfall, water equivalent).
Headline numbers (current window)
- Alerts captured in the current export window: 1785 total (2 heat, 299 cold, 206 wind, 1166 rain, 112 snow).
- Rain and cold dominate the alert count over this period (September 2025 – March 2026). Heat appears only during early autumn and is limited to southern Spain and Portugal. Wind and snow cross thresholds less frequently, with snow concentrated in Germany and northern Italy.
- Charts often highlight three benchmark regions—Île‑de‑France, Comunidad de Madrid, and Bayern—to keep comparisons readable while still spanning different climates.
Data freshness
This page is updated automatically by a nightly GitHub Action that runs the Python weather‑alert pipeline and writes new JSON into the site repo.
- Last successful run: 2026-04-16 05:24 UTC
- History window: 180 days
- Data coverage: 2025-10-19 → 2026-04-17
- Regions in scope: DE, ES, FR, IT, PT (88 admin‑1 regions)
- Alerts in current window: 1785
Today's alerts snapshot
Latest available date: 2026-04-17 · 0 of 88 regions in alert.
Strongest alerts right now
No alerts in the latest daily snapshot.
Question
Where are alerts most common overall?
Static map showing, for each region, the percentage of days between 2025-10-19 and 2026-04-17 with any hazard level ≥ 1.
Question
How do regional hazards move across Europe day by day?
Animated map of France, Spain, Germany, Italy, and Portugal where each region polygon (NUTS2) is coloured by the strongest hazard level (heat, cold, wind, rain, or snow) on that date.
Question
Interactive regional curves
Select regions, a time window, and a metric to explore regional weather histories. The thin dashed line marks today in the selected window.
Use the buttons to switch country; click region names to add or remove them. The thin dashed vertical line marks today's date in the selected window.
Question
Which regions are most persistently in alert?
Each point is a region. The x‑axis shows the percentage of days between 2025-10-19 and 2026-04-17 (181 days) with any hazard level ≥ 1; the y‑axis shows the average hazard level (0–3) over the same period. Bubble size encodes average max temperature (°C).
Conclusion
Over this window (September 2025 – March 2026, covering autumn and winter), the pattern is shaped by the season. German regions dominate the alert rankings: Bayern leads at around 51% of days in alert, driven overwhelmingly by cold. The regions least exposed in this period are the Atlantic islands and southern Spain — Canarias, Madeira, and Melilla sit below 10%. This is essentially the reverse of what a summer window would show, when southern heat dominates. Rain is the most spatially widespread hazard, with 1,840 region-days across the five countries, often clustered in multi-day events. Cold accounts for 1,737 region-days, concentrated in Germany and northern Italy. Heat is limited to early autumn and the Iberian south. Snow is spread across Germany, parts of France, and northern Italy.
From a systems perspective, the project shows that a small, well‑instrumented pipeline—API calls, simple aggregation, explicit thresholds, and CI to push JSON into a static site—is enough to keep a regional hazard dashboard up to date without running a dedicated backend. The same pattern (external data → regional aggregation → JSON export → scheduled GitHub Action) can be reused for other topics such as grid stress indices, drought metrics, or tourism demand.