What is the Climate Threat Index?

Earth Doom Index's Climate Threat Index pulls real-time weather and air quality data from seven cities distributed across five continents, converts each city's conditions — extreme temperatures, dangerous weather codes, oppressive humidity, and air pollution — into a per-city score, then sums everything and clips the result to a 0–30 integer. The short version: it asks whether the planet's surface is having a bad day, using seven data points to stand in for the whole.

1. What this index actually measures

The Climate Threat Index covers the physical environment domain of Earth Doom Index — one of four tracked alongside Society, Economy, and Solar. Its mandate is short-term atmospheric hazard: heat waves, cold snaps, tornadoes, thunderstorms, gale-force wind, suffocating humidity, wildfire smoke. It does not track long-term climate trends, glacial retreat, sea-level rise, or anything that plays out over years. If you want a graph of civilization's gradual self-immolation, you will need a different dataset. This one asks: was it bad today?

The seven-city average produces a planetary estimate in the same way that a handful of weather stations produces a national forecast — approximately, with known gaps, and with full awareness that a cyclone in one city might be completely invisible if six others are having a pleasant afternoon. That averaging effect is a feature of the design, not an oversight: it means the index rises sharply only when multiple regions are simultaneously in distress. A single catastrophic event in one city will raise the score noticeably. Seven simultaneous catastrophic events would peg it near the ceiling.

The index contributes up to 30 points to the 100-point DOOM-9000 composite score, weighted equally alongside the other three domains.

2. Where the data comes from

The data source is OpenWeatherMap API, specifically two endpoints hit in parallel for each city. The Current Weather endpoint returns feels-like temperature, humidity, wind speed, and a WMO-derived weather condition code. The Air Pollution endpoint returns an AQI value on a 1–5 scale, retrieved by latitude and longitude.

The seven sample cities are Seoul, New York, Mumbai, Tokyo, Sydney, Cairo, and Moscow. The selection covers East Asia, North America, South Asia, Oceania, North Africa, and the Russian Arctic — a rough attempt at climatic diversity across hot-dry, hot-humid, temperate, and subarctic regimes. It is not a scientific sample of the planet. It is seven cities chosen to disagree with each other as often as possible, so that simultaneous high scores across all of them mean something.

OpenWeather's free API tier has per-minute call limits and typically refreshes conditions on the order of minutes. The index is calculated once per day, so refresh-rate lag is not a meaningful concern. More importantly: if an individual city's API call fails, it is isolated via Promise.allSettled — one city timing out does not block or invalidate the remaining six. A failed city simply contributes zero to that day's score. This is a deliberate operational trade-off: a slightly understated score is preferable to a broken score.

3. How the score is calculated

Scores are built city by city, then the 7-city sum is mapped to a 0–30 output through a piecewise normalization curve. The formula for each city is:

City score = feels-like temperature (0–3) + extreme weather / wind (0–2) + heat-humidity stress (0–1.5) + air quality (0–1)

Maximum per city: 7.5 points. Theoretical maximum across all 7 cities: 52.5 points. The raw sum is then converted to the final 0–30 output via piecewise interpolation (detailed below) — not a flat clip.

Feels-like temperature uses feelsLike from OpenWeather's current conditions. Above 30°C, the score climbs as (feelsLike − 30) ÷ 20 × 3, capped at 3.0. Below −10°C, it climbs as (−10 − feelsLike) ÷ 20 × 3, also capped at 3.0. The cap is reached at 50°C (or −30°C) — temperatures near the human habitability threshold where staying outdoors becomes survivable only briefly. Between −10°C and 30°C the contribution is zero — the index does not penalize a comfortable day.

Extreme weather and wind speed are scored separately and then the maximum of the two is used, preventing double-counting when a hurricane is also generating a dangerous weather code. Wind speed follows a step function: hurricane-force at 32.7 m/s or above scores 2.0, storm-force at 24.5 m/s scores 1.5, high wind at 17.2 m/s scores 0.8, and everything below that scores zero. The weather code mapping is the more granular of the two signals and is detailed in Section 4.

