From 4650388e8954ab6291fa0effb439b6ed3eb6eaa7 Mon Sep 17 00:00:00 2001 From: 于紫祥_1901 <email@yuzixiang_1910> Date: Tue, 01 Dec 2020 16:10:24 +0800 Subject: [PATCH] aqi计算公式更新 --- src/main/java/com/moral/util/AQICalculation2.java | 262 ++++++++++++++++++++++++++-------------------------- 1 files changed, 131 insertions(+), 131 deletions(-) diff --git a/src/main/java/com/moral/util/AQICalculation2.java b/src/main/java/com/moral/util/AQICalculation2.java index 9797972..d26fb75 100644 --- a/src/main/java/com/moral/util/AQICalculation2.java +++ b/src/main/java/com/moral/util/AQICalculation2.java @@ -3,7 +3,7 @@ import java.util.*; public class AQICalculation2 { - + public static Map<String, Object> hourlyAQI(Map<String, Object> map){ List<Double> AQIList = new ArrayList<>(); Map maxMap = new HashMap(); @@ -26,36 +26,36 @@ Double COAQI; Double O3AQI; - switch (key) { - case "PM2_5":PM2_5AQI = PM2_5AQI(value); - AQIList.add(PM2_5AQI); - break; - case "PM10":PM10AQI = PM10AQI(value); - AQIList.add(PM10AQI); - break; - case "SO2":SO2AQI = SO2AQI(value); - AQIList.add(SO2AQI); - break; - case "NO2":NO2AQI = NO2AQI(value); - AQIList.add(NO2AQI); - break; - case "CO":COAQI = COAQI(value); - AQIList.add(COAQI); - break; - case "maxO3_8h":O3AQI = O3AQI(value); - AQIList.add(O3AQI); - break; - default: - break; - } + switch (key) { + case "PM2_5":PM2_5AQI = PM2_5AQI(value); + AQIList.add(PM2_5AQI); + break; + case "PM10":PM10AQI = PM10AQI(value); + AQIList.add(PM10AQI); + break; + case "SO2":SO2AQI = SO2AQI(value); + AQIList.add(SO2AQI); + break; + case "NO2":NO2AQI = NO2AQI(value); + AQIList.add(NO2AQI); + break; + case "CO":COAQI = COAQI(value); + AQIList.add(COAQI); + break; + case "maxO3_8h":O3AQI = O3AQI(value); + AQIList.add(O3AQI); + break; + default: + break; } + } Map<String, Object> returnMap = new HashMap<>(); - Double AQIMAX = Collections.max(AQIList); - Optional<Map.Entry<String, Integer>> max0 = maxMap.entrySet() - .stream() - .max(Map.Entry.comparingByValue()); - returnMap.put("maxSensor", max0.get().getKey()); - returnMap.put("AQI", AQIMAX); + Double AQIMAX = Collections.max(AQIList); + Optional<Map.Entry<String, Integer>> max0 = maxMap.entrySet() + .stream() + .max(Map.Entry.comparingByValue()); + returnMap.put("maxSensor", max0.get().getKey()); + returnMap.put("AQI", AQIMAX); return returnMap; } public static Map<String, Object> dayAQI(Map<String, Object> map){ @@ -66,40 +66,40 @@ if (entry.getValue().toString().equals("")){ continue; } - Double value = Double.parseDouble(entry.getValue().toString()); - if (key!="O3_day"){ - maxMap.put(key,value); - }else { - continue; - } - Double PM2_5AQI; - Double PM10AQI; - Double SO2AQI; - Double NO2AQI; - Double COAQI; - Double maxO38hAQI; - switch (key) { - case "PM2_5":PM2_5AQI = PM2_5AQI(value); - AQIList.add(PM2_5AQI); - break; - case "PM10":PM10AQI = PM10AQI(value); - AQIList.add(PM10AQI); - break; - case "SO2":SO2AQI = SO2DayAQI(value); - AQIList.add(SO2AQI); - break; - case "NO2":NO2AQI = NO2DayAQI(value); - AQIList.add(NO2AQI); - break; - case "CO":COAQI = CODayAQI(value); - AQIList.add(COAQI); - break; - case "maxO3_8h":maxO38hAQI = O3DayAQI(value); - AQIList.add(maxO38hAQI); - break; - default: - break; - } + Double value = Double.parseDouble(entry.getValue().toString()); + if (key!="O3_day"){ + maxMap.put(key,value); + }else { + continue; + } + Double PM2_5AQI; + Double PM10AQI; + Double SO2AQI; + Double NO2AQI; + Double COAQI; + Double maxO38hAQI; + switch (key) { + case "PM2_5":PM2_5AQI = PM2_5AQI(value); + AQIList.add(PM2_5AQI); + break; + case "PM10":PM10AQI = PM10AQI(value); + AQIList.add(PM10AQI); + break; + case "SO2":SO2AQI = SO2DayAQI(value); + AQIList.add(SO2AQI); + break; + case "NO2":NO2AQI = NO2DayAQI(value); + AQIList.add(NO2AQI); + break; + case "CO":COAQI = CODayAQI(value); + AQIList.add(COAQI); + break; + case "maxO3_8h":maxO38hAQI = O3DayAQI(value); + AQIList.add(maxO38hAQI); + break; + default: + break; + } } Map<String, Object> returnMap = new HashMap<>(); if (AQIList.size()>0){ @@ -120,41 +120,41 @@ if(value<=0) { result=(double) 0; }else if (value<=35) { - result = 50/35*(value-0)+0; + result = 50.0/35*(value-0)+0; }else if (value<=75) { - result = 50/40*(value-35)+50; + result = 50.0/40*(value-35)+50; }else if (value<=115) { - result = 50/40*(value-75)+100; + result = 50.0/40*(value-75)+100; }else if (value<=150) { - result = 50/35*(value-115)+150; + result = 50.0/35*(value-115)+150; }else if (value<=250) { - result = 100/100*(value-150)+200; + result = 100.0/100*(value-150)+200; }else if (value<=350) { - result = 100/100*(value-250)+300; + result = 100.0/100*(value-250)+300; }else { - result = 100/150*(value-350)+400; + result = 100.0/150*(value-350)+400; } return result; } - + static double PM10AQI(Double value) { Double result = (double) 0; if(value<=0) { result=(double) 0; }else if (value<=50) { - result = 50/50*(value-0)+0; + result = 50.0/50*(value-0)+0; }else if (value<=150) { - result = 50/100*(value-50)+50; + result = 50.0/100*(value-50)+50; }else if (value<=250) { - result = 50/100*(value-150)+100; + result = 50.0/100*(value-150)+100; }else if (value<=350) { - result = 50/100*(value-250)+150; + result = 50.0/100*(value-250)+150; }else if (value<=420) { - result = 100/70*(value-350)+200; + result = 100.0/70*(value-350)+200; }else if (value<=500) { - result = 100/80*(value-420)+300; + result = 100.0/80*(value-420)+300; }else { - result = 100/100*(value-500)+400; + result = 100.0/100*(value-500)+400; } return result; } @@ -164,13 +164,13 @@ if(value<=0) { result=(double) 0; }else if (value<=150) { - result = 50/150*(value-0)+0; + result = 50.0/150*(value-0)+0; }else if (value<=500) { - result = 50/350*(value-150)+50; + result = 50.0/350*(value-150)+50; }else if (value<=650) { - result = 50/150*(value-500)+100; + result = 50.0/150*(value-500)+100; }else { - result = 50/150*(value-650)+150; + result = 50.0/150*(value-650)+150; } return result; } @@ -180,19 +180,19 @@ if(value<=0) { result=(double) 0; }else if (value<=100) { - result = 50/100*(value-0)+0; + result = 50.0/100*(value-0)+0; }else if (value<=200) { - result = 50/100*(value-100)+50; + result = 50.0/100*(value-100)+50; }else if (value<=700) { - result = 50/500*(value-200)+100; + result = 50.0/500*(value-200)+100; }else if (value<=1200) { - result = 50/500*(value-700)+150; + result = 50.0/500*(value-700)+150; }else if (value<=2340) { - result = 100/1140*(value-1200)+200; + result = 100.0/1140*(value-1200)+200; }else if (value<=3090) { - result = 100/750*(value-2340)+300; + result = 100.0/750*(value-2340)+300; }else { - result = 100/750*(value-3090)+400; + result = 100.0/750*(value-3090)+400; } return result; } @@ -202,19 +202,19 @@ if(value<=0) { result=(double) 0; }else if (value<=5) { - result = 50/5*(value-0)+0; + result = 50.0/5*(value-0)+0; }else if (value<=10) { - result = 50/5*(value-5)+50; + result = 50.0/5*(value-5)+50; }else if (value<=35) { - result = 50/25*(value-10)+100; + result = 50.0/25*(value-10)+100; }else if (value<=60) { - result = 50/25*(value-35)+150; + result = 50.0/25*(value-35)+150; }else if (value<=90) { - result = 100/30*(value-60)+200; + result = 100.0/30*(value-60)+200; }else if (value<=120) { - result = 100/30*(value-90)+300; + result = 100.0/30*(value-90)+300; }else { - result = 100/30*(value-120)+400; + result = 100.0/30*(value-120)+400; } return result; } @@ -224,19 +224,19 @@ if(value<=0) { result=(double) 0; }else if (value<=100) { - result = 50/160*(value-0)+0; + result = 50.0/160*(value-0)+0; }else if (value<=160) { - result = 50/40*(value-160)+50; + result = 50.0/40*(value-160)+50; }else if (value<=215) { - result = 50/100*(value-200)+100; + result = 50.0/100*(value-200)+100; }else if (value<=265) { - result = 50/100*(value-300)+150; + result = 50.0/100*(value-300)+150; }else if (value<=800) { - result = 100/400*(value-400)+200; + result = 100.0/400*(value-400)+200; }else if (value<=2100) { - result = 100/200*(value-800)+300; + result = 100.0/200*(value-800)+300; }else { - result = 100/200*(value-1000)+400; + result = 100.0/200*(value-1000)+400; } return result; } @@ -246,19 +246,19 @@ if(value<=0) { result=(double) 0; }else if (value<=100) { - result = 50/100*(value-0)+0; + result = 50.0/100*(value-0)+0; }else if (value<=160) { - result = 50/60*(value-100)+50; + result = 50.0/60*(value-100)+50; }else if (value<=215) { - result = 50/55*(value-160)+100; + result = 50.0/55*(value-160)+100; }else if (value<=265) { - result = 50/150*(value-215)+150; + result = 50.0/150*(value-215)+150; }else if (value<=800) { - result = 100/535*(value-265)+200; + result = 100.0/535*(value-265)+200; }else if (value<=2100) { - result = 100/12*(value-800)+300; + result = 100.0/12*(value-800)+300; }else { - result = 100/12*(value-48)+400; + result = 100.0/12*(value-48)+400; } return result; } @@ -268,19 +268,19 @@ if(value<=0) { result=(double) 0; }else if (value<=50) { - result = 50/50*(value-0)+0; + result = 50.0/50*(value-0)+0; }else if (value<=150) { - result = 50/100*(value-50)+50; + result = 50.0/100*(value-50)+50; }else if (value<=475) { - result = 50/325*(value-150)+100; + result = 50.0/325*(value-150)+100; }else if (value<=800) { - result = 50/325*(value-475)+150; + result = 50.0/325*(value-475)+150; }else if (value<=1600) { - result = 100/800*(value-800)+200; + result = 100.0/800*(value-800)+200; }else if (value<=2100) { - result = 100/500*(value-1600)+300; + result = 100.0/500*(value-1600)+300; }else { - result = 100/520*(value-2100)+400; + result = 100.0/520*(value-2100)+400; } return result; } @@ -289,19 +289,19 @@ if(value<=0) { result=(double) 0; }else if (value<=40) { - result = 50/40*(value-0)+0; + result = 50.0/40*(value-0)+0; }else if (value<=80) { - result = 50/40*(value-40)+50; + result = 50.0/40*(value-40)+50; }else if (value<=180) { - result = 50/100*(value-80)+100; + result = 50.0/100*(value-80)+100; }else if (value<=280) { - result = 50/100*(value-180)+150; + result = 50.0/100*(value-180)+150; }else if (value<=565) { - result = 100/285*(value-280)+200; + result = 100.0/285*(value-280)+200; }else if (value<=750) { - result = 100/185*(value-565)+300; + result = 100.0/185*(value-565)+300; }else { - result = 100/190*(value-750)+400; + result = 100.0/190*(value-750)+400; } return result; } @@ -311,19 +311,19 @@ if(value<=0) { result=(double) 0; }else if (value<=5) { - result = 50/2*(value-0)+0; + result = 50.0/2*(value-0)+0; }else if (value<=10) { - result = 50/2*(value-2)+50; + result = 50.0/2*(value-2)+50; }else if (value<=35) { - result = 50/10*(value-4)+100; + result = 50.0/10*(value-4)+100; }else if (value<=60) { - result = 50/10*(value-14)+150; + result = 50.0/10*(value-14)+150; }else if (value<=90) { - result = 100/12*(value-24)+200; + result = 100.0/12*(value-24)+200; }else if (value<=120) { - result = 100/12*(value-36)+300; + result = 100.0/12*(value-36)+300; }else { - result = 100/12*(value-48)+400; + result = 100.0/12*(value-48)+400; } return result; } -- Gitblit v1.8.0