ดัชนีคุณภาพอากาศ (Air Quality Index : AQI)

Post Reply
tong
Site Admin
Posts: 2386
Joined: Fri 01 May 2009 8:55 pm

ดัชนีคุณภาพอากาศ (Air Quality Index : AQI)

Post by tong »

ดัชนีคุณภาพอากาศ (Air Quality Index : AQI)

เป็นการรายงานข้อมูลคุณภาพอากาศในรูปแบบที่ง่ายต่อความเข้าใจของประชาชนทั่วไป
ใช้เป็นตัวแทนค่าความเข้มข้นของสารมลพิษทางอากาศ

การคำนวน AQI จะคำนวนแยกตามชนิดของสารมลพิษจำนวน 6 ชนิดได้แก่
PM2.5, PM10, O3, CO, NO2 และ SO2
จากนั้นจะใช้ค่า AQI ของสารมลพิษที่มากที่สุดเป็นดัชนีหลัก
1_Calculation.png
tong
Site Admin
Posts: 2386
Joined: Fri 01 May 2009 8:55 pm

Re: ดัชนีคุณภาพอากาศ (Air Quality Index : AQI)

Post by tong »

AQI Concentration Breakpoints Categories Boundary Calculation
https://en.wikipedia.org/wiki/Air_quality_index

AQI US EPA Breakpoints 2012
View JS source code at
https://airnow.gov/index.cfm?action=airnow.calculator

AQI CN MEE Breakpoints 2012
HJ 633-2012 Technical Regulation on Ambient Air Quality Index
HJ 633-2012 环境空气质量指数(AQI)技术规定(试行)
http://kjs.mee.gov.cn/hjbhbz/bzwb/jcffbz/201203/t20120302_224166.shtml
http://kjs.mee.gov.cn/hjbhbz/bzwb/jcffbz/201203/W020120410332725219541.pdf

AQI TH PCD Breakpoints
View JS source code at
http://air4thai.pcd.go.th/webV2/aqi_info.php

WHO Ambient (outdoor) air quality and health
2 May 2018
https://www.who.int/en/news-room/fact-sheets/detail/ambient-(outdoor)-air-quality-and-health
tong
Site Admin
Posts: 2386
Joined: Fri 01 May 2009 8:55 pm

Re: ดัชนีคุณภาพอากาศ (Air Quality Index : AQI)

Post by tong »

AQI US EPA Breakpoints 2_US_EPA.png AQI CN MEE Breakpoints 3_CN_MEE.png AQI TH PCD Breakpoints 4_TH_PCD.png
tong
Site Admin
Posts: 2386
Joined: Fri 01 May 2009 8:55 pm

Re: ดัชนีคุณภาพอากาศ (Air Quality Index : AQI)

Post by tong »

Thailand PCD : AQI higher than 200 don't have breakpoints
4_TH_PCD_201.png 4_TH_PCD_201_Table.png
tong
Site Admin
Posts: 2386
Joined: Fri 01 May 2009 8:55 pm

Re: ดัชนีคุณภาพอากาศ (Air Quality Index : AQI)

Post by tong »

Example Perl Script
Concentration to AQI Conversion Calculation
AQI Comparison between US, CN and TH

Code: Select all

#!/usr/bin/perl

#####################################################################

$PM->{US}->{2.5}->{12}    = [ qw(  0   50    0.0   12.0) ];
$PM->{US}->{2.5}->{35.4}  = [ qw( 51  100   12.1   35.4) ];
$PM->{US}->{2.5}->{55.4}  = [ qw(101  150   35.5   55.4) ];
$PM->{US}->{2.5}->{150.4} = [ qw(151  200   55.5  150.4) ];
$PM->{US}->{2.5}->{250.4} = [ qw(201  300  150.5  250.4) ];
$PM->{US}->{2.5}->{350.4} = [ qw(301  400  250.5  350.4) ];
$PM->{US}->{2.5}->{500.4} = [ qw(401  500  350.5  500.4) ];

$PM->{US}->{10}->{54}     = [ qw(  0   50    0.0   54.0) ];
$PM->{US}->{10}->{154}    = [ qw( 51  100   55.0  154.0) ];
$PM->{US}->{10}->{254}    = [ qw(101  150  155.0  254.0) ];
$PM->{US}->{10}->{354}    = [ qw(151  200  255.0  354.0) ];
$PM->{US}->{10}->{424}    = [ qw(201  300  355.0  424.0) ];
$PM->{US}->{10}->{504}    = [ qw(301  400  425.0  504.0) ];
$PM->{US}->{10}->{604}    = [ qw(401  500  505.0  604.0) ];

$PM->{CN}->{2.5}->{35}    = [ qw(  0   50    0.0   35.0) ];
$PM->{CN}->{2.5}->{75}    = [ qw( 51  100   36.0   75.0) ];
$PM->{CN}->{2.5}->{115}   = [ qw(101  150   76.0  115.0) ];
$PM->{CN}->{2.5}->{150}   = [ qw(151  200  116.0  150.0) ];
$PM->{CN}->{2.5}->{250}   = [ qw(201  300  151.0  250.0) ];
$PM->{CN}->{2.5}->{350}   = [ qw(301  400  251.0  350.0) ];
$PM->{CN}->{2.5}->{500}   = [ qw(401  500  351.0  500.0) ];

