wuww
2025-05-06 78d9d47c27efe345570d3dff27c57e817b9d7bc1
src/main/java/com/se/nsl/service/ResolveService.java
@@ -103,14 +103,14 @@
            initArgs(data);
            createRainfallFile(data);
            /*update(simu, 2, "调用求解器");
            update(simu, 2, "调用求解器");
            callUwSolver(data);
            update(simu, 3, "调用Zarr转Tif");
            callZarr2tif(data);
            update(simu, 4, "解析数据");
            createNsl(data);*/
            createNsl(data);
            update(simu, 10, "完成");
        } catch (Exception ex) {
@@ -171,23 +171,30 @@
            list.addAll(calcRainfall(r1, r2, prefix, unit));
        }
        list.add(prefix + YYYYMDHM.format(rainfalls.get(c).getTime()) + ComHelper.getMinVal(rainfalls.get(c).getIntensity() / unit, DIGIT));
        //list.add(prefix + YYYYMDHM.format(rainfalls.get(c).getTime()) + getMinVal(rainfalls.get(c).getIntensity() / unit, DIGIT));
        list.add(String.format("%s%s%f", prefix, YYYYMDHM.format(rainfalls.get(c).getTime()), getMinVal(rainfalls.get(c).getIntensity() / unit, DIGIT)));
        String rainfallFile = config.getInPath() + File.separator + data.getInPath() + File.separator + "rainfall.dat";
        Files.write(Paths.get(rainfallFile), list, StandardCharsets.UTF_8);
    }
    public static double getMinVal(double val, double radix) {
        return ((long) Math.floor(val * radix)) / radix;
    }
    // beijing 116.0 40.0 2025 1 1 0 13 1.666666
    private List<String> calcRainfall(Rainfall r1, Rainfall r2, String prefix, int unit) {
        long mins = Math.abs(r2.getTime().getTime() - r1.getTime().getTime()) / (1000 * 60); // 计算分钟数
        double diff = ComHelper.getMinVal((r1.getIntensity() - r2.getIntensity()) / mins / unit, DIGIT);
        double diff = (r2.getIntensity() - r1.getIntensity()) / mins / unit; //ComHelper.getMinVal((r1.getIntensity() - r2.getIntensity()) / mins / unit, DIGIT);
        Calendar cal = Calendar.getInstance();
        cal.setTime(r1.getTime());
        List<String> list = new ArrayList<>();
        double intensity = ComHelper.getMinVal(r1.getIntensity() / unit, DIGIT);
        for (int i = 0; i < mins; i++) {
            list.add(prefix + YYYYMDHM.format(cal.getTime()) + r1.getIntensity() + diff * i);
            //list.add(prefix + YYYYMDHM.format(cal.getTime()) + getMinVal((intensity + diff * i), DIGIT));
            list.add(String.format("%s%s%f", prefix, YYYYMDHM.format(cal.getTime()), getMinVal((intensity + diff * i), DIGIT)));
            cal.add(Calendar.MINUTE, 1);
        }