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