AQI 如何计算的
具体计算策略本质上是根据某一个变量(如二氧化氮)的观测值,找到对应的污染物区间及对应的 IAQI 区间, 做一次线性插值,得到对应的变量的 IAQI。 所有的 IAQI 取最大值就是 AQI。
国标计算条件#
HJ 633-2012 文件中的「空气质量分指数及对应的污染物项目浓度限值」表摘录如下:
空气质量分指数(IAQI) | 污染物项目浓度限值 | |||||||||
二氧化硫(SO2) 24 小时 平均/(μg/m3) | 二氧化硫(SO2) 1 小时 平均/ ((μg/m3)1 | 二氧化氮(NO2) 24 小时 平均/ )(μg/m3) | 二氧化氮(NO2) 1 小时 平均/(μg/m3)(1) | 颗粒物 (粒径小于等于 10µm) 24小时 平均/(μg/m3) | 一氧化碳(CO) 24 小时 平均/(mg/m3) | 一氧化碳(CO) 1 小时 平均/ ((mg/m3)1 | 臭氧(O3)1 小时 平均/ )(μg/m3) | 臭氧(O3)8 小时滑 动平均/(μg/m3) | 颗粒物 (粒径小于等于 2.5µm)24 小时 平均/(μg/m3) | |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
50 | 50 | 150 | 40 | 100 | 50 | 2 | 5 | 160 | 100 | 35 |
100 | 150 | 500 | 80 | 200 | 150 | 4 | 10 | 200 | 160 | 75 |
150 | 475 | 650 | 180 | 700 | 250 | 14 | 35 | 300 | 215 | 115 |
200 | 800 | 800 | 280 | 1200 | 350 | 24 | 60 | 400 | 265 | 150 |
300 | 1600 | (2) | 565 | 2340 | 420 | 36 | 90 | 800 | 800 | 250 |
400 | 2100 | (2) | 750 | 3090 | 500 | 48 | 120 | 1000 | (3) | 350 |
500 | 2620 | (2) | 940 | 3840 | 600 | 60 | 150 | 1200 | (3) | 500 |
说明: | (1)二氧化硫(SO2)、二氧化氮(NO2)和一氧化碳(CO)的 1 小时平均浓度限值仅用于实时报,在日报中 需使用相应污染物的 24 小时平均浓度限值。 (2)二氧化硫(SO2)1 小时平均浓度值高于 800 μg/m 3的,不再进行其空气质量分指数计算,二氧化硫(SO2) 空气质量分指数按 24 小时平均浓度计算的分指数报告。 (3)臭氧(O3)8 小时平均浓度值高于 800 μg/m 3的,不再进行其空气质量分指数计算,臭氧(O3)空气质量 分指数按 1 小时平均浓度计算的分指数报告。 |
计算公式如下:
$$ IAQI_{P} = \frac{IAQI_{Hi}-IAQI_{Lo}}{BP_{Hi}-BP_{Lo}} (C_{P} - BP_{Lo}) + IAQI_{Lo} $$
式中:
- $IAQI_{P}$ 污染物项目 $P$ 的空气质量分指数;
- $C_{P}$ 污染物项目 $P$ 的质量浓度值
- $BP_{Hi}$ 表中与 $C_{P}$ 相近的污染物浓度限值的高位值
- $BP_{Lo}$ 表中与 $C_{P}$ 相近的污染物浓度限值的低位值
- $IAQI_{Hi}$ 表中与 $BP_{Hi}$ 对应的空气质量分指数
- $IAQI_{Lo}$ 表中与 $BP_{Lo}$ 对应的空气质量分指数。
实时报时间周期为 1 小时,每一整点时刻后即可发布各监测点位的实时报,滞后时间不应超过 1 小时。实时报的指标包括二氧化硫(SO2)、二氧化氮(NO2)、臭氧(O3)、一氧化碳(CO)、颗粒物(粒径小于等于 10µm)和颗粒物(粒径小于等于 2.5µm)的 1 小时平均,以及臭氧(O3)8 小时滑动平均 和颗粒物(粒径小于等于 10µm)、颗粒物(粒径小于等于 2.5µm)的 24 小时滑动平均,共计 9 个指标。
实时报里采用的「颗粒物(粒径小于等于 2.5µm)的 1
小时平均」指标在表格「空气质量分指数(IAQI)」中并没有显示列出,不确定原因。
为了避免概念混淆,实时发布中以当前 1 小时浓度计算的指数将使用“实时空气质量指数”的全称,不再出现 AQI 的英文缩写;而空气质量日报中以日均浓度计算的指数仍沿用 AQI 的英文缩写 — 《本次实时发布系统改版主要做了哪些修改》1
国标计算例子#
以某观测站某时刻发布的数据为例子(只有 6 个变量,相比于「实时报」规定的 9 个变量少了 3 个历史滑动平均变量):
- PM2.5: 16
- PM10: 88
- CO: 0.2
- SO2: 3
- NO2: 11
- O3: 75
每个变量计算对应的 IAQI 值:
$$ IAQI_{All} = \begin{cases} IAQI_{PM2.5} = \frac{50-0}{35-0}(16-0) + 0 \approx 23 \newline IAQI_{PM10} = \frac{100-50}{150-50}(88-50) + 50 = 69 \newline IAQI_{CO} = \frac{50-0}{100-0}(0.2-0) + 0 = 0.1 \newline IAQI_{SO_{2}} = \frac{50-0}{50-0}(3-0) + 0 = 3 \newline IAQI_{NO_{2}} = \frac{50-0}{100-0}(11-0) + 0 = 5.5 \newline IAQI_{O_{3}} = \frac{50-0}{100-0}(75-0) + 0 = 37.5 \end{cases} $$
然后取最大值:
$$ AQI = max(IAQI_{All}) = 69 $$
首要污染物是「颗粒物(PM10)」
国标和美标的区别#
单位#
国标单位 基本都是 μg/m3 或者 mg/m3
而美标用了 μg/m3,PPM,PPB 三种单位。
如果想用中国观测站的数据计算对应的美标 AQI 则要做一次单位转换,相应的系数很容易搜索到。
国标和美标哪个更严格#
主要对比下 PM2.5,PM10 两个变量在国标和美标下的 IAQI 取值区间
代码如下:
import matplotlib.pyplot as plt
plt.rcParams["figure.dpi"] = 500
plt.rcParams["axes.unicode_minus"] = False
plt.rcParams["font.sans-serif"] = ["Songti SC"]
plt.style.use("ggplot")
ch_pm25 = [0, 35, 75, 115, 150, 250, 350, 500]
ch_pm25_iaqi = [0, 50, 100, 150, 200, 300, 400, 500]
plt.plot(ch_pm25, ch_pm25_iaqi, label="国标 PM2.5-IAQI 趋势")
usa_pm25 = [0, 12.0, 12.1, 35.4, 35.5, 55.4, 55.5, 150.4, 150.5, 250.4, 250.5, 500.4]
usa_pm25_iaqi = [0, 50, 51, 100, 101, 150, 151, 200, 201, 300, 301, 500]
plt.plot(usa_pm25, usa_pm25_iaqi, label="美标 PM2.5-IAQI 趋势")
ch_pm10 = [0, 50, 150, 250, 350, 420, 500, 600]
ch_pm10_iaqi = [0, 50, 100, 150, 200, 300, 400, 500]
plt.plot(ch_pm10, ch_pm10_iaqi, label="国标 PM10-IAQI 趋势")
usa_pm10 = [0, 54, 55, 154, 155, 254, 255, 354, 355, 424, 425, 604]
usa_pm10_iaqi = [0, 50, 51, 100, 101, 150, 151, 200, 201, 300, 301, 500]
plt.plot(usa_pm10, usa_pm10_iaqi, label="美标 PM10-IAQI 趋势")
plt.legend()
plt.show()
# plt.savefig("aqi-diff.png")