Esta secção é baseada em questionários a visitantes deste website. As perguntas destes questionários são semelhantes a muitos inquéritos científicos e governamentais.
Cada entrada no questionário é guardada como um número no intervalo [-2, +2], em que -2 significa fortemente negativo e +2 significa fortemente positivo.
Filtramos as respostas de modo a eliminar potencial spam, tal como pessoas que inserem uma elevada quantidade de dados que diferencia significativamente do valor mediano.
Para apresentar resultados dos inquéritos, utilizamos a escala [0, 100] para os valores, para uma mais fácil leitura dos utilizadores.
Para gerar o indicador atual (que está sempre atualizado) utilizamos dados até 36 meses de idade. Incluímos apenas cidades para as quais existem pelo menos um certo número de colaboradores. O nosso indicador semi-anual é refeito duas vezes por ano, empurrando o indicador atual para a vista histórica.
A maior parte dos nossos dados são baseados em opiniões dos visitantes deste website. Para a secção da população, incluímos alguns dados relevantes da Organização Mundial de Saúde e de outras instituições se acharmos apropriado.
Indicador de Poluição é uma estimativa da poluição geral na cidade. O maior peso é dado à população do ar, do que à população/acessibilidade da água, os dois principais fatores de poluição. Pesos mais pequenos são dados a outros tipos de poluição.
Escala Exp de Poluição utiliza uma escala exponencial para mostrar números muito elevados para cidades muito poluídas, e números muito pequenos para cidades sem poluição. A fórmula de cálculo usa então uma função exponencial para calcular o indicador.
As fórmulas atuais para calcular estes indicadores estão sujeitas a alterações e, neste momento, são utilizadas fórmulas empíricas bastante complexas.
Estas fórmulas escritas na linguagem de programação Java são as seguintes:
public void calculateIndex() { //assumes air_quality and other entries from user are in the range [-2, 2], where -2 means perceived as very low, and +2 means very high //PollutionDbEntry.IS_POLLUTION_AIR_QUALITY and similar are constant variables which are either -1 and 1; i.e. IS_POLLUTION_AIR_QUALITY = -1.0 //These constant variables in PollutionDbEntry class are 1 for values which represent pollutions and -1 for values which represent opposite (purity, cleanliness) index = new PollutionIndex(); double overall = 0.0; overall += 7 * getIndexPartPreCalc(PollutionDbEntry.IS_POLLUTION_AIR_QUALITY * air_quality); overall += 2 * getIndexPartPreCalc(PollutionDbEntry.IS_POLLUTION_DRINKING_WATER_QUALITY_ACCESSIBILITY * drinking_water_quality_accessibility); overall += 2 * getIndexPartPreCalc(PollutionDbEntry.IS_POLLUTION_WATER_POLLUTION * water_pollution); overall += getIndexPartPreCalc(PollutionDbEntry.IS_POLLUTION_GARBAGE_DISPOSAL_SATISFACTION * garbage_disposal_satisfaction); overall += getIndexPartPreCalc(PollutionDbEntry.IS_POLLUTION_CLEAN_AND_TIDY * clean_and_tidy); overall += getIndexPartPreCalc(PollutionDbEntry.IS_POLLUTION_NOISE_AND_LIGHT_POLLUTION * noise_and_light_pollution); overall += getIndexPartPreCalc(PollutionDbEntry.IS_POLLUTION_GREEN_AND_PARKS_QUALITY * green_and_parks_quality); overall += 2 * getIndexPartPreCalc(PollutionDbEntry.IS_POLLUTION_COMFORTABLE_TO_SPEND_TIME * comfortable_to_spend_time); double overallExpScale = 0.0; overallExpScale += 7 * getIndexPartPreCalcExpScaleStandard(PollutionDbEntry.IS_POLLUTION_AIR_QUALITY * air_quality); overallExpScale += 2 * getIndexPartPreCalcExpScaleStandard(PollutionDbEntry.IS_POLLUTION_DRINKING_WATER_QUALITY_ACCESSIBILITY * drinking_water_quality_accessibility); overallExpScale += 2 * getIndexPartPreCalcExpScaleStandard(PollutionDbEntry.IS_POLLUTION_WATER_POLLUTION * water_pollution); overallExpScale += getIndexPartPreCalcExpScaleStandard(PollutionDbEntry.IS_POLLUTION_GARBAGE_DISPOSAL_SATISFACTION * garbage_disposal_satisfaction); overallExpScale += getIndexPartPreCalcExpScaleStandard(PollutionDbEntry.IS_POLLUTION_CLEAN_AND_TIDY * clean_and_tidy); overallExpScale += getIndexPartPreCalcExpScaleStandard(PollutionDbEntry.IS_POLLUTION_NOISE_AND_LIGHT_POLLUTION * noise_and_light_pollution); overallExpScale += getIndexPartPreCalcExpScaleStandard(PollutionDbEntry.IS_POLLUTION_GREEN_AND_PARKS_QUALITY * green_and_parks_quality); overallExpScale += 2 * getIndexPartPreCalcExpScaleStandard(PollutionDbEntry.IS_POLLUTION_COMFORTABLE_TO_SPEND_TIME * comfortable_to_spend_time); index.main = overall / 14.5; //max 17 index.expScale = calcScaleStandardIndexFromSum(overallExpScale, 12); } protected double getIndexPartPreCalc(double internalValue) { return (internalValue + 2) * 25; } protected double getIndexPartPreCalcExpScaleStandard(double internalValue) { return getIndexPartPreCalcExpScale(internalValue, Math.E); } protected double getIndexPartPreCalcExpScale(double internalValue, double exp) { return Math.pow((internalValue + 2) * 25, exp); } protected double calcScaleStandardIndexFromSum(double scaleSum, int elems) { return Math.pow(scaleSum / elems, 1 / (Math.E * 8.8 / 10)); }Para estimar o número de árvores para cobrir o consumo de CO2, assumimos 240 dias de comuta durante o ano e utilizamos a citação "Uma árvore apenas consegue absorver CO2 à taxa de 22 kg. por ano." - Arbor Enviromental Alliance. Como fórmula Java:
double co2CommuteConsumptionYearly = 240 * index.co2; double treesNeededForCommute = (co2CommuteConsumptionYearly / 1000) / 21.77; //each tree absorbs about 21.77kg of CO2
Esta página foi traduzida a partir do inglês. Improve translation of this page