空气质量指数计算方法

计算公式:

空气等级对应的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)相关推荐

  1. RelativeDateFormat时间计算工具类

    import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date;/*** 时间计算工 ...

  2. java jexl 工具类_jexl表达式解析、计算工具类.md

    jexl表达式解析.计算工具类.md 根据表达式可以动态反向解析出变量:适合动态表达式,参数未知场景 如 (A0.2+B0.8)/C 解析出 A\B\C,把ABC参数值代入计算 初始化引擎 priva ...

  3. 常用的数学计算工具类

    package com.xutil.math;import java.math.BigDecimal;/*** @title 数学计算工具类* @author Xingbz* @createDate ...

  4. java计算工作日_Java工作日计算工具类

    工作日计算工具类 主要功能:传入两个日期,返回这两个日期之间有多少个工作日. 思路: 预先设置好一定年份范围内的节假日.补休到map里.(这里暂时只设置了2017 - 2018年的) 将这个年份范围内 ...

  5. Java 时间间隔计算工具类

    Java 时间间隔计算工具类 一.工具类-DateIntervalUtil package com.example.demotest.util;import java.text.DecimalForm ...

  6. 基金里投资风险指标的计算工具类(夏普比率,波动率,Var值,最大回撤率)

    去年在项目里写了一个计算投资风险指标的计算工具类,包含夏普比率,波动率,Var值,最大回撤率四个指标. 计算全部采用BigDecimal类型,开方计算采用牛顿迭代法计算. 其计算公式如下: 工具类实现 ...

  7. linux工具类之硬盘检测

    linux工具类之硬盘检测 软raid mount /dev/md0 /opt                 [root@localhost root]# cp /usr/share/doc/rai ...

  8. 计算车号Java,java停车收费计算工具类

    停车收费计算工具类.收费标准:8时至22时,停车1小时内3元,超过1小时每延长1小时加收3元:11时至12时.16时30分至17时30分,停车30分钟内收1元,超过30分收3元:晚22时至次日8时,收 ...

  9. java 数学计算库_数学计算工具类

    [java]代码库/** * Description: [数字计算工具类] * @version 1.0 */ public class MathUtils { /** 一百的常量 */ privat ...

  10. Spark计算工具类

    Vector vectors.txt 1 2.3 4.5 3 3.1 5.6 4 3.2 7.8 处理vectors.txt文件RDD[String]->RDD[Vector] package ...

最新文章

  1. 直播系统开发:功能创新提升用户留存
  2. JAVA SE学习day_05: IO与流操作
  3. SpringBoot Thymeleaf使用教程(实用版)
  4. java jlist 图标_java – 将图像添加到JList项目
  5. #4604. The kth maximum number(整体二分 + 树套树)
  6. LaTeX 目录中显示“参考文献”条目
  7. 夺命雷公狗---PDO NO:3与连接有关的选项
  8. 前端系统化学习【JS篇】:(四)Javascript中的数据类型
  9. r语言清除变量_R语言:结构方程模型、潜变量分析
  10. 简书计算机组成原理知识点梳理,指令:计算机的语言(MIPS) --计算机组成原理(2)...
  11. 华为网络设备-构建简单IPv6网络实验
  12. SRE(运维工程师)一文详解技术体系和架构师成长之路
  13. Mac配置iTem2主题、字体、颜色
  14. 一次真实的应急响应案例(Centos)——暴力破解、替换ps命令、留多个后门——事件复现(含靶场环境)
  15. Vue前端项目-登录组件-登录功能(上)
  16. Lidar_imu自动标定源码阅读(二)——calibration部分
  17. 提供了一些工具类以及自定义 View,用于日常的 Android 快速开发
  18. 利用 ARCHPR 暴力破解 压缩包解压密码
  19. Elasticsearch 快照生命周期管理 (SLM) 实战指南
  20. Dubbo 和 Spring Cloud 微服务架构区别(比较笼统 看看就行)

热门文章

  1. python 一元二次方程计算器
  2. 【JAVASE】IO流基础
  3. 三个学生开发的学术钓鱼软件,成功忽悠了整个学术圈
  4. 两个分数相加(结果最简)
  5. python实战项目词云生成器(wordcloud+jieba+pyinstaller打包)——词云生成软件【Pyinstaller打包问题解决】
  6. 挨踢人生路 记我的10年18家工作经历
  7. mysql 汉字笔画排序规则_SQL Server 与 MySQL 中排序规则与字符集相关知识的一点总结...
  8. CSS3简单练习 魔方制作
  9. 双11购书大优惠!独家优惠券,折后再减,赶紧来抢啊!
  10. 2015陈奕迅another eason‘s life演唱会歌单