| | |
| | | public class AQICalculation2 { |
| | | |
| | | public static Map<String, Object> hourlyAQI(Map<String, Object> map){ |
| | | List<Double> AQIList = new ArrayList<>(); |
| | | Map<String,Double> AQIMap = new HashMap<>(); |
| | | Map maxMap = new HashMap(); |
| | | for (Map.Entry<String, Object> entry : map.entrySet()) { |
| | | String key = entry.getKey(); |
| | |
| | | |
| | | switch (key) { |
| | | case "PM2_5":PM2_5AQI = PM2_5AQI(value); |
| | | AQIList.add(PM2_5AQI); |
| | | AQIMap.put("PM2_5",PM2_5AQI); |
| | | break; |
| | | case "PM10":PM10AQI = PM10AQI(value); |
| | | AQIList.add(PM10AQI); |
| | | AQIMap.put("PM10",PM10AQI); |
| | | break; |
| | | case "SO2":SO2AQI = SO2AQI(value); |
| | | AQIList.add(SO2AQI); |
| | | AQIMap.put("SO2",SO2AQI); |
| | | break; |
| | | case "NO2":NO2AQI = NO2AQI(value); |
| | | AQIList.add(NO2AQI); |
| | | AQIMap.put("NO2",NO2AQI); |
| | | break; |
| | | case "CO":COAQI = COAQI(value); |
| | | AQIList.add(COAQI); |
| | | AQIMap.put("CO",COAQI); |
| | | break; |
| | | case "maxO3_8h":O3AQI = O3AQI(value); |
| | | AQIList.add(O3AQI); |
| | | AQIMap.put("maxO3_8h",O3AQI); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | } |
| | | Map<String, Object> returnMap = new HashMap<>(); |
| | | Double AQIMAX = Collections.max(AQIList); |
| | | Optional<Map.Entry<String, Integer>> max0 = maxMap.entrySet() |
| | | Optional<Map.Entry<String, Double>> max0 = AQIMap.entrySet() |
| | | .stream() |
| | | .max(Map.Entry.comparingByValue()); |
| | | returnMap.put("maxSensor", max0.get().getKey()); |
| | | returnMap.put("AQI", new Double(Math.floor(Math.round(AQIMAX+0.5))).intValue()); |
| | | returnMap.put("AQI", new Double(Math.floor(Math.round(max0.get().getValue()+0.5))).intValue()); |
| | | return returnMap; |
| | | } |
| | | public static Map<String, Object> dayAQI(Map<String, Object> map){ |
| | | List<Double> AQIList = new ArrayList<>(); |
| | | Map<String,Double> AQIMap = new HashMap<>(); |
| | | Map maxMap = new HashMap(); |
| | | for (Map.Entry<String, Object> entry : map.entrySet()) { |
| | | String key = entry.getKey(); |
| | |
| | | Double maxO38hAQI; |
| | | switch (key) { |
| | | case "PM2_5":PM2_5AQI = PM2_5AQI(value); |
| | | AQIList.add(PM2_5AQI); |
| | | AQIMap.put("PM2_5",PM2_5AQI); |
| | | break; |
| | | case "PM10":PM10AQI = PM10AQI(value); |
| | | AQIList.add(PM10AQI); |
| | | AQIMap.put("PM10",PM10AQI); |
| | | break; |
| | | case "SO2":SO2AQI = SO2DayAQI(value); |
| | | AQIList.add(SO2AQI); |
| | | AQIMap.put("SO2",SO2AQI); |
| | | break; |
| | | case "NO2":NO2AQI = NO2DayAQI(value); |
| | | AQIList.add(NO2AQI); |
| | | AQIMap.put("NO2",NO2AQI); |
| | | break; |
| | | case "CO":COAQI = CODayAQI(value); |
| | | AQIList.add(COAQI); |
| | | AQIMap.put("CO",COAQI); |
| | | break; |
| | | case "maxO3_8h":maxO38hAQI = O3DayAQI(value); |
| | | AQIList.add(maxO38hAQI); |
| | | AQIMap.put("maxO3_8h",maxO38hAQI); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | } |
| | | Map<String, Object> returnMap = new HashMap<>(); |
| | | if (AQIList.size()>0){ |
| | | Double AQIMAX = Collections.max(AQIList); |
| | | Optional<Map.Entry<String, Integer>> max0 = maxMap.entrySet() |
| | | if (AQIMap.size()>0){ |
| | | Optional<Map.Entry<String, Double>> max0 = AQIMap.entrySet() |
| | | .stream() |
| | | .max(Map.Entry.comparingByValue()); |
| | | returnMap.put("maxSensor",max0.get().getKey()); |
| | | returnMap.put("AQI", new Double(Math.floor(Math.round(AQIMAX+0.5))).intValue()); |
| | | returnMap.put("AQI", new Double(Math.floor(Math.round(max0.get().getValue()+0.5))).intValue()); |
| | | }else { |
| | | returnMap.put("maxSensor",""); |
| | | returnMap.put("AQI", ""); |