1. 程式人生 > 其它 >空氣質量計算公式(4) 當日累計情況

空氣質量計算公式(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; }