IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 【计算】空气质量综合指数 -> 正文阅读

[开发工具]【计算】空气质量综合指数

package com.web.util;


import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;

/**
 * 综合指数计算
 *
 *
 * @author Winy
 * @version 1.0
 * 附件1:综合指数计算公式=PM2.5/35+PM10/70+SO2/60+NO2/40+CO/4+O3/160
 * 序号		污染物指数	日排名取值			月排名取值                       年
 * 1		PM2.5		日平均值				月平均值                         年均值 第95百    分位数
 * 2		PM10		日平均值				月平均值                         年均值 第95百分位数
 * 3		SO2			日平均值				月平均值                         年均值 第98百分位数
 * 4		NO2			日平均值				月平均值                         年均值 第98百分位数
 * 5		CO			日平均值				月第95百分比                     年均值 第95百分位数
 * 6		O3			日最大8小时平均值		月 日最大8小时平均值的 第90百分比    日最大 O3_8年均值 第90百分位数
 * @date 2022年4月7日
 */
public class CompositeIndexUtil {

    /**
     * 计算综合指数各参数得取值类型
     */
    public static enum Type {DAY, MONTH, YEAR};

    /**
     * @param type 0=小时,1=日,2=月
     */
    public static Float getComIndex(Object o, Type type) {
        Float coi = null;
        try {
            Map<String, Object> map = objectToMap(o);
            float pm10 = 0, pm25 = 0, so2 = 0, no2 = 0, co = 0, o3 = 0;
            if (map.get("pm10") != null && (Float) map.get("pm10") > 0) {
                pm10 = (float) map.get("pm10");
            }
            if (map.get("pm25") != null && (Float) map.get("pm25") > 0) {
                pm25 = (float) map.get("pm25");
            }
            if (map.get("so2") != null && (Float) map.get("so2") > 0) {
                so2 = (float) map.get("so2");
            }
            if (map.get("no2") != null && (Float) map.get("no2") > 0) {
                no2 = (float) map.get("no2");
            }
            if (map.get("co") != null && (Float) map.get("co") > 0) {
                co = (float) map.get("co");
            }
            switch (type) {
                case DAY:
                    if (map.get("o3") != null && (Float) map.get("o3") > 0) {
                        o3 = (float) map.get("o3");
                    }
                    break;
                case MONTH:
                    co = co * 0.95f;
                    if (map.get("o3_8") != null && (Float) map.get("o3_8") > 0) {
                        o3 = (float) map.get("o3_8") * 0.9f;
                    }
                    break;
                case YEAR:
                    //用于年报中 年均值
                    pm10 = pm10 * 0.95f;
                    pm25 = pm25 * 0.95f;
                    so2 = so2 * 0.98f;
                    no2 = no2 * 0.98f;
                    co = co * 0.95f;
                    if (map.get("o3_8") != null && (Float) map.get("o3_8") > 0) {
                        o3 = (float) map.get("o3_8") * 0.9f;
                    }
                    break;
                default:
                    return null;

            }
            coi = pm25 / 35 + pm10 / 70 + so2 / 60 + no2 / 40 + co / 4 + o3 / 160;
            return FloatUtil.subPoint_1(coi);
        } catch (IllegalArgumentException | IllegalAccessException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * object转map
     *
     * @throws IllegalAccessException
     * @throws IllegalArgumentException
     */
    public static Map<String, Object> objectToMap(Object obj) throws IllegalArgumentException, IllegalAccessException {
        if (obj == null) {
            return null;
        }
        Map<String, Object> map = new HashMap<String, Object>();
        Field[] declaredFields = obj.getClass().getDeclaredFields();
        for (Field field : declaredFields) {
            field.setAccessible(true);
            map.put(field.getName(), field.get(obj));
        }
        return map;
    }
}

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-04-09 18:40:00  更:2022-04-09 18:40:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/14 15:12:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码