Climate Index is an estimation of the climate likability of a given city or a country. It is in the range [-100, +100] (higher is better). Cities with climate index 100 have moderate temperatures and low humidity and no other major weather condition which is usually not preferred by most people. However, some persons prefer colder climate while others prefer warmer climates and some people are fine with humid conditions, so this index is general guidance, which shall not be blindly considered.
Actual formulas to calculate this index are subject to change.
The current formula uses dew point and temperature (and estimated avg. high humidex using those two numbers) to estimate a climate index. This formula as written in Java programming language is as follows:
public double getHumidex() { return temp_high_avg + 0.5555 * (6.1 * Math.exp(5417.7530 * (1 / 273.16 - 1 / (dewpoint_high_avg + 273.15))) - 10); } public double getRanking() { //first it is calculated in range [-30, 30] then multiplied double base = 30; if (dewpoint_low_avg < 10) { base -= Math.pow(0.25 * (10 - dewpoint_low_avg), 1.2); } //26 Severely high. Even deadly for asthma related illnesses //24 Extremely uncomfortable, fairly oppressive //21 Very humid, quite uncomfortable //18 Somewhat uncomfortable for most people at upper edge if (dewpoint_high_avg > 18) { base -= Math.pow( (dewpoint_high_avg - 18), 1.2); // 10^1.2 = 15.8 } //http://courses.washington.edu/me333afe/Comfort_Health.pdf //37.7 very uncomfortable //32 uncomfortable //12 uncomfortable //0 very uncomfortable if (temp_high_avg > 31) { base -= Math.pow(temp_high_avg - 31, 1.5); // 10 ^ 1.4 = 25, 10 ^ 1.5 = 31.6 } if (temp_low_avg < 8) { base -= Math.pow( (8 - temp_low_avg) / 2, 1.55); // -20c, 30/2=15 , 15 ^ 1.6 = 76 } double humidex = getHumidex(); //humindex > 31 yellow //humindex > 40 orange //humindex > 46 red if (humidex > 31) { base -= (humidex - 31) / 4.0; } if (base < -30) { base = -30.0; } if (base > 30) { base = 30.0; } base = base * 100 / 30.0; return base;
public double getRanking() { //first it is calculated in range [-30, 30] then multiplied double base = 30; if (dewpoint_low_avg < 10) { base -= Math.pow(0.25 * (10 - dewpoint_low_avg), 1.2); } //26 Severely high. Even deadly for asthma related illnesses //24 Extremely uncomfortable, fairly oppressive //21 Very humid, quite uncomfortable //18 Somewhat uncomfortable for most people at upper edge if (dewpoint_high_avg > 16) { base -= Math.pow(dewpoint_high_avg - 16, 1.47); // 10^1.5 = 31.11 } //http://courses.washington.edu/me333afe/Comfort_Health.pdf //37.7 very uncomfortable //32 uncomfortable //12 uncomfortable //0 very uncomfortable if (temp_high_avg > 30) { base -= Math.pow(temp_high_avg - 30, 1.4); // 10 ^ 1.4 = 25.11 } if (temp_low_avg < 5) { base -= Math.pow( (5 - temp_low_avg) / 2, 1.35); // 10 ^ 1.35 = 22.00 } if (chanceofthunderday > 40) { base -= (chanceofthunderday - 25) / 7; } if (chanceoftornadoday > 1) { base -= chanceoftornadoday * 2; } if (chanceofrainday > 40) { base -= (chanceofrainday - 25) / 7; } if (chanceofcloudyday > 50) { base -= (chanceofcloudyday - 25) / 7; } if (chanceoffogday > 30) { base -= (chanceoffogday - 15) / 5; } if (base < -30) { base = -30.0; } base *= 100 / 30.0; return base; }