空气污染指数API怎么算?搞懂这个数字,比看天气App有用多了
- 汽车
- 2026-07-31 19:23:12
- 92
每天早上打开手机,除了看气温,你是不是也会顺手瞄一眼那个空气质量数字?有时候显示35,有时候飙到180,但你真的知道这数字是怎么来的吗?我前几天跟朋友聊起这个,发现好多人以为API就是“PM2.5浓度值”,其实完全不是一回事。
先别急着算,搞清楚API到底是个啥
API全称是Air Pollution Index,中文叫空气污染指数,它不是直接测出来的某个污染物浓度,而是把好几种污染物的实测浓度,通过一套公式转换成一个0到500之间的无量纲数字,这样做的好处是——不管你在北京看PM2.5,还是在广州看二氧化硫,都能用同一个标尺比较空气好坏。
那这个指数包含哪些污染物?我国现行标准盯住六种:PM10(可吸入颗粒物)、PM2.5(细颗粒物)、二氧化硫(SO₂)、二氧化氮(NO₂)、一氧化碳(CO)和臭氧(O₃),注意了,这六种污染物各自的浓度单位还不一样,有的用微克/立方米,有的用毫克/立方米,计算前得先统一单位。
核心步骤:先给每种污染物“打分数”
计算API的关键在于分段线性插值法——听起来唬人,其实原理就跟查表差不多,环保部门早就把每种污染物浓度划分成好几个区间,每个区间对应一个IAQI(单项空气质量指数)范围,你要做的是:
- 找到实测浓度落在哪个浓度区间
- 用这个区间两端的浓度值和对应的IAQI值做线性比例换算
PM2.5的24小时平均浓度实测值是75微克/立方米,查标准表发现,浓度在35~75这个区间时,对应的IAQI是50~100,那么计算就是:

[ IAQI = \frac{100-50}{75-35} \times (75-35) + 50 = 100 ]
看,正好卡在100这个敏感线上——超过100就意味着轻度污染了。
别忘了“分指数”和“首要污染物”
刚才算出来的只是PM2.5的单项指数,你还需要对另外五种污染物重复同样的计算,然后取所有IAQI中的最大值作为最终的API值,这个最大值的“幕后黑手”就是当天的首要污染物。
举个例子:某天PM2.5的IAQI是120,而PM10的IAQI只有80,那么当天的API就是120,首要污染物就是PM2.5,这也是为什么有时候你看着窗外灰蒙蒙的,但App显示“良”——因为可能臭氧或PM10才是当天的大头,而PM2.5反而没那么高。

一个容易忽略的坑:不同污染物的浓度单位不同,计算前必须先换算,比如CO用的是毫克/立方米,而PM2.5用的是微克/立方米,差着1000倍呢。
搞定单位换算和小时值
现行标准里,PM2.5和PM10用的是24小时滑动平均浓度,而臭氧一般用日最大8小时滑动平均,SO₂和NO₂则既看小时值也看日均值,所以你得清楚手头数据是哪种时间尺度——用错了会差出好几个级别。
单位换算也简单:1毫克 = 1000微克,如果CO实测浓度是2.5毫克/立方米,换算成微克就是2500微克/立方米,然后查表计算。
实战演练:手把手算一遍
假设某天测得以下数据(都是24小时均值):

- PM2.5:65微克/立方米
- PM10:80微克/立方米
- SO₂:55微克/立方米
- NO₂:40微克/立方米
- CO:1.8毫克/立方米(即1800微克/立方米)
- O₃:120微克/立方米(8小时均值)
把每个都算成IAQI(这里直接给结果):
- PM2.5:浓度65落在35~75区间,对应IAQI 50~100,算出来约92
- PM10:浓度80落在50~150区间,对应IAQI 50~100,算出来约80
- SO₂:浓度55落在50~150区间,对应IAQI 50~100,约70
- NO₂:40落在40~80区间,对应IAQI 50~100,刚好50
- CO:1800落在1000~2000区间,对应IAQI 50~100,约85
- O₃:120落在100~160区间,对应IAQI 50~100,约58
取最大值92 → 当天API是92,级别“良”,首要污染物是PM2.5。
| 污染物 | 实测浓度 | IAQI数值 |
|---|---|---|
| PM2.5 | 65 μg/m³ | 92 |
| PM10 | 80 μg/m³ | 80 |
| SO₂ | 55 μg/m³ | 70 |
| NO₂ | 40 μg/m³ | 50 |
| CO | 8 mg/m³ | 85 |
| O₃ | 120 μg/m³ | 58 |
看,最“拖后腿”的是PM2.5,所以它就是首要污染物,实际生活里,秋冬季PM2.5当老大的频率最高,夏天则常常是臭氧唱主角。
一个小实验加深理解
你手头有数据的话,可以自己拉个Excel表格试试,把六种污染物的浓度列出来,查国家标准(HJ 633-2012)里面的分级限值表,用几个IF函数就能实现自动计算,我上次闲着没事用Python写了个小脚本,每次看到App上显示API,自己拿计算器验算一下,误差基本在2以内,挺有意思的。
不过说真的,日常使用根本不需要自己动手算——但理解了原理,你至少能看懂为什么有时候PM2.5爆表了,App却显示“中度污染”而不是“严重污染”,因为可能还有别的污染物指数更高呢,这就像看体检报告,单个指标正常不代表全部正常,最差的那项往往决定你今天的整体状态。