From d8a1ab25881275da008b2801119f36b51554f427 Mon Sep 17 00:00:00 2001
From: wuww <252740454@qq.com>
Date: 星期日, 04 五月 2025 11:11:30 +0800
Subject: [PATCH] 修改初始化方案参数

---
 src/main/java/com/se/nsl/controller/SimuController.java |    1 
 src/main/java/com/se/nsl/controller/TestController.java |    2 
 src/main/resources/mybatis.xml                          |    2 
 src/main/java/com/se/nsl/domain/po/SimuData.java        |    7 ++
 src/main/java/com/se/nsl/service/ResolveService.java    |   18 +++++
 src/main/java/com/se/nsl/config/PropertiesConfig.java   |   10 +++
 data/init.sql                                           |   21 ++++++-
 src/main/resources/application-dev.yml                  |    1 
 src/main/java/com/se/nsl/domain/vo/ConfigVo.java        |   61 ++++++++++++++++++++
 9 files changed, 117 insertions(+), 6 deletions(-)

diff --git a/data/init.sql b/data/init.sql
index a7dbb76..56fe366 100644
--- a/data/init.sql
+++ b/data/init.sql
@@ -45,8 +45,8 @@
 
 -- insert into nsl.simu (name, service_name, type, area_type, area_name, status, geom) values ('棰勬祴妯℃嫙-0416', '20250416100000', 1, 1, '澶у叴鍖�', 0, ST_GeomFromText('MULTIPOLYGON(((116.666748 39.639859,116.659403 39.626287,116.665956 39.654698,116.666748 39.639859)))'));
 
-select id, name, service_name, type, area_type, area_name, status, result, create_time, create_user, update_time, update_user, bak, data, st_astext(geom) geom from nsl.simu order by id desc;
--- update nsl.simu set status = 0, area_name = '鎴垮北鍖�' where id = 24;
+select id,name,service_name,type,area_type,area_name,status,result,create_time,update_time,bak,data,st_astext(geom) from nsl.simu where id > 0 order by id desc;
+-- update nsl.simu set status = 0, area_name = '鎴垮北鍖�', data = '{"startTime":"2025-05-01 11:10:54","type":3,"total":50,"duration":6,"intensity":70,"history":"XX骞�50mm闄嶉洦"}' where id = 24;
 ---------------------------------------------- 2.鎺ㄦ紨鍖哄煙
 -- drop table if exists nsl.region;
 create table nsl.region (
@@ -85,6 +85,21 @@
 comment on column nsl.udometer.geom is '绌洪棿浣嶇疆';
 
 select * from nsl.udometer;
----------------------------------------------- 
+---------------------------------------------- 灏� MULTIPOLYGON 杞崲涓� POLYGON
+select st_astext(ST_GeometryN(geom, generate_series(1, ST_NumGeometries(geom)))) as geom from nsl.region limit 1;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
diff --git a/src/main/java/com/se/nsl/config/PropertiesConfig.java b/src/main/java/com/se/nsl/config/PropertiesConfig.java
index 5ad97c5..5f47732 100644
--- a/src/main/java/com/se/nsl/config/PropertiesConfig.java
+++ b/src/main/java/com/se/nsl/config/PropertiesConfig.java
@@ -62,6 +62,8 @@
 
     private String zarr2tifBat;
 
+    private Integer saveFrames;
+
     private List<Integer> sizes;
 
     private String terrainFile;
@@ -262,6 +264,14 @@
         this.zarr2tifBat = zarr2tifBat;
     }
 
+    public Integer getSaveFrames() {
+        return saveFrames;
+    }
+
+    public void setSaveFrames(Integer saveFrames) {
+        this.saveFrames = saveFrames;
+    }
+
     public boolean isCopyTif() {
         return copyTif;
     }
