From b5d31adffde1a85795ea9b219a683df27fbe7c4e Mon Sep 17 00:00:00 2001 From: Russ Biggs Date: Fri, 9 Aug 2024 13:25:15 -0600 Subject: [PATCH] finland and taiwan added --- docs/data/finland/breakpoints.csv | 31 ++++++++++ docs/data/india/breakpoints.csv | 55 +++++++++++++++++ docs/data/taiwan/breakpoints.csv | 43 +++++++++++++ docs/imgs/high.webp | Bin 948 -> 0 bytes docs/imgs/hk_icon_high.svg | 1 + docs/imgs/hk_icon_low.svg | 1 + docs/imgs/hk_icon_moderate.svg | 1 + docs/imgs/hk_icon_serious.svg | 1 + docs/imgs/hk_icon_very_high.svg | 1 + docs/imgs/low.webp | Bin 784 -> 0 bytes docs/imgs/moderate.webp | Bin 920 -> 0 bytes docs/imgs/serious.webp | Bin 1272 -> 0 bytes docs/imgs/very_high.webp | Bin 1398 -> 0 bytes docs/indices/finland.md | 17 +++++ docs/indices/malaysia.md | 1 + docs/indices/south-korea.md | 8 +-- docs/indices/taiwan.md | 99 ++++++++++++++++++++++++++++++ observablehq.config.js | 1 + 18 files changed, 253 insertions(+), 7 deletions(-) create mode 100644 docs/data/finland/breakpoints.csv create mode 100644 docs/data/india/breakpoints.csv create mode 100644 docs/data/taiwan/breakpoints.csv delete mode 100644 docs/imgs/high.webp create mode 100644 docs/imgs/hk_icon_high.svg create mode 100644 docs/imgs/hk_icon_low.svg create mode 100644 docs/imgs/hk_icon_moderate.svg create mode 100644 docs/imgs/hk_icon_serious.svg create mode 100644 docs/imgs/hk_icon_very_high.svg delete mode 100644 docs/imgs/low.webp delete mode 100644 docs/imgs/moderate.webp delete mode 100644 docs/imgs/serious.webp delete mode 100644 docs/imgs/very_high.webp create mode 100644 docs/indices/taiwan.md diff --git a/docs/data/finland/breakpoints.csv b/docs/data/finland/breakpoints.csv new file mode 100644 index 0000000..e3740c1 --- /dev/null +++ b/docs/data/finland/breakpoints.csv @@ -0,0 +1,31 @@ +ISO,variant,category,hex,category_lower,category_upper,pollutant,units,averaging_period,concentration_lower,concentration_upper +FI,,Good,#67e567,0,50,PM2.5,ug/m3,1,0,10 +FI,,Good,#67e567,0,50,PM10,ug/m3,1,0,20 +FI,,Good,#67e567,0,50,O3,ug/m3,1,0,60 +FI,,Good,#67e567,0,50,SO2,ug/m3,1,0,20 +FI,,Good,#67e567,0,50,NO2,ug/m3,1,0,40 +FI,,Good,#67e567,0,50,TRS,ug/m3,1,0,5 +FI,,Satisfactory,#fff055,51,75,PM2.5,ug/m3,1,11,25 +FI,,Satisfactory,#fff055,51,75,PM10,ug/m3,1,21,50 +FI,,Satisfactory,#fff055,51,75,O3,ug/m3,1,61,100 +FI,,Satisfactory,#fff055,51,75,SO2,ug/m3,1,21,80 +FI,,Satisfactory,#fff055,51,75,NO2,ug/m3,1,41,70 +FI,,Satisfactory,#fff055,51,75,TRS,ug/m3,1,6,10 +FI,,Fair,#ffbb58,76,100,PM2.5,ug/m3,1,26,50 +FI,,Fair,#ffbb58,76,100,PM10,ug/m3,1,51,100 +FI,,Fair,#ffbb58,76,100,O3,ug/m3,1,101,140 +FI,,Fair,#ffbb58,76,100,SO2,ug/m3,1,81,250 +FI,,Fair,#ffbb58,76,100,NO2,ug/m3,1,71,150 +FI,,Fair,#ffbb58,76,100,TRS,ug/m3,1,11,20 +FI,,Poor,#fe4543,101,150,PM2.5,ug/m3,1,51,75 +FI,,Poor,#fe4543,101,150,PM10,ug/m3,1,101,200 +FI,,Poor,#fe4543,101,150,O3,ug/m3,1,141,180 +FI,,Poor,#fe4543,101,150,SO2,ug/m3,1,251,350 +FI,,Poor,#fe4543,101,150,NO2,ug/m3,1,151,200 +FI,,Poor,#fe4543,101,150,TRS,ug/m3,1,21,50 +FI,,Very poor,#b5468b,151,,PM2.5,ug/m3,1,76, +FI,,Very poor,#b5468b,151,,PM10,ug/m3,1,201, +FI,,Very poor,#b5468b,151,,O3,ug/m3,1,181, +FI,,Very poor,#b5468b,151,,SO2,ug/m3,1,351, +FI,,Very poor,#b5468b,151,,NO2,ug/m3,1,201, +FI,,Very poor,#b5468b,151,,TRS,ug/m3,1,51, \ No newline at end of file diff --git a/docs/data/india/breakpoints.csv b/docs/data/india/breakpoints.csv new file mode 100644 index 0000000..d9e78d7 --- /dev/null +++ b/docs/data/india/breakpoints.csv @@ -0,0 +1,55 @@ +ISO,variant,category,hex,category_lower,category_upper,pollutant,units,averaging_period,concentration_lower,concentration_upper +IN,,Good,#00b050,0,50,PM2.5,ug/m3,24,0,30 +IN,,Good,#00b050,0,50,PM10,ug/m3,24,0,50 +IN,,Good,#00b050,0,50,SO2,ug/m3,24,0,40 +IN,,Good,#00b050,0,50,NO2,ug/m3,24,0,40 +IN,,Good,#00b050,0,50,CO,mg/m³,8,0,1 +IN,,Good,#00b050,0,50,O3,ug/m3,8,0,50 +IN,,Good,#00b050,0,50,O3,ug/m3,1,, +IN,,Good,#00b050,0,50,NH3,ug/m3,24,0,200 +IN,,Good,#00b050,0,50,Pb,ug/m3,24,0,0.50 +IN,,Satisfactory,#92d051,51,100,PM2.5,ug/m3,24,31,60 +IN,,Satisfactory,#92d051,51,100,PM10,ug/m3,24,51,100 +IN,,Satisfactory,#92d051,51,100,SO2,ug/m3,24,41,80 +IN,,Satisfactory,#92d051,51,100,NO2,ug/m3,24,41,80 +IN,,Satisfactory,#92d051,51,100,CO,mg/m³,8,1.1,2 +IN,,Satisfactory,#92d051,51,100,O3,ug/m3,8,51,100 +IN,,Satisfactory,#92d051,51,100,O3,ug/m3,1,, +IN,,Satisfactory,#92d051,51,100,NH3,ug/m3,24,201,400 +IN,,Satisfactory,#92d051,51,100,Pb,ug/m3,24,0.51,1.0 +IN,,Moderately Polluted,#ffff00,101,200,PM2.5,ug/m3,24,61,90 +IN,,Moderately Polluted,#ffff00,101,200,PM10,ug/m3,24,101,250 +IN,,Moderately Polluted,#ffff00,101,200,SO2,ug/m3,24,81,380 +IN,,Moderately Polluted,#ffff00,101,200,NO2,ug/m3,24,81,180 +IN,,Moderately Polluted,#ffff00,101,200,CO,mg/m³,8,2.1,10 +IN,,Moderately Polluted,#ffff00,101,200,O3,ug/m3,8,101,168 +IN,,Moderately Polluted,#ffff00,101,200,O3,ug/m3,1,, +IN,,Moderately Polluted,#ffff00,101,200,NH3,ug/m3,24,401,800 +IN,,Moderately Polluted,#ffff00,101,200,Pb,ug/m3,24,1.1,2.0 +IN,,Poor,#ff6500,201,300,PM2.5,ug/m3,24,91,120 +IN,,Poor,#ff6500,201,300,PM10,ug/m3,24,251,350 +IN,,Poor,#ff6500,201,300,SO2,ug/m3,24,381,800 +IN,,Poor,#ff6500,201,300,NO2,ug/m3,24,181,280 +IN,,Poor,#ff6500,201,300,CO,mg/m³,8,10.1,17 +IN,,Poor,#ff6500,201,300,O3,ug/m3,8,169,208 +IN,,Poor,#ff6500,201,300,O3,ug/m3,1,, +IN,,Poor,#ff6500,201,300,NH3,ug/m3,24,801,1200 +IN,,Poor,#ff6500,201,300,Pb,ug/m3,24,2.1,3.0 +IN,,Very Poor,#ff0000,301,400,PM2.5,ug/m3,24,121,250 +IN,,Very Poor,#ff0000,301,400,PM10,ug/m3,24,351,430 +IN,,Very Poor,#ff0000,301,400,SO2,ug/m3,24,801,1600 +IN,,Very Poor,#ff0000,301,400,NO2,ug/m3,24,281,400 +IN,,Very Poor,#ff0000,301,400,CO,mg/m³,8,17.1,34 +IN,,Very Poor,#ff0000,301,400,O3,ug/m3,8,, +IN,,Very Poor,#ff0000,301,400,O3,ug/m3,1,209,748 +IN,,Very Poor,#ff0000,301,400,NH3,ug/m3,24,1201,1800 +IN,,Very Poor,#ff0000,301,400,Pb,ug/m3,24,3.1,3.5 +IN,,Severe,#c00000,401,500,PM2.5,ug/m3,24,250, +IN,,Severe,#c00000,401,500,PM10,ug/m3,24,430, +IN,,Severe,#c00000,401,500,SO2,ug/m3,24,1600, +IN,,Severe,#c00000,401,500,NO2,ug/m3,24,400, +IN,,Severe,#c00000,401,500,CO,mg/m³,8,34, +IN,,Severe,#c00000,401,500,O3,ug/m3,8,, +IN,,Severe,#c00000,401,500,O3,ug/m3,1,748, +IN,,Severe,#c00000,401,500,NH3,ug/m3,24,1800, +IN,,Severe,#c00000,401,500,Pb,ug/m3,24,3.5, diff --git a/docs/data/taiwan/breakpoints.csv b/docs/data/taiwan/breakpoints.csv new file mode 100644 index 0000000..c720a03 --- /dev/null +++ b/docs/data/taiwan/breakpoints.csv @@ -0,0 +1,43 @@ +ISO,variant,category,hex,category_lower,category_upper,pollutant,units,averaging_period,concentration_lower,concentration_upper +TW,,Good,#009865,0,50,PM2.5,ug/m3,24,0,15.4 +TW,,Good,#009865,0,50,PM10,ug/m3,24,0,50 +TW,,Good,#009865,0,50,CO,ppm,8,0,4.4 +TW,,Good,#009865,0,50,O3,ppm,1,0, +TW,,Good,#009865,0,50,O3,ppm,8,0,0.054 +TW,,Good,#009865,0,50,SO2,ppb,1,0,20 +TW,,Good,#009865,0,50,NO2,ppb,1,0,30 +TW,,Moderate,#fffb26,51,100,PM2.5,ug/m3,24,15.5,35.4 +TW,,Moderate,#fffb26,51,100,PM10,ug/m3,24,51,100 +TW,,Moderate,#fffb26,51,100,CO,ppm,8,4.5,9.4 +TW,,Moderate,#fffb26,51,100,O3,ppm,1,, +TW,,Moderate,#fffb26,51,100,O3,ppm,8,0.055,0.07 +TW,,Moderate,#fffb26,51,100,SO2,ppb,1,21,75 +TW,,Moderate,#fffb26,51,100,NO2,ppb,1,31,100 +TW,,Unhealthy for sensitive groups,#ff9835,101,150,PM2.5,ug/m3,24,35.5,54.4 +TW,,Unhealthy for sensitive groups,#ff9835,101,150,PM10,ug/m3,24,101,254 +TW,,Unhealthy for sensitive groups,#ff9835,101,150,CO,ppm,8,9.5,12.4 +TW,,Unhealthy for sensitive groups,#ff9835,101,150,O3,ppm,1,0.125,0.164 +TW,,Unhealthy for sensitive groups,#ff9835,101,150,O3,ppm,8,0.071,0.085 +TW,,Unhealthy for sensitive groups,#ff9835,101,150,SO2,ppb,1,76,185 +TW,,Unhealthy for sensitive groups,#ff9835,101,150,NO2,ppb,1,101,360 +TW,,Unhealthy,#ca0034,151,200,PM2.5,ug/m3,24,54.5,150.4 +TW,,Unhealthy,#ca0034,151,200,PM10,ug/m3,24,255,354 +TW,,Unhealthy,#ca0034,151,200,CO,ppm,8,12.5,15.4 +TW,,Unhealthy,#ca0034,151,200,O3,ppm,1,0.165,0.204 +TW,,Unhealthy,#ca0034,151,200,O3,ppm,8,0.086,0.105 +TW,,Unhealthy,#ca0034,151,200,SO2,ppb,1,186,304 +TW,,Unhealthy,#ca0034,151,200,NO2,ppb,1,361,649 +TW,,Very unhealthy,#670099,201,300,PM2.5,ug/m3,24,150.5,250.4 +TW,,Very unhealthy,#670099,201,300,PM10,ug/m3,24,355,424 +TW,,Very unhealthy,#670099,201,300,CO,ppm,8,15.5,30.4 +TW,,Very unhealthy,#670099,201,300,O3,ppm,1,0.205,0.404 +TW,,Very unhealthy,#670099,201,300,O3,ppm,8,0.106,0.2 +TW,,Very unhealthy,#670099,201,300,SO2,ppb,1,305,604 +TW,,Very unhealthy,#670099,201,300,NO2,ppb,1,650,1249 +TW,,Hazardous,#7e0123,301,500,PM2.5,ug/m3,24,250.5,500.4 +TW,,Hazardous,#7e0123,301,500,PM10,ug/m3,24,425,604 +TW,,Hazardous,#7e0123,301,500,CO,ppm,8,30.5,50.4 +TW,,Hazardous,#7e0123,301,500,O3,ppm,1,0.405,0.604 +TW,,Hazardous,#7e0123,301,500,O3,ppm,8,, +TW,,Hazardous,#7e0123,301,500,SO2,ppb,1,605,1004 +TW,,Hazardous,#7e0123,301,500,NO2,ppb,1,1250,2049 \ No newline at end of file diff --git a/docs/imgs/high.webp b/docs/imgs/high.webp deleted file mode 100644 index 6ab76cc117e24aadad45dd533df9d3b0db33ebec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 948 zcmV;l155l;Nk&Gj0{{S5MM6+kP&go<0{{R}5&)e6Dr5jM06vjGoJu95qM@o&ni#MW z31$G%>=i2?ym0~-PQ|gc>U(VWdpEow16KFZHQY3&Q0>s{uSdJ1)+;hkvGAsP)O~^XnzW?{gAhydzDE?m<_D>I-yB zwIeM~oi^OKe2Mil)+<*7(a|*3*Dk}|lYjvJ{F5wpMy$*>o_u{0<1Uv}WrwJv$zhZy zxiQC`x2)nAsK(6<)4O4)XZzR0hoF2VItNQ-NN+qe+ct$#|`-CjHRMe%_9J<39>M^bID;zqP>n#FJ9g6I(-1p zoODaMDwk5p-TW%mZsX*c=LkcgiuN1$R#9h0W(ZaN4>)8SxbiAompEup_zUI#k*bUf zq4%0)07FAcBkA(Fs}nX~fnNL>kJtHsSgtTxV`Xjwhu?D12IJn|Pj^4A>lixOv8&*J z2mTjnMuP9kDt-achwfQhpUY|WNzVNz3|ryPCow@1$C*O#BKaMV|{x#9Rt}O$Kv;BJN5geCDc#<&1M`fMb6%nM{j6W%OAwLymgSf z)qZ&8)Ns3>nJ%Nvh*5~&&wo9@;EaSI-h=g~;T9|NH~r&RTT{1?wz~jxJNN5#G|? zRS(%!QasrM_k&UVCVXsb#@v5CewC;YRva5*vFV8|F=9C5n1X75W-t-}i2F@}Cbfpzld(3b}X3W&M#tlCu%J#DoZfm5o|`(7)l73?DyVPCP&q= WB-&)KLh9Nf7lw~UCO`lH0002#R@)T- diff --git a/docs/imgs/hk_icon_high.svg b/docs/imgs/hk_icon_high.svg new file mode 100644 index 0000000..250a0a1 --- /dev/null +++ b/docs/imgs/hk_icon_high.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/imgs/hk_icon_low.svg b/docs/imgs/hk_icon_low.svg new file mode 100644 index 0000000..554b1b9 --- /dev/null +++ b/docs/imgs/hk_icon_low.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/imgs/hk_icon_moderate.svg b/docs/imgs/hk_icon_moderate.svg new file mode 100644 index 0000000..7319d43 --- /dev/null +++ b/docs/imgs/hk_icon_moderate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/imgs/hk_icon_serious.svg b/docs/imgs/hk_icon_serious.svg new file mode 100644 index 0000000..5921e8e --- /dev/null +++ b/docs/imgs/hk_icon_serious.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/imgs/hk_icon_very_high.svg b/docs/imgs/hk_icon_very_high.svg new file mode 100644 index 0000000..814ab97 --- /dev/null +++ b/docs/imgs/hk_icon_very_high.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/imgs/low.webp b/docs/imgs/low.webp deleted file mode 100644 index 65d0826befba18caf120b71a4566ee1bdc57ed73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 784 zcmV+r1MmD&Nk&Ep0{{S5MM6+kP&gp`0ssI|5CEM4Dr5jM06vjIn@OdkqM<8v*x;}d z2|yY1z#N_?GqGvT`CIfL=W+A_ygTS;(s9g&;S7b`ud&pP`!f5d>VV27HZqDIq=PYs)F!3A~50Mq{t?-nS6|V=Q~x; zw>SWZr#afLe%GR+9Xo=vEEEMQ>Lbg&_g|cQ@o_;%oF(L$P7Upc)^q5vBR<~&q&K!dJ+y8Y z3XO#H0^X+{v0~u5eKoi2j_29rPlmm3USZ;}un5_7hL zr}t#!y5$*x`0%!w|DSA0uv^{DPCTI%i)y}EIb<&Pshtajo=q8p`tx5Z9nF>9fZhdY zFxEWXN9yQGlTxphLK^Um%;vP+fkwG~#Hd67K3?YPt-t4w-b@TOH}pLnPBqn%q!hf_ z?M{~h#rrEA=&|Nyc*3#Vdq>4s&?A>FRcrnN2`_4fRDtS>aoHLV2D3StTo^?$vRdaM5^SP(bk6=Ee%wR|9AVG>F3xO5{iUxP6E|{T&rXHzZ48AZ$QsJ*pD(PWp`IH6q$;+= z*O^UbpFCdc@;FZ->;eDN+d#i1N-T7?CYAU0T>=)5l(vp%Xn;6Gx$%XvU`fO-IQtpA9bH7w%*?PxNU zWjFH|>4mTWkHFiH8$$vBR3@Bh>V0Z$)4$F(H`4}PR!?SoJ%~FVOu$9#l!pDkhCMi< zlFT%E1=++fJI)(lUu1~s_+TJ)YwI`p0092{K3n?3`~)HAsIF`Cl@(=(Gm7dSj#}wr z<+(`S;i%anTph2I*i?Vvs1uZBv#oaE8Dwo??%lwP!=1-CdOeZGneGH8Ou15>p%!AK z4IVGdi{svb*?uq(O6Oy_7yJf5rOm(+Jn$OLj5X5NgV=!1=gPHf_g>*D=&wlqwPz4O zErH{U2#|DwNE)b18FD>XWHb3>i|?V_un>t2W0~&Uv=%=v6eFQTok3j=QP+N zs^Y@U-tyt(J~t)R{cG3z3E(>8Wd0=|QnhmV?1_9;-8o4xA!AFiHV?oMFvl^W2IF!83J zP(_?SeNX5muGbpfr>+qsynJztZl51m9B1G~O9k?<95go^4Tm(d@0}QwJjE`4AJp&s zD&|3&<0^Qh>Dk7nlgO6bq~Bz#W`)6{s_a)Z8Kx~lw=Q9Qio#=Oz!A_bB5saI2Pw6; z;WTwAK=>V13tl*x=!&)We`15)(;3&PLcs<8S5wGQ_{XUR#(~)qL}&?`QN^wi?s5G@ zZ{$BB($?L5!M5@A(c|IQD|2XXK(Q>E@hKe<;RKyjP~6sxA1_}$oG=QZ{T_q`t(Dm< zu3t5uUI+qg%Pw+ogfk_0y35 z6)iFR;6QV~T>x>w9Q_|zz~)Y08|D26Ejo#bS7061EjuByI@xW}o5RM{$T7@a5`+pu uTOVI#-U%!5*@uFHPB{%YMXu=I@^4>b0>A|f-^xDI`fPA zehMASu0RvG(pH!f8)mOs9Rs~*op+%Rq)HShTDFwOwFb6OU_{XD)-;`emd0 z1x*7B0r*w*iV*@Kf5oB^?;E#e9J?mQbvEio$^Gp2lQV$)1vFDYoi z*Ygh64o8&ITh|^Go|nUvgonOC^N~QY_h>!ZM9iW~@4O#f32L%joS76O(LQESnv>+J>^^A=Kxh3*= z9=7o#EH_wtcT`16T3oL_0aBfOG2yV|<|QiZEBug$%D7x$nkDIwDeAngGyp|GsFS3eKyD*RIKc^RI~XxFR5I}(Nx7(-cRKH zTFgj`A2Q_sQhrB?%O$M}uKA(~xL|jp8JLeOBMP-y``)MP{n>_xe;0?_eGS6aaZu-| z?CT*u66jwSq8SC_1~d4~Xqi~%pxx8NxqM{IEV*KB%oKL87_03bA0A#n6v*r8pETeu z*fZa{gkmrGY;+&2F|9UuO1yfe;=oy^PWhCNr`c-LNE+g%S5)LKAQHY{ccN ig7YBjGy=a6oC|e#1{-J#33&tm7^2WZ?;9{OAOHXg=5jy) diff --git a/docs/imgs/very_high.webp b/docs/imgs/very_high.webp deleted file mode 100644 index c57f6e39ab8dbc46e0933e131b512db62deea1e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1398 zcmV-+1&R7nNk&F)1pok7MM6+kP&goB1pol>7XY0BDr5jM06vjEn@FXjqM>`icj9p81E{4nS=Lh@srNk^TeF z4J6+g{XqBt{!#rW{lBSJe7>Oe3jJ&AW9X95hPQy0Mg0GJFs%%t0N{rs?|~5qT@bTq zD-;Y#2ldMp#Js|x;6zVZ8FAaulJ1q{Pn{&6kZ7rnes=A>er##MC6t}^w8t5NyNvBv zVJ4U$)Tt_-Aobp4)yJUR*OGt${{1YHJdx1)=H{oBIt-_&Y)kDmn{%;9b8rRci4Y@J zG&q4}GKrViwPp@klj&DwVYYDe4$J=DxK`YZQZW3z{2r+MdVKOMbLTgT!OF)@XF{28 zf4i+Z-7WDR1xJ>L+w|g#a^VzK15AEM&~<^|)(=5pz^RCQI>sqT$}m@2yM5%LRwhdn zCu;BYRC8X!jiPSWJ3ambWYmMp(O4>t5U}UMj{fCnI^<(xD;xyMH;YVe`nU=+qk{PZ zTFB^e(;3&zc*ZPxP>!70|~m7DXdU~Rm~)PS?e+3p{_l~_B9?`cC4IHj)NpqQJmXu3{n zMsA>d$H)H*v&CPjaGy=XY}Clh*gbBw(pJhWQltIGQ0KD=DgM1Bx=*XMAQ)T`ijpfl2)njj@X~g%d-Sk@7{>8w~X50|7_Fq9S3C7 z=d5`g209a9Io9b&^%aB%-HqZ$yr1=KCAp{(W9)N_cN$lAZAqKbyzKk!WM~?25|@_L zvPc;>ff1WjalK9g?&pzxnZMj(g5Q~A{SR+l`vqySu?db3gn0p}k8hZ|#5OpOadFq# z>C<)Jvy)Ne1p}Y%p6IMv9XI>sz$b7mPVQoprtY6<w^@NtK+8Z~gO!ru#c+2$L}@0{f<8&)QEh9Iq*flKR*(G@BIxt5Y~OU#y0DBi%M_;pTy8*VWPj) z+bre#Rk-R&>F?NeD_kvd(p%){dfR!%K_=$(Lmh{?FBVC7hr7nd5v{r^eO}+$fRdIo zqaOl5^0q(mwdk17!QSGOY2n5a1Blh>um&YsFdvtGZmXg|=J8kzGn{W2.5, PM10, O3, SO2, NO2, and total reduced sulfur compounds (TRS). The Finnish Air Quality Index reports a Daily AQI using hourly averaging periods [^2]. The air quality index used in Finland was developed by the now Helsinki Region Environmental Services (HSY) and the Finnish Institute for Health and Welfare (THL). Helinski is the capital city of Finland. HSY first introduced the index in 1988\. The present method has been used for information communication since 1993, with the calculation methods revised in 2002 and 2007 [^3]. The HSY states that the “index differs from the indexes used in other countries in that it works on an hourly basis. Elsewhere, the value is influenced by 24-hour, 8-hour and 1-hour averages” [^3]. @@ -12,6 +25,10 @@ The air quality index used in Finland was developed by the now Helsinki Region E The Finnish Air Quality Index uses a five-level color scale [^2] [^3]: +```js +colorScale(colorScaleReshape(data)) +``` + ## Methods The Finnish Air Quality Index uses sub-indices assigned to each of the measured compounds. The highest sub-index determines the overall AQI of the station [^3]. The index is an hourly index based on hourly values, and updated every hour [^2]. diff --git a/docs/indices/malaysia.md b/docs/indices/malaysia.md index 2220043..6c91a47 100644 --- a/docs/indices/malaysia.md +++ b/docs/indices/malaysia.md @@ -61,6 +61,7 @@ After all sub-indices for a station are computed, the maximum sub-index value is ## Example + ## References [https://apims.doe.gov.my/pdf/API_Calculation.pdf](https://apims.doe.gov.my/pdf/API_Calculation.pdf> diff --git a/docs/indices/south-korea.md b/docs/indices/south-korea.md index 02dbeea..a28d58c 100644 --- a/docs/indices/south-korea.md +++ b/docs/indices/south-korea.md @@ -14,17 +14,11 @@ AIRKOREA provides air pollution information on their website since December 2005 import {breakpointsTable} from "../components/table.js"; import { parseBreakpointsCsv, tableReshape, colorScaleReshape } from '../utils/utils.js'; - -``` - -```js import { colorScale } from '../components/color-scale.js'; -``` -```js const breakpoints = await FileAttachment('../data/south-korea/breakpoints.csv').text(); - const data = parseBreakpointsCsv(breakpoints); + ``` ```js diff --git a/docs/indices/taiwan.md b/docs/indices/taiwan.md new file mode 100644 index 0000000..50385ec --- /dev/null +++ b/docs/indices/taiwan.md @@ -0,0 +1,99 @@ +# Taiwan + +## Air Quality Index (AQI) + +## Summary + +```js + +import {breakpointsTable} from "../components/table.js"; +import { parseBreakpointsCsv, tableReshape, colorScaleReshape } from '../utils/utils.js'; +import { colorScale } from '../components/color-scale.js'; + +const breakpoints = await FileAttachment('../data/taiwan/breakpoints.csv').text(); +const data = parseBreakpointsCsv(breakpoints); + +``` + +Taiwan’s Air Quality Index (AQI) accounts for PM2.5, PM10, CO, O3, SO2, and NO2. Taiwan reports a daily AQI along with a real-time AQI. + +The Ministry of Environment (MOENV) is responsible for air quality management and establishing and implementing AQIs. It also provides a map of AQI values across Taiwan for users. + +The newest AQI documentation was implemented in December 2016, with the first air pollution control fees levied in 1994 [A]. + +## Color scale + +Taiwan’s Air Quality Index is comprised of six categories: + +```js +colorScale(colorScaleReshape(data)) +``` + +Note that the Taiwan Air Quality Monitoring Network includes two categories within ‘Hazardous:’ 301-400 and 401-500. Each category has distinct breakpoints. + +## Methods + +The following is the pollutant breakpoint concentration values provided by MOENV: + +```js +breakpointsTable(data) +``` + +The source material does not document specific sub-index calculation equations. However, through back-calculation of provided pollutant values on the MOENV Taiwan Air Quality Monitoring Network, it appears to follow the standard sub-index piecewise linear function: + +```js +import {piecewiseLatexDoc} from '../components/piecewise.js'; +``` + +```js +piecewiseLatexDoc('AQI') +``` + +### Daily AQI + +The reported daily AQI is the maximum sub-index value calculated for each pollutant of the day. The concentrations of each pollutant in a day are averaged over the specific period to determine sub-index values. The equation used for calculating sub-indices is not provided. + +In general, an 8 hour averaging period for O3 is used to report the AQI. However, there are a few areas in which using a 1 hour averaging period for O3 is beneficial for further precaution. In these areas, a sub-index value may be calculated using a 1 hour averaging period in addition to the value calculated using the standard 8 hour averaging period. The maximum sub-index value is reported. + +A 1 hour averaging period for O3 is used when AQI values are calculated to be 301 or higher, as opposed to using an 8 hour period. A 24 hour averaging period for SO2 is used to calculate AQI values of 200 or greater, as opposed to a 1 hour period. + +### Real-time AQI + +MOENV also reports real-time AQI values to issue early warnings to the public and offers data for hourly monitoring. The real-time concentration for each pollutant is calculated based on varying equations and compared to the breakpoint concentration table to determine the sub-index. The maximum sub-index is equal to the real-time AQI value and leading pollutant. + +For O3 using an 8 hour averaging period, the real-time concentration is equal to the value of the last 8 hour moving average rounded to the nearest integer. For example, for an 8 hour average concentration published at 9 a.m., data from 1 a.m. to 8 a.m. was averaged. + +For O3 using a 1 hour averaging period, the real-time concentration is equal to the monitoring data at the time of reporting. A rounding convention is not specified. + +For PM2.5 and PM10, the real-time concentrations are calculated using the following equation: + +0.5 *average of the first 12 hours + 0.5* average of the first 4 hours. + +```tex +C_{12} = \frac{\sum_{n=1}^{12} C_{n}}{12} +``` + +```tex +C_{4} = \frac{\sum_{n=1}^{4} C_{n}}{4} +``` + +```tex +SI = 0.5 \times C_{12} + 0.5 \times C_{4} +``` + +6 out of the first 12 hour data entries and 2 out of the first 4 hour data entries are required for this equation to be valid. The moving average of PM2.5 is rounded to one decimal place, while the moving average of PM10 is rounded to the nearest integer. The rounding convention for the real-time concentration is not specified for either pollutant. + +For CO, the real-time concentration is calculated using a moving average of the last 8 hours. A rounding convention is not specified. + +For SO2 using a 24 hour averaging period, the real-time concentration is equal to the average concentration values in the last 24 hours. For example, for a 24 hour average concentration published at 9 a.m., data from 9 a.m. yesterday to 8 a.m. today was averaged. A rounding convention is not specified. + +For SO2 using a 1 hour averaging period, the real-time concentration is equal to the monitoring data at the time of reporting. A rounding convention is not specified. + +For NO2, the real-time concentration is equal to the monitoring data at the time of reporting. A rounding convention is not specified. + +## Example + +## References + +[1] +[2] diff --git a/observablehq.config.js b/observablehq.config.js index ed10a15..c4d3007 100644 --- a/observablehq.config.js +++ b/observablehq.config.js @@ -32,6 +32,7 @@ export default { {name: "Mexico", path: "/indices/mexico"}, {name: "Singapore", path: "/indices/singapore"}, {name: "South Korea", path: "/indices/south-korea"}, + {name: "Taiwan", path: "/indices/taiwan"}, {name: "Thailand", path: "/indices/thailand"}, {name: "UAE", path: "/indices/uae"}, {name: "US", path: "/indices/us"},