dcb
2025-05-26 6d817179edaf2a6c793595056f5d250eb4396ab0
src/main/java/com/se/nsl/service/ResolveService.java
@@ -210,6 +210,30 @@
        }
        f.mkdirs();
    }
    enum RainFallUnit {
        MM_H("mm/h", 60),
        MM_15MIN("mm/15min", 15),
        MM_5MIN("mm/5min", 5),
        MM_MIN("mm/min", 1);
        private String unit;
        private int c; //系数
        RainFallUnit(String unit, int c) {
            this.unit = unit;
            this.c = c;
        }
        public static RainFallUnit of(String unit) {
            RainFallUnit[] values = values();
            for (RainFallUnit v : values) {
                if (v.unit.equals(unit)) {
                    return v;
                }
            }
            return MM_H; //默认按照mm/h计算
        }
    }
    public void createRainfallFile(Simu simu, SimuData data) throws Exception {
        List<Rainfall> rainfalls = data.getRainfalls();
@@ -228,8 +252,12 @@
        double centerX = ComHelper.getMinVal((data.getMinx() + data.getMaxx()) / 2, DIGIT);
        double centerY = ComHelper.getMinVal((data.getMiny() + data.getMaxy()) / 2, DIGIT);
        String prefix = config.getRainfallSite() + " " + centerX + " " + centerY + " ";
        int unit = StringUtils.isEmpty(data.getIntensityUnit()) || "mm/h".equals(data.getIntensityUnit()) ? 60 : 5;
        //如果没有单位或者单位为mm/h则按照 mm/h计算,否则按照mm/5min计算
//        int unit = StringUtils.isEmpty(data.getIntensityUnit()) || "mm/h".equals(data.getIntensityUnit()) ? 60 : 5;
        String iu = data.getIntensityUnit();
        RainFallUnit rfUnit = RainFallUnit.of(iu);
        data.setIntensityUnit(rfUnit.unit);
        int unit = rfUnit.c;
        int c = rainfalls.size() - 1;
        for (int i = 0; i < c; i++) {
            Rainfall r1 = rainfalls.get(i);
@@ -290,7 +318,10 @@
        String landuseFile = inPath + File.separator + config.getLanduseFile();
        String rainfallFile = (inPath + File.separator + "rainfall.dat");
        String saveName = inPath + File.separator + "result.zarr";
        ConfigVo vo = new ConfigVo(terrainFile, landuseFile, terrainFile, rainfallFile, saveName, duration, config.getSaveFrames());
//        ConfigVo vo = new ConfigVo(terrainFile, landuseFile, terrainFile, rainfallFile, saveName, duration, config.getSaveFrames());
        Integer saveFrameInterval = config.getSaveFrameInterval();
        int saveFrames = duration / 60 / saveFrameInterval;
        ConfigVo vo = new ConfigVo(terrainFile, landuseFile, terrainFile, rainfallFile, saveName, duration, saveFrames);
        String configFile = config.getInPath() + File.separator + data.getInPath() + File.separator + data.getInPath() + ".json";
        ComHelper.writeJson(configFile, JSON.toJSONString(vo));