diff --git a/src/main/java/com/se/nsl/controller/SimuController.java b/src/main/java/com/se/nsl/controller/SimuController.java
index f4df136..51e9489 100644
--- a/src/main/java/com/se/nsl/controller/SimuController.java
+++ b/src/main/java/com/se/nsl/controller/SimuController.java
@@ -108,6 +108,7 @@
             if (null == data) return fail("鏂规鏁版嵁鏍煎紡(JSON)涓嶆纭�");
 
             if (simu.getStatus() != 0) return fail("鏂规姝e湪杩愯鎴栧凡瀹屾垚");
+            if (StringUtils.isEmpty(simu.getGeom())) return fail("鏂规鐨勫浘褰负绌�");
 
             int rows = resolveService.start(simu);
 
diff --git a/src/main/java/com/se/nsl/controller/TestController.java b/src/main/java/com/se/nsl/controller/TestController.java
index e167351..876f6f1 100644
--- a/src/main/java/com/se/nsl/controller/TestController.java
+++ b/src/main/java/com/se/nsl/controller/TestController.java
@@ -175,7 +175,7 @@
     @ApiOperation(value = "04.testPngList <")
     @GetMapping("/testPngList")
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "path", value = "璺緞", dataType = "String", paramType = "query", example = "D:\\other\\simu\\out\\fs24cubic"),
+            @ApiImplicitParam(name = "path", value = "璺緞", dataType = "String", paramType = "query", example = "fs24cubic"),
             @ApiImplicitParam(name = "size", value = "灏哄", dataType = "Integer", paramType = "query", example = "1024")
     })
     public R<Object> testPngList(String path, Integer size) {
diff --git a/src/main/java/com/se/nsl/domain/po/SimuData.java b/src/main/java/com/se/nsl/domain/po/SimuData.java
index 842bc46..f727183 100644
--- a/src/main/java/com/se/nsl/domain/po/SimuData.java
+++ b/src/main/java/com/se/nsl/domain/po/SimuData.java
@@ -103,6 +103,13 @@
         return GdalHelper.createSpatialReference(this.getEpsg());
     }
 
+    public void setEnvelope(double[] envelope) {
+        this.minx = envelope[0];
+        this.maxx = envelope[1];
+        this.miny = envelope[2];
+        this.maxy = envelope[3];
+    }
+
     public String getInPath() {
         return inPath;
     }
diff --git a/src/main/java/com/se/nsl/domain/vo/ConfigVo.java b/src/main/java/com/se/nsl/domain/vo/ConfigVo.java
new file mode 100644
index 0000000..4054306
--- /dev/null
+++ b/src/main/java/com/se/nsl/domain/vo/ConfigVo.java
@@ -0,0 +1,61 @@
+package com.se.nsl.domain.vo;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+@SuppressWarnings("ALL")
+public class ConfigVo {
+    private List<Object> terrain;
+
+    private List<Object> landuse;
+
+    private List<Object> station;
+
+    private Integer kSt;
+
+    private String raingage;
+
+    private String infiltration;
+
+    private Integer duration;
+
+    private Boolean save_state;
+
+    private List<String> save_variables;
+
+    private Integer save_interval;
+
+    private Integer save_frames;
+
+    private Integer save_start;
+
+    private Double dt;
+
+    private Boolean variable_dt;
+
+    public ConfigVo() {
+        terrain = new ArrayList<Object>(Arrays.asList("Data/Hillzone.tif", 1));
+        landuse = new ArrayList<Object>(Arrays.asList("Data/landuse.tif", 1));
+        station = new ArrayList<Object>(Arrays.asList("Data/station.tif", 1));
+        kSt = 40;
+        raingage = "Data/beijing.dat";
+        infiltration = "Data/landuse_to_infiltration.dat";
+        duration = 3600 * 24;
+        save_state = true;
+        save_variables = new ArrayList<>(Arrays.asList("depth"));
+        save_interval = 60;
+        save_frames = 60;
+        save_start = 0;
+        dt = 0.1;
+        variable_dt = true;
+    }
+
+    public ConfigVo(int hours, int frames) {
+        this();
+
+        duration = 3600 * hours;
+        save_frames = frames;
+        save_interval = duration / frames;
+    }
+}
diff --git a/src/main/java/com/se/nsl/service/ResolveService.java b/src/main/java/com/se/nsl/service/ResolveService.java
index 8ad7b98..0c7d47a 100644
--- a/src/main/java/com/se/nsl/service/ResolveService.java
+++ b/src/main/java/com/se/nsl/service/ResolveService.java
@@ -10,6 +10,8 @@
 import com.se.nsl.helper.WebHelper;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
