| | |
| | | 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) { |
| | |
| | | |
| | | 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); |
| | | } |
| | | |