Air quality index hub
Project description
AQI Hub
AQI 计算,以及分指数计算
文档(使用方法):https://caiyunapp.github.io/aqi-hub/
PyPI 项目页:https://pypi.org/project/aqi-hub/
本地预览文档:make docs-serve(需先 uv sync --group dev)
Contents
计算方法
AQI (CN)
计算方法参照中华人民共和国生态环境部标准 GB 3095-2026 环境空气质量标准 与 HJ 633-2026 环境空气质量指数(AQI)技术规定(试行)。
自 v0.3.0 起采用 2026 版标准;v0.3.0 之前版本采用 2012 版标准。
本库实现与 2026 版一致,主要约定包括:
- PM2.5:良与轻度污染界限为 60 μg/m³(原 75)
- PM10:良与轻度污染界限为 120 μg/m³(原 150)
- SO2 1 小时:浓度超过 800 μg/m³ 时,IAQI 按 200 计(不再视为无效)
- O3 8 小时:浓度超过 800 μg/m³ 时,IAQI 按 300 计(不再视为无效)
- 新标准:去掉了超标污染物的相关内容(仅保留首要污染物)
AQI 等级说明
| AQI 范围 | 指数级别 | 类别 | 颜色 |
|---|---|---|---|
| 0 至 50 | 一级 | 优 | 绿色 |
| 51 至 100 | 二级 | 良 | 黄色 |
| 101 至 150 | 三级 | 轻度污染 | 橙色 |
| 151 至 200 | 四级 | 中度污染 | 红色 |
| 201 至 300 | 五级 | 重度污染 | 紫色 |
| 301+ | 六级 | 严重污染 | 褐红色 |
AQI 颜色标准(中国)
| RGB 颜色 | R | G | B | RGB HEX | CMYK 颜色 | C | M | Y | K | CMYK HEX |
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 228 | 0 | #00E400 | 40 | 0 | 100 | 0 | #99FF00 | ||
| 255 | 255 | 0 | #FFFF00 | 0 | 0 | 100 | 0 | #FFFF00 | ||
| 255 | 126 | 0 | #FF7E00 | 0 | 52 | 100 | 0 | #FF7A00 | ||
| 255 | 0 | 0 | #FF0000 | 0 | 100 | 100 | 0 | #FF0000 | ||
| 153 | 0 | 76 | #99004C | 10 | 100 | 40 | 30 | #A0006B | ||
| 126 | 0 | 35 | #7E0023 | 30 | 100 | 100 | 30 | #7C0000 |
AQI (USA)
计算方法参考 US EPA: Technical Assistance Document for the Reporting of Daily Air Quality – the Air Quality Index (AQI)
AQI Range
| AQI Range | Descriptor | Color |
|---|---|---|
| 0 to 50 | Good | Green |
| 51 to 100 | Moderate | Yellow |
| 101 to 150 | Unhealthy for Sensitive Groups | Orange |
| 151 to 200 | Unhealthy | Red |
| 201 to 300 | Very Unhealthy | Purple |
| 301+ | Hazardous | Maroon |
AQI Color
| RGB Color | R | G | B | RGB HEX | CMYK Color | C | M | Y | K | CMYK HEX |
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 228 | 0 | #00E400 | 40 | 0 | 100 | 0 | #99FF00 | ||
| 255 | 255 | 0 | #FFFF00 | 0 | 0 | 100 | 0 | #FFFF00 | ||
| 255 | 126 | 0 | #FF7E00 | 0 | 52 | 100 | 0 | #FF7A00 | ||
| 255 | 0 | 0 | #FF0000 | 0 | 100 | 100 | 0 | #FF0000 | ||
| 143 | 63 | 151 | #8F3F97 | 5 | 58 | 0 | 41 | #8F3F96 | ||
| 126 | 0 | 35 | #7E0023 | 30 | 100 | 100 | 30 | #7D0000 |
使用方法
安装
pip install aqi-hub
中国 AQI 计算
1 AQI 计算
from aqi_hub.aqi_cn.aqi import cal_aqi_cn
# 1.1 计算小时值 AQI
aqi, iaqi = cal_aqi_cn(
pm25=45, pm10=80, so2=35, no2=85, co=3, o3=140, data_type="hourly"
)
print("测试数据 1:")
print(f"AQI: {aqi}")
print(f"IAQI: {iaqi}")
# 1.2 计算日均值 AQI
aqi, iaqi = cal_aqi_cn(
pm25=120, pm10=180, so2=65, no2=150, co=8, o3=200, data_type="daily"
)
print("\n测试数据 2:")
print(f"AQI: {aqi}")
print(f"IAQI: {iaqi}")
2 IAQI 计算
from aqi_hub.aqi_cn.aqi import cal_iaqi_cn
# 2.1 计算 PM2.5 的 IAQI
pm25_iaqi = cal_iaqi_cn("PM25_24H", 120)
print(f"PM25_24H IAQI: {pm25_iaqi}")
# 2.2 计算 PM10 的 IAQI
pm10_iaqi = cal_iaqi_cn("PM10_24H", 180)
print(f"PM10_24H IAQI: {pm10_iaqi}")
3 空气质量等级
from aqi_hub.aqi_cn.aqi import get_aqi_level
# 3.1 计算 AQI
level = get_aqi_level(120)
print(f"AQI 等级: {level}")
4 空气质量等级颜色
from aqi_hub.aqi_cn.aqi import get_aqi_level_color
# 4.1 计算 AQI 等级颜色
color = get_aqi_level_color(1, "RGB")
print(f"AQI 等级颜色: {color}")
# 4.2 计算 AQI 等级颜色
color = get_aqi_level_color(2, "CMYK")
print(f"AQI 等级颜色: {color}")
# 4.3 计算 AQI 等级颜色
color = get_aqi_level_color(3, "RGB_HEX")
print(f"AQI 等级颜色: {color}")
# 4.4 计算 AQI 等级颜色
color = get_aqi_level_color(4, "CMYK_HEX")
print(f"AQI 等级颜色: {color}")
5 污染物计算
from aqi_hub.aqi_cn.aqi import cal_primary_pollutant
# 5.1 计算首要污染物
iaqi = {
"PM2.5": 120,
"PM10": 180,
"SO2": 65,
"NO2": 150,
"CO": 8,
"O3": 200,
}
primary_pollutant = cal_primary_pollutant(iaqi)
print(f"首要污染物: {primary_pollutant}")
6 AQI 类
from aqi_hub.aqi_cn.aqi import AQI
data_type = "hourly"
# or
data_type = "daily"
aqi_obj = AQI(
pm25=120,
pm10=180,
so2=65,
no2=150,
co=1.0,
o3=200,
data_type=data_type,
)
print(f"AQI: {aqi_obj.AQI}")
print(f"IAQI: {aqi_obj.IAQI}")
print(f"首要污染物: {aqi_obj.primary_pollutant}")
print(f"AQI 等级: {aqi_obj.aqi_level}")
print(f"AQI 等级颜色 (RGB): {aqi_obj.aqi_color_rgb}")
print(f"AQI 等级颜色 (CMYK): {aqi_obj.aqi_color_cmyk}")
print(f"AQI 等级颜色 (RGB_HEX): {aqi_obj.aqi_color_rgb_hex}")
print(f"AQI 等级颜色 (CMYK_HEX): {aqi_obj.aqi_color_cmyk_hex}")
"""
AQI: 155
IAQI: {'PM2.5': 155, 'PM10': 124, 'SO2': 22, 'NO2': 135, 'CO': 25, 'O3': 137}
首要污染物: ['PM2.5']
AQI 等级: 4
AQI 等级颜色 (RGB): (255, 0, 0)
AQI 等级颜色 (CMYK): (0, 100, 100, 0)
AQI 等级颜色 (RGB_HEX): #FF0000
AQI 等级颜色 (CMYK_HEX): #FF0000
"""
美国 AQI 计算
1 AQI 计算
from aqi_hub.aqi_usa.aqi import cal_aqi_usa
aqi, iaqi = cal_aqi_usa(
pm25=120, pm10=180, so2_1h=65, no2=150, co=8, o3_8h=0.200, so2_24h=None, o3_1h=None
)
print("aqi:", aqi)
print("iaqi:", iaqi)
2 IAQI 计算
from aqi_hub.aqi_usa.aqi import cal_iaqi_usa
# 2.1 计算 PM2.5 的 IAQI
pm25_iaqi = cal_iaqi_usa(120, "PM25_24H")
print(f"PM25_24H IAQI: {pm25_iaqi}")
# 2.2 计算 PM10 的 IAQI
pm10_iaqi = cal_iaqi_usa(180, "PM10_24H")
print(f"PM10_24H IAQI: {pm10_iaqi}")
# 2.3 计算 SO2 的 IAQI
so2_1h_iaqi = cal_iaqi_usa(65, "SO2_1H")
print(f"SO2_1H IAQI: {so2_1h_iaqi}")
so2_24h_iaqi = cal_iaqi_usa(307, "SO2_24H")
print(f"SO2_24H IAQI: {so2_24h_iaqi}")
# 2.4 计算 NO2 的 IAQI
no2_iaqi = cal_iaqi_usa(150, "NO2_1H")
print(f"NO2_1H IAQI: {no2_iaqi}")
# 2.5 计算 CO 的 IAQI
co_iaqi = cal_iaqi_usa(8, "CO_8H")
print(f"CO_8H IAQI: {co_iaqi}")
# 2.6 计算 O3 的 IAQI
o3_8h_iaqi = cal_iaqi_usa(0.200, "O3_8H")
print(f"O3_8H IAQI: {o3_8h_iaqi}")
o3_1h_iaqi = cal_iaqi_usa(0.200, "O3_1H")
print(f"O3_1H IAQI: {o3_1h_iaqi}")
3 AQI 等级
from aqi_hub.aqi_usa.aqi import get_aqi_level
aqi_level = get_aqi_level(200)
print(f"AQI: {aqi_level}")
4 空气质量等级颜色
from aqi_hub.aqi_usa.aqi import get_aqi_level_color
color = get_aqi_level_color(1, "RGB")
print(f"Color: {color}")
color = get_aqi_level_color(2, "CMYK")
print(f"Color: {color}")
color = get_aqi_level_color(3, "RGB_HEX")
print(f"Color: {color}")
color = get_aqi_level_color(4, "CMYK_HEX")
print(f"Color: {color}")
5 污染物计算
from aqi_hub.aqi_usa.aqi import cal_primary_pollutant
iaqi = {
"PM2.5": 150,
"PM10": 120,
"SO2": 200,
"NO2": 100,
"CO": 50,
"O3": 300,
}
primary_pollutant = cal_primary_pollutant(iaqi)
print(f"Primary Pollutant: {primary_pollutant}")
6 AQI 类
from aqi_hub.aqi_usa.aqi import AQI
aqi = AQI(
pm25=120,
pm10=180,
so2_1h=65,
no2=150,
co=8,
o3_8h=0.200,
so2_24h=None,
o3_1h=None,
)
print("aqi:", aqi.AQI)
print("iaqi:", aqi.IAQI)
print("aqi_level:", aqi.aqi_level)
print("primary_pollutant", aqi.primary_pollutant)
print("aqi_color_rgb:", aqi.aqi_color_rgb)
print("aqi_color_cmyk:", aqi.aqi_color_cmyk)
print("aqi_color_rgb_hex:", aqi.aqi_color_rgb_hex)
print("aqi_color_cmyk_hex:", aqi.aqi_color_cmyk_hex)
返回值说明
支持的污染物
| 污染物 | 中国标准单位 | 美国标准单位 | 单位换算(25℃,1标准大气压) |
|---|---|---|---|
| PM2.5 | μg/m³ | μg/m³ | 相同 |
| PM10 | μg/m³ | μg/m³ | 相同 |
| O3 | μg/m³ | ppb | 1 ppb = 1.962 μg/m³ |
| CO | mg/m³ | ppm | 1 ppm = 1.145 mg/m³ |
| NO2 | μg/m³ | ppb | 1 ppb = 1.88 μg/m³ |
| SO2 | μg/m³ | ppb | 1 ppb = 2.62 μg/m³ |
参考文献
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aqi_hub-0.3.3.tar.gz.
File metadata
- Download URL: aqi_hub-0.3.3.tar.gz
- Upload date:
- Size: 15.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4991d889bfeca4055be6def200142be64d007216961db7700f62bd27587f7d47
|
|
| MD5 |
0a85a9e1a663e41b4a63fe1ab9a4657c
|
|
| BLAKE2b-256 |
e5fa6e318a4ce9d20dc0a9896a4acc9056827f854d6a0d08c934b4486fd9492f
|
File details
Details for the file aqi_hub-0.3.3-py3-none-any.whl.
File metadata
- Download URL: aqi_hub-0.3.3-py3-none-any.whl
- Upload date:
- Size: 17.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7d8f2a44ed0bd7a40a6724a251597f9eec7d2b515a74f6560848dc834a37a06f
|
|
| MD5 |
18e1208ef3372f2e5429d8b5f553bbb9
|
|
| BLAKE2b-256 |
f262a1a753efcbbba6aee55782586ecaa3c8b13ec08b387b450dfc5e61c21ef9
|