中国空气质量指数(AQI)及其计算方式

1、简介

       环境空气质量标准的建立,可以为环境空气质量管理、保护人体健康、维护生态环境安全,促进人与社会、自然和谐可持续发展发挥积极作用。20世纪70年代,美国最先构建环境空气指数标准,随后,世界各国也基于各自的空气质量状况建立了适合本国的空气质量指数发布系统,如中国的API(air pollution index)和AQI(air quality index)。可见,空气质量指数标准的建立时间也不是很久远。

       目前,中国空气质量标准来自国家环境保护部发布的《环境空气质量标准》(GB3095-2012)、《环境空气质量指数(AQI)技术规定(试行)》(HJ 633-2012)。从之前的3种、5种污染物到现在的6种污染物标准,分别为:SO_{2},NO_{2},O_{3},PM_{2.5},PM_{10},CO,具体如下:

                                               表1 中国空气质量指数发展历程

   2、AQI计算方法

       如表1 所示,空气质量指数分为24h平均的指数、1h平均的指数以及8h平均,所以不同类型的指数计算方法也各不相同。而现实中我们常用的指数为24小时的以及1h的,气象平台平时用来发布的实时AQI数据是根据1hAQI标准计算出来的。24小时的AQI则更能体现当天的整体空气质量情况如何。

       我们先来介绍AQI计算方式的,然后后面我们会介绍具体的1hAQI计算方式以及24hAQI具体计算方式。

                                                                             图1 AQI计算方式以及示例

      然而,通过观察表1 我们可以发现,1hAQI中的污染物只有4种,缺少PM_{2.5},PM_{10}。而实际却是1h AQI中PM_{2.5},PM_{10}的计算标准是依据24h的来的,也就是直接用24h中PM_{2.5},PM_{10}的IAQI计算标准来计算1h中这两项污染物的IAQI。

3、AQI计算代码(Python)

       我们先来展示1h的AQI计算代码,24h的代码其实和1h差不多,仅需要跟换Idata即可。

import pandas as pd
import numpy as np
import json
import copy

if __name__ == '__main__':
   """此为1h的AQI计算代码,24h的只需要更换Idata即可"""
    qua = [0, 50, 100, 150, 200, 300, 400, 500]
    data = pd.read_json("D:\py\比赛数据处理\数据\data4.json")
    print(round(2.50))
    print(type(data))
    data1 = data.values
    print(type(data1))
    IAQI =list(np.zeros(len(data1[0][0]["PM2.5"])))
    print((data1[0][0]).keys())
    Data=np.array([data1[0][0]["PM2.5"],data1[0][0]["PM10"],data1[0][0]["SO2"],data1[0][0]["NO2"],data1[0][0]["CO"],data1[0][0]["O3"]]).reshape(len(data1[0][0]["PM2.5"]),6)
    Idata = [
        [0, 35, 75, 115, 150, 250, 350, 500],  # PM2.5 24小时平均
        [0, 50, 150, 250, 350, 420, 500, 600],  # (PM10)24小时平均
        [0,150,500,650,800],#so2
        [0,100,200,700,1200,2340,3090,3840],#no2
        [0,5,10,35,60,90,120,150],#co
        [0,160,200,300,400,800,1000,1200]#o3
    ]
      # Idata = [
    #     [0, 35, 75, 115, 150, 250, 350, 500] , # PM2.5 
    #     [0, 50, 150, 250, 350, 420, 500, 600],  # (PM10)
    #     [0, 50,150,475,800,1600,2100,2620],  # (SO2) 
    #     [0,40,80,180,280,565,750,940],  # 
    #     [0, 2,4,14,24,36,48,60],  # (CO)
    #     [0, 100,160,215,265,800]  # (O3)
    # ]
    #上为24hAQI计算中需要用到的Idata
    T_IA=0
    i=j=k=0
    print(len(Idata))
    for i in range(len(Idata)):
        T_data=Data[:,i]
        T_Idata=Idata[i]
        for j in range(len(T_data)):
            for k in range(1,len(T_Idata)):
                if T_Idata[k]>T_data[j]:
                    break
            if k==(len(T_Idata)-1) and T_Idata[k]<T_data[j]:
                T_IA=T_Idata[k]
            else:
                T_IA=int(round((((qua[k]-qua[k-1])/(T_Idata[k]-T_Idata[k-1]))*(T_data[j]-T_Idata[k-1])+qua[k-1])+0.5))
            if T_IA>IAQI[j]:
                IAQI[j]=T_IA
    data1[0][0]["AQI"]=(IAQI)
    data2=copy.deepcopy(data1[0][0]['date'])
    data1[0][0].pop("date")
    data1[0][0]["date"]=data2
    filename="D:\py\比赛数据处理\数据\IAdata4.json"
    Dic={}

    Dic["air_data"]=data1[0].tolist()
    with open(filename, 'w') as file_obj:
        json.dump(Dic,file_obj)

  4、后续

       AQI计算出来了,为了更能直观的反应空气质量如何,我们可以将其转换成对应的空气质量等级,如下:

          

链接:https://pan.baidu.com/s/1ENWsrIN7-eqdovUxWEdTng
提取码:gbrs

这是对应的python代码和文件。

链接:https://pan.baidu.com/s/17iedwfrXJo7VVUkGyfXUVQ
提取码:qwvd

上边是要处理的文件格式(已更新)

还有什么问题可以直接评论或私聊,应该是最近数模比赛了吧。

来源:想养只大黄

物联沃分享整理
物联沃-IOTWORD物联网 » 中国空气质量指数(AQI)及其计算方式

发表评论