$PM->{CN}->{10}->{50}     = [ qw(  0   50    0.0   50.0) ];
$PM->{CN}->{10}->{150}    = [ qw( 51  100   51.0  150.0) ];
$PM->{CN}->{10}->{250}    = [ qw(101  150  151.0  250.0) ];
$PM->{CN}->{10}->{350}    = [ qw(151  200  251.0  350.0) ];
$PM->{CN}->{10}->{420}    = [ qw(201  300  351.0  420.0) ];
$PM->{CN}->{10}->{500}    = [ qw(301  400  421.0  500.0) ];
$PM->{CN}->{10}->{600}    = [ qw(401  500  501.0  600.0) ];

$PM->{TH}->{2.5}->{25}    = [ qw(  0   25    0.0   25.0) ];
$PM->{TH}->{2.5}->{37}    = [ qw( 26   50   26.0   37.0) ];
$PM->{TH}->{2.5}->{50}    = [ qw( 51  100   38.0   50.0) ];
$PM->{TH}->{2.5}->{90}    = [ qw(101  200   51.0   90.0) ];
$PM->{TH}->{2.5}->{500}   = [ qw(201  610   91.0  500.0) ];	# 1 µg/m³ : 1 AQI

$PM->{TH}->{10}->{50}     = [ qw(  0   25    0.0   50.0) ];
$PM->{TH}->{10}->{80}     = [ qw( 26   50   51.0   80.0) ];
$PM->{TH}->{10}->{120}    = [ qw( 51  100   81.0  120.0) ];
$PM->{TH}->{10}->{180}    = [ qw(101  200  121.0  180.0) ];
$PM->{TH}->{10}->{600}    = [ qw(201  411  181.0  600.0) ];	# 1 µg/m³ : 0.5 AQI

#####################################################################

$CAT->{50}->{TXT}    = "Good";
$CAT->{100}->{TXT}   = "Moderate";
$CAT->{150}->{TXT}   = "Unhealthy for Sensitive Groups";
$CAT->{200}->{TXT}   = "Unhealthy";
$CAT->{300}->{TXT}   = "Very Unhealthy";
$CAT->{400}->{TXT}   = "Hazardous";
$CAT->{500}->{TXT}   = "Hazardous";

$CAT->{50}->{COLOR}  = "#00e400";	#Green
$CAT->{100}->{COLOR} = "#ffff00";	#Yellow
$CAT->{150}->{COLOR} = "#ff7e00";	#Orange
$CAT->{200}->{COLOR} = "#ff0000";	#Red
$CAT->{300}->{COLOR} = "#99004c";	#Purple
$CAT->{400}->{COLOR} = "#7e0023";	#Maroon
$CAT->{500}->{COLOR} = "#7e0023";	#Maroon

#####################################################################

sub AQI
{
	my ($standard, $particulate, $concentration) = @_;

	foreach my $category (sort {$a <=> $b} keys %{$PM->{$standard}->{$particulate}})
	{
		#print "$category\n";
		if ( $concentration <= $category )
		{
			my($AQI_L, $AQI_H, $CON_L, $CON_H) = @{$PM->{$standard}->{$particulate}->{$category}};

			my $AQI = ((($concentration - $CON_L) / ($CON_H - $CON_L)) * ($AQI_H - $AQI_L)) + $AQI_L;
        		   $AQI = int($AQI + 0.5);	#Round to nearest integer

			return $AQI;
		}
	}
}

#####################################################################

#print AQI("US", 2.5, 351) . "\n";   exit;

#####################################################################

foreach my $concentration (1..500)
{
	my $US25 = AQI("US", 2.5, $concentration);
	my $CN25 = AQI("CN", 2.5, $concentration);
	my $TH25 = AQI("TH", 2.5, $concentration);
	my $US10 = AQI("US", 10,  $concentration);
	my $CN10 = AQI("CN", 10,  $concentration);
	my $TH10 = AQI("TH", 10,  $concentration);
	print join("\t", $concentration, $US25, $CN25, $TH25, $US10, $CN10, $TH10, "\n");
}

#####################################################################
#####################################################################
#####################################################################
tong
Site Admin
Posts: 2386
Joined: Fri 01 May 2009 8:55 pm

Re: ดัชนีคุณภาพอากาศ (Air Quality Index : AQI)

Post by tong »

AQI Comparison Conversion Table between US EPA, China MEE, Thai PCD
Comparison_new_1.png Comparison_new_2.png Comparison_new_3.png Comparison_new_4.png Comparison_new_5.png
tong
Site Admin
Posts: 2386
Joined: Fri 01 May 2009 8:55 pm

Re: ดัชนีคุณภาพอากาศ (Air Quality Index : AQI)

Post by tong »

WHO Air Quality Guideline
WHO_Air_Quality_Guideline.png Daily_Activities.png
tong
Site Admin
Posts: 2386
Joined: Fri 01 May 2009 8:55 pm

Re: ดัชนีคุณภาพอากาศ (Air Quality Index : AQI)

Post by tong »

เปรียบเทียบ air4thai และ airvisual นั้นสอดคล้องกัน
air4thai_vs_airvisual.png
Post Reply