El Índice Climático es una estimación del nivel de aprobación climática de una ciudad o país determinados. Se expresa en el intervalo [-100, +100] (cuanto más alta mejor). Las ciudades con un índice 100 tienen temperaturas moderadas, humedad baja y carecen de condiciones o fenómenos climáticos por lo general desagradables para la mayoría de la población. Sin embargo, algunas personas prefieren un clima más frío, mientras que otras prefieren uno más cálido, o no consideran un problema la humedad, por lo que este índice debería ser considerado una visión general y no seguido literalmente.
Las fórmulas completas para calcular este índice están sujetas a cambios.
La fórmula completa tal como aparece en lenguaje de programación Java, es la siguiente:
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;