失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > IAQI的计算工具类 根据空气检测浓度值计算IAQI值和空气质量等级(pm2.5 pm10 so2 no2 co o3)

IAQI的计算工具类 根据空气检测浓度值计算IAQI值和空气质量等级(pm2.5 pm10 so2 no2 co o3)

时间:2022-02-04 19:49:49

相关推荐

IAQI的计算工具类 根据空气检测浓度值计算IAQI值和空气质量等级(pm2.5 pm10 so2 no2 co o3)

空气质量指数计算方法

计算公式:

空气等级对应的IAQI值:

工具类:(注意:算IAQI的方法分计算日数据的和小时数据的)

/*** 计算空气质量等级* @author xu**/public class KqzlUtil {/*** 计算IAQI的值* * @param value* 监测浓度值* @param lowI* 与lowL相对应的IAQI值* @param highI* 与highL相对应的IAQI值* @param lowC* 与监测浓度相近的污染物浓度低位值* @param highC* 与监测浓度相近的污染物浓度高位值* @return (I高-I低)/(C高-C低)*(C-C低)+I低*///浓度值,IAQI低,IAQI高,低值,高值private static int IAQICal(double value, int lowI, int highI, int lowC, int highC) {if(value<0||highI<0||lowI<0||highC<0||lowC<0){return -99;}if (highC == lowC) {return lowI;}double iaqi = (value - lowC) * (highI - lowI) / (highC - lowC) + lowI;//转intint ret=new Double(Math.ceil(iaqi)).intValue();return ret;}/*** 计算pm2.5的IAQI* @param value pm2.5浓度值* @return*/public static int PM25IAQI(double pm25_value) {int iaqi_pm25 =0;// 计算pm2.5的iaqi值if (0 <= pm25_value && pm25_value< 35) {//浓度值,IAQI低,IAQI高,低值,高值iaqi_pm25 = IAQICal(pm25_value,0,50,0,35); //调用函数(计算公式),同时也相当于赋值}else if (35 <= pm25_value && pm25_value< 75) {iaqi_pm25 = IAQICal(pm25_value,50,100,35,75); //调用函数(计算公式),同时也相当于赋值}else if (75 <= pm25_value && pm25_value < 115){iaqi_pm25 = IAQICal(pm25_value,100,150,75,115); //调用函数(计算公式),同时也相当于赋值}else if (115 <= pm25_value && pm25_value < 150){iaqi_pm25 = IAQICal(pm25_value,150,200,115,150); //调用函数(计算公式),同时也相当于赋值} else if (150 <= pm25_value && pm25_value < 250){iaqi_pm25 = IAQICal(pm25_value,200,300,150,250);} else if (250 <= pm25_value && pm25_value < 350) {iaqi_pm25 = IAQICal(pm25_value,300,400,250,350);}else if (350 <= pm25_value && pm25_value< 500) {iaqi_pm25 = IAQICal(pm25_value,400,500,350,500);}else {iaqi_pm25=-99;}return iaqi_pm25;}/*** 计算pm10的IAQI* @param value pm10浓度值* @return*/public static int PM10IAQI(double pm10_value) {int iaqi_pm10 =0;// 计算pm10的iaqi值if (0 <= pm10_value && pm10_value< 50) {//浓度值,IAQI低,IAQI高,低值,高值iaqi_pm10 = IAQICal(pm10_value,0,50,0,50); //调用函数(计算公式),同时也相当于赋值}else if (50 <= pm10_value && pm10_value< 150) {iaqi_pm10 = IAQICal(pm10_value,50,100,50,150); //调用函数(计算公式),同时也相当于赋值}else if (150 <= pm10_value && pm10_value < 250){iaqi_pm10 = IAQICal(pm10_value,100,150,150,250); //调用函数(计算公式),同时也相当于赋值}else if (250 <= pm10_value && pm10_value < 350){iaqi_pm10 = IAQICal(pm10_value,150,200,250,350); //调用函数(计算公式),同时也相当于赋值} else if (350 <= pm10_value && pm10_value < 420){iaqi_pm10 = IAQICal(pm10_value,200,300,350,420);} else if (420 <= pm10_value && pm10_value < 500) {iaqi_pm10 = IAQICal(pm10_value,300,400,420,500);}else if (500 <= pm10_value && pm10_value< 600) {iaqi_pm10 = IAQICal(pm10_value,400,500,500,600);}else {iaqi_pm10=-99;}return iaqi_pm10;}/*** 计算co的IAQI * @param value co浓度值(日数据)* @return*/public static int COIAQI(double co_value) {int iaqi_co =0;// 计算co的iaqi值if (0 <= co_value && co_value< 2) {//浓度值,IAQI低,IAQI高,低值,高值iaqi_co = IAQICal(co_value,0,50,0,2); //调用函数(计算公式),同时也相当于赋值}else if (2 <= co_value && co_value< 4) {iaqi_co = IAQICal(co_value,50,100,2,4); //调用函数(计算公式),同时也相当于赋值}else if (4 <= co_value && co_value < 14){iaqi_co = IAQICal(co_value,100,150,4,14); //调用函数(计算公式),同时也相当于赋值}else if (14 <= co_value && co_value < 24){iaqi_co = IAQICal(co_value,150,200,14,24); //调用函数(计算公式),同时也相当于赋值} else if (24 <= co_value && co_value < 36){iaqi_co = IAQICal(co_value,200,300,24,36);} else if (36 <= co_value && co_value < 48) {iaqi_co = IAQICal(co_value,300,400,36,48);}else if (48 <= co_value && co_value< 60) {iaqi_co = IAQICal(co_value,400,500,48,60);}else {iaqi_co=-99;}return iaqi_co;}/*** 计算so2的IAQI * @param value so2浓度值(日数据)* @return*/public static int SO2IAQI(double so2_value) {int iaqi_so2 =0;// 计算so2的iaqi值if (0 <= so2_value && so2_value< 50) {//浓度值,IAQI低,IAQI高,低值,高值iaqi_so2 = IAQICal(so2_value,0,50,0,50); //调用函数(计算公式),同时也相当于赋值}else if (50 <= so2_value && so2_value< 150) {iaqi_so2 = IAQICal(so2_value,50,100,50,150); //调用函数(计算公式),同时也相当于赋值}else if (150 <= so2_value && so2_value < 475){iaqi_so2 = IAQICal(so2_value,100,150,150,475); //调用函数(计算公式),同时也相当于赋值}else if (475 <= so2_value && so2_value < 800){iaqi_so2 = IAQICal(so2_value,150,200,475,800); //调用函数(计算公式),同时也相当于赋值} else if (800 <= so2_value && so2_value < 1600){iaqi_so2 = IAQICal(so2_value,200,300,800,1600);} else if (1600 <= so2_value && so2_value < 2100) {iaqi_so2 = IAQICal(so2_value,300,400,1600,2100);}else if (2100 <= so2_value && so2_value< 2620) {iaqi_so2 = IAQICal(so2_value,400,500,1600,2620);}else {iaqi_so2=-99;}return iaqi_so2;}/*** 计算o3的IAQI * @param value o3浓度值(日数据)* @return*/public static int O3IAQI(double o3_value) {int iaqi_03 =0;// 计算03的iaqi值if (0 <= o3_value && o3_value< 100) {//浓度值,IAQI低,IAQI高,低值,高值iaqi_03 = IAQICal(o3_value,0,50,0,100); //调用函数(计算公式),同时也相当于赋值}else if (100 <= o3_value && o3_value< 160) {iaqi_03 = IAQICal(o3_value,50,100,100,160); //调用函数(计算公式),同时也相当于赋值}else if (160 <= o3_value && o3_value < 215){iaqi_03 = IAQICal(o3_value,100,150,160,215); //调用函数(计算公式),同时也相当于赋值}else if (215 <= o3_value && o3_value < 265){iaqi_03 = IAQICal(o3_value,150,200,215,265); //调用函数(计算公式),同时也相当于赋值} else if (265 <= o3_value && o3_value < 800){iaqi_03 = IAQICal(o3_value,200,300,265,800);} else {iaqi_03=-99;}return iaqi_03;}/*** 计算no2的IAQI * @param value no2浓度值(日数据)* @return*/public static int no2IAQI(double no2_value) {int iaqi_no2 =0;// 计算no2的iaqi值if (0 <= no2_value && no2_value< 40) {//浓度值,IAQI低,IAQI高,低值,高值iaqi_no2 = IAQICal(no2_value,0,50,0,40); //调用函数(计算公式),同时也相当于赋值}else if (40 <= no2_value && no2_value< 80) {iaqi_no2 = IAQICal(no2_value,50,100,40,80); //调用函数(计算公式),同时也相当于赋值}else if (80 <= no2_value && no2_value < 180){iaqi_no2 = IAQICal(no2_value,100,150,80,180); //调用函数(计算公式),同时也相当于赋值}else if (180 <= no2_value && no2_value < 280){iaqi_no2 = IAQICal(no2_value,150,200,180,280); //调用函数(计算公式),同时也相当于赋值} else if (280 <= no2_value && no2_value < 565){iaqi_no2 = IAQICal(no2_value,200,300,280,565);}else if (565 <= no2_value && no2_value < 754){iaqi_no2 = IAQICal(no2_value,300,400,565,754); //调用函数(计算公式),同时也相当于赋值} else if (754 <= no2_value && no2_value < 940){iaqi_no2 = IAQICal(no2_value,400,500,754,940);} else {iaqi_no2=-99;}return iaqi_no2;}//------------------------空气质量小时数据计算/*** 计算co的IAQI * @param value co浓度值(小时数据)* @return*/public static int COIAQI1(double co_value) {int iaqi_co =0;// 计算co的iaqi值if (0 <= co_value && co_value< 5) {//浓度值,IAQI低,IAQI高,低值,高值iaqi_co = IAQICal(co_value,0,50,0,5); //调用函数(计算公式),同时也相当于赋值}else if (5 <= co_value && co_value< 10) {iaqi_co = IAQICal(co_value,50,100,5,10); //调用函数(计算公式),同时也相当于赋值}else if (10 <= co_value && co_value < 35){iaqi_co = IAQICal(co_value,100,150,10,35); //调用函数(计算公式),同时也相当于赋值}else if (35 <= co_value && co_value < 60){iaqi_co = IAQICal(co_value,150,200,35,60); //调用函数(计算公式),同时也相当于赋值} else if (60 <= co_value && co_value < 90){iaqi_co = IAQICal(co_value,200,300,60,90);} else if (90 <= co_value && co_value < 120) {iaqi_co = IAQICal(co_value,300,400,90,120);}else if (120 <= co_value && co_value< 150) {iaqi_co = IAQICal(co_value,400,500,120,150);}else {iaqi_co=-99;}return iaqi_co;}/*** 计算so2的IAQI * @param value so2浓度值(小时数据)* @return*/public static int SO2IAQI1(double so2_value) {int iaqi_so2 =0;// 计算so2的iaqi值if (0 <= so2_value && so2_value< 150) {//浓度值,IAQI低,IAQI高,低值,高值iaqi_so2 = IAQICal(so2_value,0,50,0,150); //调用函数(计算公式),同时也相当于赋值}else if (150 <= so2_value && so2_value< 500) {iaqi_so2 = IAQICal(so2_value,50,100,150,500); //调用函数(计算公式),同时也相当于赋值}else if (500 <= so2_value && so2_value < 650){iaqi_so2 = IAQICal(so2_value,100,150,500,650); //调用函数(计算公式),同时也相当于赋值}else if (650 <= so2_value && so2_value < 800){iaqi_so2 = IAQICal(so2_value,150,200,650,800); //调用函数(计算公式),同时也相当于赋值} else {iaqi_so2=-99;}return iaqi_so2;}/*** 计算o3的IAQI * @param value o3浓度值(小时数据)* @return*/public static int O3IAQI1(double o3_value) {int iaqi_03 =0;// 计算03的iaqi值if (0 <= o3_value && o3_value< 160) {//浓度值,IAQI低,IAQI高,低值,高值iaqi_03 = IAQICal(o3_value,0,50,0,160); //调用函数(计算公式),同时也相当于赋值}else if (160 <= o3_value && o3_value< 200) {iaqi_03 = IAQICal(o3_value,50,100,160,200); //调用函数(计算公式),同时也相当于赋值}else if (200 <= o3_value && o3_value < 300){iaqi_03 = IAQICal(o3_value,100,150,200,300); //调用函数(计算公式),同时也相当于赋值}else if (300 <= o3_value && o3_value < 400){iaqi_03 = IAQICal(o3_value,150,200,300,400); //调用函数(计算公式),同时也相当于赋值} else if (400 <= o3_value && o3_value < 800){iaqi_03 = IAQICal(o3_value,200,300,400,800);}else if (800 <= o3_value && o3_value < 1000){iaqi_03 = IAQICal(o3_value,300,400,800,1000); //调用函数(计算公式),同时也相当于赋值} else if (1000 <= o3_value && o3_value < 1200){iaqi_03 = IAQICal(o3_value,400,500,1000,1200);} else {iaqi_03=-99;}return iaqi_03;}/*** 计算no2的IAQI * @param value no2浓度值(小时数据)* @return*/public static int no2IAQI1(double no2_value) {int iaqi_no2 =0;// 计算no2的iaqi值if (0 <= no2_value && no2_value< 100) {//浓度值,IAQI低,IAQI高,低值,高值iaqi_no2 = IAQICal(no2_value,0,50,0,100); //调用函数(计算公式),同时也相当于赋值}else if (100 <= no2_value && no2_value< 200) {iaqi_no2 = IAQICal(no2_value,50,100,100,200); //调用函数(计算公式),同时也相当于赋值}else if (200 <= no2_value && no2_value < 700){iaqi_no2 = IAQICal(no2_value,100,150,200,700); //调用函数(计算公式),同时也相当于赋值}else if (700 <= no2_value && no2_value < 1200){iaqi_no2 = IAQICal(no2_value,150,200,700,1200); //调用函数(计算公式),同时也相当于赋值} else if (1200 <= no2_value && no2_value < 2340){iaqi_no2 = IAQICal(no2_value,200,300,1200,2340);}else if (2340 <= no2_value && no2_value < 3090){iaqi_no2 = IAQICal(no2_value,300,400,2340,3090); //调用函数(计算公式),同时也相当于赋值} else if (3090 <= no2_value && no2_value < 3840){iaqi_no2 = IAQICal(no2_value,400,500,3090,3840);} else {iaqi_no2=-99;}return iaqi_no2;}/*** 根据IAQI计算空气质量等级* 一级,优* 二级,良* 三级,轻度污染* 四级,中度污染* 五级,重度污染* 六级,严重污染* @param value IAQI值* @return 1-6对应空气质量一级到六级*/public static int kqzldj(int value) {int dj=0;if(0<=value && value<=50) {dj=1;}else if(51<=value && value<=100) {dj=2;}else if(101<=value && value<=150) {dj=3;}else if(151<=value && value<=200) {dj=4;}else if(201<=value && value<=300) {dj=5;}else if(value>300) {dj=6;}else{// 有的数据可能数-99//-99代表数字超出计算范围了,应该作废的,我这里不做其他处理直接6级dj=6;}return dj;}

如果觉得《IAQI的计算工具类 根据空气检测浓度值计算IAQI值和空气质量等级(pm2.5 pm10 so2 no2 co o3)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。