Indice Climatico è una stima della gradevolezza del clima di una determinate città o nazione. È fissata nel range [-100, +100] (valori più alti sono migliori). Città con un indice climatico di 100 hanno temperature temperate, bassa umidità e nessuna altra condizione meteorologica che possa risultare sgradita dalla maggior parte della popolazione. Poiché alcune persone potrebbero preferire climi più freddi o più caldi o alcune persone sono a loro agio con climi più umidi, tale indice deve essere considerato come indicativo e non considerato in maniera assoluta.
Le formule effettive utilizzate per il calcolo di questo indice sono soggette a cambiamento.
Questa formula è stata scritta in linguaggio Java nel modo seguente:
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;