From 68372fd1905515c5c8dbb9e3b158241994439e06 Mon Sep 17 00:00:00 2001 From: dcb <xgybdcb@163.com> Date: 星期四, 19 六月 2025 14:18:53 +0800 Subject: [PATCH] 增加生成结果的水深过滤参数 --- src/main/java/com/se/nsl/domain/vo/ResultVo.java | 2 +- src/main/java/com/se/nsl/service/ResultService.java | 6 +++--- src/main/java/com/se/nsl/service/ResolveService.java | 7 ++++--- src/main/java/com/se/nsl/config/PropertiesConfig.java | 10 ++++++++++ src/main/java/com/se/nsl/service/TestService.java | 5 ++--- src/main/java/com/se/nsl/helper/ComHelper.java | 28 +++++++++++++++++----------- src/main/resources/application-dev.yml | 1 + 7 files changed, 38 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/se/nsl/config/PropertiesConfig.java b/src/main/java/com/se/nsl/config/PropertiesConfig.java index c10521f..c1f7f51 100644 --- a/src/main/java/com/se/nsl/config/PropertiesConfig.java +++ b/src/main/java/com/se/nsl/config/PropertiesConfig.java @@ -100,6 +100,8 @@ private String keyDitch; + private Double saveFilter; + public String getVer() { return ver; } @@ -463,4 +465,12 @@ public void setKeyDitch(String keyDitch) { this.keyDitch = keyDitch; } + + public Double getSaveFilter() { + return saveFilter; + } + + public void setSaveFilter(Double saveFilter) { + this.saveFilter = saveFilter; + } } diff --git a/src/main/java/com/se/nsl/domain/vo/ResultVo.java b/src/main/java/com/se/nsl/domain/vo/ResultVo.java index aaf18a2..2a20068 100644 --- a/src/main/java/com/se/nsl/domain/vo/ResultVo.java +++ b/src/main/java/com/se/nsl/domain/vo/ResultVo.java @@ -30,7 +30,7 @@ public ResultVo() { this.save_variables = new ArrayList<>(Arrays.asList("depth", "xmomentum", "ymomentum")); this.save_start = 0; - this.save_filter = 0.005D; + this.save_filter = 0.015D; } public ResultVo(String saveName, int frames, int saveInterval, diff --git a/src/main/java/com/se/nsl/helper/ComHelper.java b/src/main/java/com/se/nsl/helper/ComHelper.java index fe10817..0b52369 100644 --- a/src/main/java/com/se/nsl/helper/ComHelper.java +++ b/src/main/java/com/se/nsl/helper/ComHelper.java @@ -41,7 +41,8 @@ } } - public static void Resample(Dataset ds, String dest, int width, int height, LayerDto layer) { + public static void cutAndResample(Dataset ds, String dest, int width, int height, + LayerDto layer, boolean resample) { Vector<String> vector = new Vector<>(); //vector.add("-s_srs"); //vector.add("EPSG:" + 4548); @@ -57,17 +58,19 @@ //vector.add("" + layer.getExtension().getMaxy()); //vector.add("-te_srs"); //vector.add("EPSG:" + 4326); - vector.add("-r"); - vector.add("bilinear"); // 鍙岀嚎鎬ф彃鍊� - vector.add("-of"); - vector.add("GTiff"); + if (resample) { + vector.add("-r"); + vector.add("bilinear"); // 鍙岀嚎鎬ф彃鍊� + vector.add("-of"); + vector.add("GTiff"); + } WarpOptions warpOptions = new WarpOptions(vector); Dataset destDs = gdal.Warp(dest, new Dataset[]{ds}, warpOptions); destDs.delete(); } - public static void Resample(Dataset ds, Integer targetEpsg, String dest, Double destNoData, String wkt, Integer width, Integer height) { + public static void cutAndResample(Dataset ds, Integer targetEpsg, String dest, Double destNoData, String wkt, Integer width, Integer height) { Vector<String> vector = new Vector<>(); if (targetEpsg != null) { //vector.add("-s_srs"); @@ -98,7 +101,8 @@ if (null != destDs) destDs.delete(); } - public static void Resample2(Dataset ds, String dest, int width, int height, LayerDto layer) { + public static void coordinateTransformAndResample(Dataset ds, String dest, int width, int height, + LayerDto layer, boolean resample) { Vector<String> vector = new Vector<>(); vector.add("-s_srs"); vector.add("EPSG:" + 4548); @@ -114,11 +118,13 @@ //vector.add("" + layer.getExtension().getMaxy()); //vector.add("-te_srs"); //vector.add("EPSG:" + 4326); - vector.add("-r"); + if (resample) { + vector.add("-r"); // vector.add("average"); - vector.add("cubic"); - vector.add("-of"); - vector.add("GTiff"); + vector.add("cubic"); + vector.add("-of"); + vector.add("GTiff"); + } WarpOptions warpOptions = new WarpOptions(vector); Dataset destDs = gdal.Warp(dest, new Dataset[]{ds}, warpOptions); diff --git a/src/main/java/com/se/nsl/service/ResolveService.java b/src/main/java/com/se/nsl/service/ResolveService.java index d78c9e9..9d8cf99 100644 --- a/src/main/java/com/se/nsl/service/ResolveService.java +++ b/src/main/java/com/se/nsl/service/ResolveService.java @@ -201,19 +201,19 @@ String terrainFile = inPath + File.separator + config.getTerrainFile(); Dataset dsDem = gdal.Open(terrainTif, gdalconstConstants.GA_ReadOnly); - ComHelper.Resample(dsDem, null, terrainFile, null, wkt, null, null); + ComHelper.cutAndResample(dsDem, null, terrainFile, null, wkt, null, null); dsDem.delete(); String landuseFile = inPath + File.separator + config.getLanduseFile(); Dataset dsLanduse = gdal.Open(landuseTif, gdalconstConstants.GA_ReadOnly); - ComHelper.Resample(dsLanduse, null, landuseFile, null, wkt, null, null); + ComHelper.cutAndResample(dsLanduse, null, landuseFile, null, wkt, null, null); dsLanduse.delete(); if (stationTif != null) { String stationFile = inPath + File.separator + "Station.tif"; Dataset dsStation = gdal.Open(stationTif, gdalconstConstants.GA_ReadOnly); - ComHelper.Resample(dsStation, null, stationFile, null, wkt, null, null); + ComHelper.cutAndResample(dsStation, null, stationFile, null, wkt, null, null); dsStation.delete(); } } @@ -348,6 +348,7 @@ String startTime = TimeFormatUtil.formatDate(data.getStartTime()); ConfigVo vo = new ConfigVo(terrainFile, landuseFile, terrainFile, rainfallFile, saveName, duration, saveFrames, saveMode, startTime); + vo.getResult().setSave_filter(config.getSaveFilter()); String configFile = config.getInPath() + File.separator + data.getInPath() + File.separator + data.getInPath() + ".json"; // ComHelper.writeJson(configFile, JSON.toJSONString(vo)); mapper.writeValue(new File(configFile), vo); diff --git a/src/main/java/com/se/nsl/service/ResultService.java b/src/main/java/com/se/nsl/service/ResultService.java index b56af5d..81e5066 100644 --- a/src/main/java/com/se/nsl/service/ResultService.java +++ b/src/main/java/com/se/nsl/service/ResultService.java @@ -111,7 +111,7 @@ for (int[] sizes : layer.getTerrain().getSize()) { String tif = dto.getTemp() + File.separator + "terrain_" + sizes[0] + "_" + sizes[1] + ".tif"; - ComHelper.Resample(ds, tif, sizes[0], sizes[1], layer); + ComHelper.cutAndResample(ds, tif, sizes[0], sizes[1], layer, false); if (!new File(tif).exists()) continue; String png = terrainPath + File.separator + sizes[0] + "_" + sizes[1] + ".png"; @@ -290,7 +290,7 @@ for (int[] sizes : layer.getTerrain().getSize()) { String fileName = ComHelper.getNameWithExt(ds.GetDescription()) + "_" + sizes[0] + "_" + sizes[1]; String tif = dto.getTemp() + File.separator + fileName + ".tif"; - ComHelper.Resample(ds, tif, sizes[0], sizes[1], layer); + ComHelper.cutAndResample(ds, tif, sizes[0], sizes[1], layer, false); if (!new File(tif).exists()) continue; String png = waterPath + File.separator + sizes[0] + "_" + sizes[1] + ".png"; @@ -520,7 +520,7 @@ for (int[] sizes : layer.getTerrain().getSize()) { String name = ComHelper.getNameWithExt(ds.GetDescription()) + "_" + sizes[0] + "_" + sizes[1]; String tif = dto.getTemp() + File.separator + name + ".tif"; - ComHelper.Resample(ds, tif, sizes[0], sizes[1], layer); + ComHelper.cutAndResample(ds, tif, sizes[0], sizes[1], layer, false); if (!new File(tif).exists()) continue; String png = flowPath + File.separator + sizes[0] + "_" + sizes[1] + ".png"; diff --git a/src/main/java/com/se/nsl/service/TestService.java b/src/main/java/com/se/nsl/service/TestService.java index a007a9e..bb90b25 100644 --- a/src/main/java/com/se/nsl/service/TestService.java +++ b/src/main/java/com/se/nsl/service/TestService.java @@ -144,7 +144,7 @@ for (int[] sizes : layer.getTerrain().getSize()) { String tif = dto.getTemp() + File.separator + "terrain_" + sizes[0] + "_" + sizes[1] + ".tif"; - ComHelper.Resample(ds, tif, sizes[0], sizes[1], layer); + ComHelper.cutAndResample(ds, tif, sizes[0], sizes[1], layer, true); if (!new File(tif).exists()) continue; String png = terrainPath + File.separator + sizes[0] + "_" + sizes[1] + ".png"; @@ -284,7 +284,7 @@ for (int[] sizes : layer.getTerrain().getSize()) { String fileName = ComHelper.getNameWithExt(ds.GetDescription()) + "_" + sizes[0] + "_" + sizes[1]; String tif = dto.getTemp() + File.separator + fileName + ".tif"; - ComHelper.Resample2(ds, tif, sizes[0], sizes[1], layer); + ComHelper.coordinateTransformAndResample(ds, tif, sizes[0], sizes[1], layer, true); if (!new File(tif).exists()) continue; String png = waterPath + File.separator + sizes[0] + "_" + sizes[1] + ".png"; @@ -444,7 +444,6 @@ for (int[] sizes : layer.getTerrain().getSize()) { String name = ComHelper.getNameWithExt(ds.GetDescription()) + "_" + sizes[0] + "_" + sizes[1]; String tif = dto.getTemp() + File.separator + name + ".tif"; -// ComHelper.Resample(ds, tif, sizes[0], sizes[1], layer); if (!new File(tif).exists()) continue; String png = flowPath + File.separator + sizes[0] + "_" + sizes[1] + ".png"; diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 71656bb..72f1532 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -151,6 +151,7 @@ # saveFrames: 3 #鐢熸垚甯ф暟鐨勯棿闅旀椂闂达紝鍗曚綅鏄垎閽燂紝璁剧疆涓�5琛ㄧず姣忛殧5鍒嗛挓鐢熸垚涓�甯� saveFrameInterval: 20 + saveFilter: 0.015 # 鍦熷湴鍒╃敤锛�1-Cropland,2-Forest,3-Shrub,4-Grassland,5-Water,6-Snow/Ice,7-Barren,8-Impervious,9-Wetland landuse: 2 #sizes: 64,128,256,512,1024,2048,4096 -- Gitblit v1.9.3