Heat-humidity stress is scored in three tiers, capturing the combination that makes heat genuinely dangerous rather than merely unpleasant. The top tier — feels-like at 32°C or above with humidity at 85% or above — scores 1.5 and approximates the WBGT 35°C habitability threshold beyond which even a healthy person in shade survives only a few hours. The middle tier (feels-like ≥ 30°C and humidity ≥ 90%) scores 1.0. The lowest tier (feels-like ≥ 28°C and humidity ≥ 85%) scores 0.5. Below those combined thresholds the contribution is zero.

Air quality normalizes the AQI level directly: (aqi − 1) ÷ 4. AQI 1 (Good) contributes 0.0; AQI 5 (Very Poor) contributes 1.0. Linear steps in between.

Final 0–30 conversion — The seven city scores are summed without averaging. The raw sum is then mapped to the output score via:

SCORE_BREAKPOINTS = [(0,0), (3,3), (8,8), (14,14), (22,20), (30,26), (40,30)]

Each pair is (raw sum, output score). Values between breakpoints are linearly interpolated; raw sums above 40 are clipped at 30. The breakpoints are tuned so that single-city events stay in single digits, raw 22 (5+ cities under simultaneous strong stress) reaches 20 (DANGER), raw 30 (multi-city extreme — comparable to the 2003 European heat wave reproducing across several continents at once) reaches 26 (CRITICAL), and raw 40+ (all seven cities under simultaneous extreme conditions — a planetary scenario in the spirit of 1816's "Year Without a Summer" following the Tambora eruption) reaches 30 (DOOM).

4. Extreme weather code thresholds

OpenWeather condition codes follow a WMO-derived classification scheme using codes from 200 to 800. The index treats the following codes as threat events:

CodeDescriptionPoints
781Tornado2.0
762Volcanic ash1.8
504Extreme rain1.8
711Wildfire smoke1.5
771Squalls1.2
503Very heavy rain1.2
511Freezing rain1.2
731·751·761Sand/dust storm1.2
200~232Thunderstorm group1.2
502Heavy rain0.8

Any code not on this list contributes zero to the weather-code signal. Drizzle, mist, overcast skies, scattered clouds — all of these are meteorologically real but not scored as threats.

The 30°C lower bound for heat scoring is grounded in WHO heat-stress guidelines, which broadly identify temperatures above 30°C as the range where physiological heat strain begins to affect unacclimatized individuals. It is not a precise clinical threshold — it is the nearest round number that fits the data model and produces a score that rises meaningfully during actual heat events without screaming every summer afternoon in Cairo.

The −10°C cold threshold deserves a separate note. It is not symmetric with the heat threshold for scientific reasons — it is an operational calibration to prevent Moscow and New York from contributing permanently elevated cold scores during their respective winters. Below −10°C the cold signal starts climbing; above that, cold-climate cities are treated as operating within their normal envelope. This is a deliberate choice to keep the index sensitive to genuine cold anomalies rather than predictable seasonal baselines.

5. Maximum-Score Scenarios

Reaching 30 is not about a single dramatic event in one place — it requires all seven sample cities (Seoul, New York, Mumbai, Tokyo, Sydney, Cairo, Moscow) to simultaneously record extreme conditions across multiple sub-signals, a planet-wide convergence rather than a localized disaster. The piecewise normalization curve is calibrated so a raw 7-city sum of 40 reaches 30 (DOOM), and a raw sum near 30 (multi-continent simultaneous extremes, comparable to the 2003 European heat wave reproducing across several regions) reaches 26 (CRITICAL). This is the climate-domain analogue of "nuclear war" for Society or "Great Depression" for Economy. OpenWeather's realtime API cannot reach back to historical events, so all values below are retrospective approximations against the current scoring formula.

EventYearEst. index score
Tambora eruption / Year Without a Summer1815–16~30 (DOOM)
European heat wave2003~22–26 (CRITICAL)
Russian heat wave + Pakistan floods2010~18–22 (DANGER+)
Pakistan floods2022~12–15 (single-region extreme)

차트 데이터 불러오는 중...