The Europe Heat Tracker estimates how many people across Europe are exposed to extreme heat. It combines high-resolution population data with real-time weather observations to produce a per-country and continent-wide count of affected people. Three time views are available: Now (latest snapshot), 24 hours (default), and 7 days.
Population figures come from the GHS-POP R2023A dataset published by the European Commission's Joint Research Centre (JRC). This is a global population grid at approximately 1 km² (30 arc-second) resolution, based on the 2020 population epoch.
We aggregate the raw 1 km² cells into a 0.125° latitude/longitude grid (roughly 10 × 14 km at European latitudes), resulting in approximately 47,000 grid cells covering the European continent. Each cell stores the total population count summed from the underlying high-resolution raster, preserving real population density variation between urban and rural areas.
Weather data comes from DWD ICON-EU, the operational numerical weather prediction model of Germany's national meteorological service (Deutscher Wetterdienst). ICON-EU covers Europe at a native resolution of approximately 6.5 km and is published as open data in GRIB2 format four times per day (00, 06, 12, 18 UTC).
For each grid cell we compute three heat indicators:
GRIB2 files are downloaded, regridded to the population grid via bilinear interpolation, and stored in SQLite. The pipeline includes up to 72 hours of forecast data in addition to the current analysis field.
A grid cell is classified as affected when its selected indicator meets or exceeds the active threshold. Default thresholds:
Thresholds can be adjusted per-indicator using the ⚙ Expert Settings panel in the inspector. The total affected population is the sum of all grid-cell populations where the threshold is exceeded. Country-level aggregates are computed in the same pass.
The Today, Last 7 days, and Next 3 days views show the union of all people who were affected in any snapshot during that window. For each grid cell, the peak indicator value across all snapshots in the period is used; a cell counts as affected if it exceeded the threshold in at least one snapshot. Custom date ranges are also supported.
The DWD data pipeline (fetch-dwd.py) runs every 3 hours, aligned with DWD's
model run schedule. Each run downloads the latest analysis and forecast fields, creates new
snapshots in the database, and makes data available immediately to the web app. A full run
typically takes 5–15 minutes depending on network speed and the number of forecast hours
requested.