空气质量计算公式(4) 当日累计情况
当日达标情况统计
计算方法:
当前累计AQI:计算从当天1点至截止时间的除O3以外的各个污染物指标的均值,在计算每个小时的臭氧滑动8小时
理论上臭氧滑动8小时从当日8点开始计算,以8点为例,8点的臭氧滑动8小时为1点至8点的均值作为8点的臭氧滑动8小时。这样可以计算从8点到当前小时的臭氧滑动8小时。在从截止时间所有的滑动8小时的最大值作为当前小时的O3-8h作为计算累计AQI的臭氧,最后利用计算日AQI的计算方式计算出截止时间的AQI。
剩余浓度均值:通过下标标准及截止到当前时间AQI的各个污染浓度倒推出各个浓度剩余值(一级为优、二级为良)。参考下表
注意:所有浓度除CO,计算均用四舍六入五成双取整。CO保留一位小数。
附录:开始时间、结束时间的判断
/** * 当日累计浓度计算开始时间 * * @return * @throws ParseException */ String beginHour() { String hour = " 01"; Calendar cal = Calendar.getInstance(); // 如果是凌晨,取昨天的日期 if (isZeroHour()) { cal.add(Calendar.DATE, -1); } else { cal.add(Calendar.DATE, 0); } String date = new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime()) + hour; return date; } /** * 当日累计浓度计算结束时间 * * @return */ String endHour() { String hour = " 00"; Calendar cal = Calendar.getInstance(); if (isZeroHour()) { cal.add(Calendar.DATE, 0);// 如果是凌晨,取当天日期 } else { cal.add(Calendar.DATE, 1);// 如果不是凌晨,取次日日期 } String date = new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime()) + hour; return date; } /** * 判断是否是凌晨00点 * * @return */ private static boolean isZeroHour() { boolean flag = false; SimpleDateFormat sdf = new SimpleDateFormat("HH"); String currentHour = sdf.format(new Date()); if ("00".equals(currentHour)) { flag = true; } return flag; }