+import org.gdal.ogr.Geometry;
+import org.gdal.ogr.ogr;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -32,11 +34,21 @@
         Date now = new Date();
         String date = StringHelper.YMDHMS2_FORMAT.format(now);
 
+        // 灏哤KT杞崲涓篏eometry瀵硅薄
+        Geometry geom = Geometry.CreateFromWkt(simu.getGeom());
+        if (geom.GetGeometryType() == ogr.wkbMultiPolygon) {
+            geom = geom.GetGeometryRef(0);
+        }
+        double[] envelope = new double[4];
+        geom.GetEnvelope(envelope);
+
         SimuData data = JSON.parseObject(simu.getData(), SimuData.class);
         data.setInPath(date);
         data.setOutPath(date);
         data.setEpsg(4548);
+        data.setEnvelope(envelope);
 
+        simu.setData(JSON.toJSONString(data));
         simu.setServiceName(date);
         simu.setStatus(1); // 0-鍒涘缓浠跨湡锛�1-棰勫鐞嗭紝2-鍒嗘瀽涓紝10-瀹屾垚锛�20-鍑洪敊
         simu.setUpdateTime(new Timestamp(now.getTime()));
@@ -65,7 +77,7 @@
         try {
             DataPo data = JSONUtil.toBean(simu.getData(), DataPo.class);
 
-            //update(simu, 2, null);
+            update(simu, 1, null);
             //gedbService.copeVectors(token, data, db);
 
             //update(simu, 3, null);
@@ -88,4 +100,8 @@
 
         simuService.updateById(simu);
     }
+
+    private void initArgs(){
+
+    }
 }
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index b4ed133..2fc80e2 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -143,6 +143,7 @@
   sww2tifBat: D:\other\simu\uwsolver\sww2tif.bat
   uwSolverBat: D:\other\simu\uwsolver\CudaUWSolver.Demo.NoVis.20250430\start.bat
   zarr2tifBat: D:\other\simu\uwsolver\zarr2tif 1.0\CudaUWSolver.Demo.NoVis.20250430\start.bat
+  saveFrames: 10
   #sizes: 64,128,256,512,1024,2048,4096
   sizes: 1024
   # 杈撳嚭鏂囦欢
diff --git a/src/main/resources/mybatis.xml b/src/main/resources/mybatis.xml
index 7efed65..7ed3666 100644
--- a/src/main/resources/mybatis.xml
+++ b/src/main/resources/mybatis.xml
@@ -29,7 +29,7 @@
         <!--鎸囧畾褰撶粨鏋滈泦涓�间负 null 鏃讹紝鏄惁璋冪敤鏄犲皠瀵硅薄鐨� setter锛坢ap 瀵硅薄鏃朵负 put锛夋柟娉�-->
         <setting name="callSettersOnNulls" value="true"/>
         <!--鎸囧畾 MyBatis 鎵�鐢ㄦ棩蹇楃殑鍏蜂綋瀹炵幇锛歀OG4J/LOG4J2/SLF4J/STDOUT_LOGGING/NO_LOGGING-->
-        <setting name="logImpl" value="NO_LOGGING" />
+        <setting name="logImpl" value="STDOUT_LOGGING" />
     </settings>
     <typeAliases>
         <package name="com.se.nsl.domain"/>

--
Gitblit v1.9.3