Gmina Michałowice - raport miesięczny porównawczy styczeń 2021 vs. styczeń 2020
Zestawienie porzygotowano na podstawie ogólnodostępnych danych pomiarowych zbieranych od 10 listopada 2018 roku. W tym czasie zebrano
ponad
$fp = fopen('licznik_pomiarow', 'r');
// echo $fp;
$ILEPO = '';
while (!feof($fp)) {
$ILEPO .= fread($fp, 8192);
}
echo number_format(intval($ILEPO),0,"."," ");
fclose($fp);
?> pomiarów z
17 czujników. Aktualne odczyty czujników -
smog Michałowice.
Uwagi:
- wykorzystane czujniki należą do Gminy Michałowice (Syngeos), sieci Airly i osób prywatnych (lookO2, smogTok),
- 👍 oznacza, że w stosunku do roku poprzedniego nastąpiła poprawa jakości powietrza,
- 👎 oznacza, że w stosunku do roku poprzedniego następiło pogorszenie jakości powietrza,
- 🤷 oznacza, że niemożliwe jest porównanie pomiarów dla zadanego okresu w różnych latach, np. w przypadku częstych i długotrwałych awarii któregoś z czujników, lub gdy czujnik został zainstalowany niedawno,
- średni indeks jakości powietrza obliczany jest zgodnie z przyjętą skalą dla chwilowego indeksu jakości powietrza,
- Gmina Michałowice eksploatuje czujniki Syngeos, które nie udostępniają danych w przyjętym standardzie API, (źródło danych dzięki uprzejmości producenta),
- urządzenia różnych dostawców mogą mieć różne metody pomiaru.
$parzysty=0;
asort($czujniki);
//////
$tablica_dzienna = array(
'1'=>0,
'2'=>0,
'3'=>0,
'4'=>0,
'5'=>0,
'6'=>0,
'przekroczone25'=>0,
'przekroczone10'=>0,
'liczba_pomiarow'=>0,
);
$indekser = 'opacz';
$file_yesterday = date('Ymd',strtotime("-1 days"));
echo "
";
echo "Lokalizacja | Srtyczeń 2021 | Styczeń 2020 | Zmiana rok do roku | Rodzaj czujnika |
";
echo "Liczba dni, w których zapylanie przekroczyło normę WHO | Średni indeks jakości powietrza | ";
//Liczba pomiarów / liczba dni testowych |
echo "Liczba dni, w których zapylanie przekroczyło normę WHO | Średni indeks jakości powietrza | ";
//Liczba pomiarów / Liczba dni testowych |
echo "
";
echo "Przekroczenie PM2.5 | Przekroczenie PM 10 | Przekroczenie PM2.5 | Przekroczenie PM 10 |
";
//petla po miejscach
$liczbadni=0;
$liczbadniOLD=0;
$najgorszyczujnik='';
$tmpmaks=0;
foreach ($czujniki as $czujnik) {
$tablica_okres=array();
$przekroczenie25wokresie=0;
$przekroczenie10wokresie=0;
$SUMAP =0;
$liczba_pomiarowwokresie =0;
$liczba_pomiarowwokresie=0;
$tablica_okresOLD=array();
$przekroczenie25wokresieOLD=0;
$przekroczenie10wokresieOLD=0;
$SUMAPOLD =0;
$liczba_pomiarowwokresieOLD =0;
$liczba_pomiarowwokresieOLD=0;
if ($czujnik[0]!="Michałowice") continue;
//duza petla na pliakch
$liczbadni=0;
foreach (glob($czujnik[3]."/202101*") as $filename) {
$liczbadniOLD=0;
// poczatek na jednym pliku
$tablica_dzienna = array(
'1'=>0,
'2'=>0,
'3'=>0,
'4'=>0,
'5'=>0,
'6'=>0,
'przekroczone25'=>0,
'przekroczone10'=>0,
'liczba_pomiarow'=>0,
);
if (file_exists($filename)) {
if (($handle = fopen($filename, "r")) !== FALSE) {
$liczbadni++;
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$tablica_dzienna[$data[1]]++;
if ($data[6] > 25) $tablica_dzienna['przekroczone25']++;
if ($data[9] > 50) $tablica_dzienna['przekroczone10']++;
$tablica_dzienna['liczba_pomiarow']++;
$pm20final = $data[6];
if ($pm20final < 13) $ijp=1;
else if ($pm20final < 37) $ijp=2;
else if ($pm20final < 61) $ijp=3;
else if ($pm20final < 85) $ijp=4;
else if ($pm20final < 120) $ijp=5;
else $ijp=6;
$ijp20=$ijp;
//pm10
$pm10final = $data[9];
if ($pm10final < 21) $ijp=1;
else if ($pm10final < 61) $ijp=2;
else if ($pm10final < 101) $ijp=3;
else if ($pm10final < 141) $ijp=4;
else if ($pm10final < 200) $ijp=5;
else $ijp=6;
$ijp10=$ijp;
if ($ijp10 > $ijp20) $CURRENT_IJP =$ijp10;
else $CURRENT_IJP=$ijp20;
$SUMAP += $CURRENT_IJP;
$tablica_dzienna[$CURRENT_IJP]++;
}
fclose($handle);
}
} // koniec na jednym pliku
if ($tablica_dzienna['przekroczone25']>0) $przekroczenie25wokresie += 1;
if ($tablica_dzienna['przekroczone10']>0) $przekroczenie10wokresie += 1;
$liczba_pomiarowwokresie = $liczba_pomiarowwokresie + $tablica_dzienna['liczba_pomiarow'];
}
///////////
//rok poprzedni
foreach (glob($czujnik[3]."/202001*") as $filenameOLD) {
// if (strstr($filenameOLD,"20191130")) continue;
$tablica_dziennaOLD = array(
'1'=>0,
'2'=>0,
'3'=>0,
'4'=>0,
'5'=>0,
'6'=>0,
'przekroczone25'=>0,
'przekroczone10'=>0,
'liczba_pomiarow'=>0,
);
if (file_exists($filenameOLD)) {
if (($handle1 = fopen($filenameOLD, "r")) !== FALSE) {
$liczbadniOLD++;
while (($data = fgetcsv($handle1, 1000, ",")) !== FALSE) {
$tablica_dziennaOLD[$data[1]]++;
if ($data[6] > 25) $tablica_dziennaOLD['przekroczone25']++;
if ($data[9] > 50) $tablica_dziennaOLD['przekroczone10']++;
$tablica_dziennaOLD['liczba_pomiarow']++;
$pm20final = $data[6];
if ($pm20final < 13) $ijp=1;
else if ($pm20final < 37) $ijp=2;
else if ($pm20final < 61) $ijp=3;
else if ($pm20final < 85) $ijp=4;
else if ($pm20final < 120) $ijp=5;
else $ijp=6;
$ijp20=$ijp;
//pm10
$pm10final = $data[9];
if ($pm10final < 21) $ijp=1;
else if ($pm10final < 61) $ijp=2;
else if ($pm10final < 101) $ijp=3;
else if ($pm10final < 141) $ijp=4;
else if ($pm10final < 200) $ijp=5;
else $ijp=6;
$ijp10=$ijp;
if ($ijp10 > $ijp20) $CURRENT_IJP =$ijp10;
else $CURRENT_IJP=$ijp20;
$SUMAPOLD += $CURRENT_IJP;
$tablica_dziennaOLD[$CURRENT_IJP]++;
}
fclose($handle1);
}
} // koniec na jednym pliku
if ($tablica_dziennaOLD['przekroczone25']>0) $przekroczenie25wokresieOLD += 1;
if ($tablica_dziennaOLD['przekroczone10']>0) $przekroczenie10wokresieOLD += 1;
$liczba_pomiarowwokresieOLD = $liczba_pomiarowwokresieOLD + $tablica_dziennaOLD['liczba_pomiarow'];
//koniec rok poprzedni
}
//duza petla na pliakch
if ($parzysty==1) { echo ""; $parzysty=0; }
else { echo "
"; $parzysty=1; }
echo "" . $czujnik[1];
echo " | ";
echo "" . $przekroczenie25wokresie;
echo " | ";
echo "" . $przekroczenie10wokresie;
echo " | ";
if ($liczba_pomiarowwokresie >0 ) $sredniIJPokresu = $SUMAP / $liczba_pomiarowwokresie;
else $sredniIJPokresu ='';
echo "" . round($sredniIJPokresu,2) . " | ";
// echo "" . $liczba_pomiarowwokresie . " / " . $liczbadni . " | ";
echo "";
//if ($czujnik[5]!=3)
echo $przekroczenie25wokresieOLD;
echo " | ";
echo "";
//if ($czujnik[5]!=3)
echo $przekroczenie10wokresieOLD;
echo " | ";
if ($liczba_pomiarowwokresieOLD >0 ) $sredniIJPokresuOLD = $SUMAPOLD / $liczba_pomiarowwokresieOLD;
else $sredniIJPokresu ='';
echo "";
//if ($czujnik[5]!=3)
echo round($sredniIJPokresuOLD,2);
echo " | ";
// echo "" . $liczba_pomiarowwokresie . " / " . $liczbadniOLD . " | ";
echo "";
if ($liczbadni==$liczbadniOLD) {
if ($sredniIJPokresuOLD>$sredniIJPokresu) echo "👍";
else if ($sredniIJPokresuOLD<$sredniIJPokresu) echo "👎";
else if ($sredniIJPokresuOLD==$sredniIJPokresu) echo "👉";
else echo "🤷";
}
else {
echo "🤷";
}
echo " | ";
if ($czujnik[5]==1)
echo "airly";
else if ($czujnik[5]==2)
echo "looko2";
else if ($czujnik[5]==0)
echo "smogtok";
else if ($czujnik[5]==3)
echo "syngeos";
echo " | ";
if ($sredniIJPokresu>$tmpmaks) {
$tmpmaks=$sredniIJPokresu;
$najgorszyczujnik = $czujnik[1];
}
echo "
";
} //koniec petli po mijescach
echo "
";
echo "Najgorsza jakość powietrza w okresie według pomiaru czujnika:
" . $najgorszyczujnik . "";
?>
Indeks jakości powietrza
Indeks Jakości Powietrza służy jednoznacznej i czytelnej prezentacji danych zanieczyszczenia powietrza na podstawie mierzonych parametrów.
Wartości indeksu oznaczają jakość powietrza: od najlepszej (wartość 1) do najgorszej (wartość 6).
Wartość Indeksu Jakości Powietrza liczona jest zgodnie z tabelą zakresów przedstawioną poniżej. Wyznaczane są indeksy indywidualne dla poszczególnych parametrów zanieczyszczeń.
Zalecenia Światowej Organizacji Zdrowia (WHO) dla norm średniodobowych wynoszą odpowiednio:
- 25 µg/m3 dla PM2,5
- 50 µg/m3 dla PM10
$miasteczko='';
echo "
Czujniki smogu w okolicy:";
foreach ($czujniki as $czujnik=>$parameteres) {
if ($miasteczko!=$parameteres[0]) {
$zmian = array_search($parameteres[0], $miast);
echo "
" . $parameteres[0]. " smog: ";
}
$miasteczko=$parameteres[0];
echo "
" . $parameteres[1]."";
}
?>