zoukankan      html  css  js  c++  java
  • 新AQI算法 之前算法错误

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace AQINEW
    {
        public class NewAQI
        {
            #region 浓度标准及aqi标准
            //中国浓度标准SO2
            int[] BPSO2 = new int[] { 0, 150, 500, 650, 800, 1600, 2100, 2620 };
            //中国浓度标准NO2
            int[] BPNO2 = new int[] { 0, 100, 200, 700, 1200, 2340, 3090, 3840 };
            //中国浓度标准PM25
            int[] BPPM25 = new int[] { 0, 35, 75, 115, 150, 250, 350, 500 };
    //中国浓度标准CO
            int[] BPCO = new int[] { 0, 5, 10, 35, 60, 90, 120, 150 };
            //中国浓度标准O3
            int[] BPO3 = new int[] { 0, 160, 200, 300, 400, 800, 1000, 1200 };
            //中国浓度标准PM10
            int[] BPPM10 = new int[] { 0, 50, 150, 250, 350, 420, 500, 600 };
    //中国AQI标准
            int[] IAQI = new int[] { 0, 50, 100, 150, 200, 300, 400, 500 };
            #endregion
    
    
            int IAQIH, IAQIL, BPH, BPL;
            public int GetIAQI(double CP, string ElementName)
            {
                int currentCP = Convert.ToInt32(CP);
                getRangle(CP, ElementName);
                double chu = Convert.ToDouble(IAQIH - IAQIL) / Convert.ToDouble(BPH - BPL);
                int CurrentAqi = Convert.ToInt32(chu * (currentCP - BPL) + IAQIL);
                return Convert.ToInt32(CurrentAqi);
            }
    
            int[] NongDu;
            /// <summary>
            /// 测量范围判定
            /// </summary>
            /// <param name="Element"></param>
            private void getRangle(double CP, string Element)
            {
                //浓度范围
    
                switch (Element)
                {
                    case "SO2":
                        NongDu = BPSO2;
                        break;
                    case "NO2":
                        NongDu = BPNO2;
                        break;
                    case "PM25":
                        NongDu = BPPM25;
                        break;
                    case "CO":
                        NongDu = BPCO;
                        break;
                    case "O3":
                        NongDu = BPO3;
                        break;
                    case "PM10":
                        NongDu = BPPM10;
                        break;
                }
    
                //AQI范围 
                for (int i = 0; i < NongDu.Length - 1; i++)
                {
                    if (CP >= NongDu[i] && CP <= NongDu[i + 1])
                    {
                        IAQIH = IAQI[i + 1];
                        IAQIL = IAQI[i];
                        BPH = NongDu[i + 1];
                        BPL = NongDu[i];
                        break;
                    }
                }
            }
    
    
    
            Dictionary<string, string> mydic = new Dictionary<string, string>();
            /// <summary>
            /// 获取首要污染物 以及首要污染物的值
            /// </summary>
            /// <returns></returns>
            public string GetMaxWuranwu(Dictionary<string, string> dic)
            {
                Dictionary<string, int> mydicNew = new Dictionary<string, int>();
                //循环
                foreach (KeyValuePair<string, string> item in dic)
                {
                    int Current = GetIAQI(Convert.ToDouble(item.Value), item.Key);
                    mydicNew.Add(item.Key, Current);
                }
                int Num = 0;
                string Shouyao = "";
                foreach (KeyValuePair<string, int> item in mydicNew)
                {
                    int AqiNUM = Convert.ToInt32(item.Value);
                    if (AqiNUM > Num)
                    {
                        Num = AqiNUM;
                        Shouyao = item.Key;
                    }
                }
    
                return Shouyao + "," + Num;
            }
    
    
    
    
    
    
    
        }
    }
    0, 35, 75, 115, 150, 250, 350, 500
  • 相关阅读:
    JVM基础
    JVM基础
    python相关
    charles 的配置与使用
    大型缓存架构实战
    redis环境搭建
    多线程与并发 | 线程池
    JVM | 内存溢出和解决方案
    读书笔记 | Mysql是怎样运行的
    读书笔记 | Java并发编程实战
  • 原文地址:https://www.cnblogs.com/lierjie/p/5068933.html
Copyright © 2011-2022 走看看