From ddee792c3e8991a72990dbb485bde26bdb968c93 Mon Sep 17 00:00:00 2001
From: wuww <252740454@qq.com>
Date: 星期三, 14 五月 2025 14:07:42 +0800
Subject: [PATCH] 升级求解器至2.0

---
 src/main/java/com/se/nsl/controller/TestController.java |  420 +++++++++++++++++++++++++++++++++++++----------------------
 1 files changed, 264 insertions(+), 156 deletions(-)

diff --git a/src/main/java/com/se/nsl/controller/TestController.java b/src/main/java/com/se/nsl/controller/TestController.java
index d19efa9..7cea5b6 100644
--- a/src/main/java/com/se/nsl/controller/TestController.java
+++ b/src/main/java/com/se/nsl/controller/TestController.java
@@ -1,18 +1,24 @@
 package com.se.nsl.controller;
 
+import com.alibaba.fastjson.JSON;
+import com.se.nsl.config.PropertiesConfig;
 import com.se.nsl.domain.po.DataPo;
 import com.se.nsl.domain.po.Region;
+import com.se.nsl.domain.po.Simu;
+import com.se.nsl.domain.po.SimuData;
 import com.se.nsl.domain.vo.R;
 import com.se.nsl.helper.GdalHelper;
 import com.se.nsl.helper.ShpHelper;
 import com.se.nsl.helper.StringHelper;
 import com.se.nsl.mapper.RegionMapper;
 import com.se.nsl.service.*;
+import io.netty.util.internal.StringUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.axis.utils.StringUtils;
 import org.gdal.ogr.*;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -32,7 +38,7 @@
 import java.util.Date;
 import java.util.List;
 
-@Api(tags = "Test")
+@Api(tags = "01-Test")
 @Slf4j
 @RestController
 @RequestMapping("/test")
@@ -50,8 +56,8 @@
     @Resource
     SimuPoService simuPoService;
 
-    @Resource
-    Hdf5Service hdf5Service;
+    //@Resource
+    //Hdf5Service hdf5Service;
 
     @Resource
     ResultService resultService;
@@ -59,161 +65,22 @@
     @Resource
     RegionMapper regionMapper;
 
-    @ApiOperation(value = "褰撳墠鏃堕棿 *")
-    @GetMapping("/getTime")
-    public Object getTime() {
-        return (Object) System.currentTimeMillis();
-    }
+    @Resource
+    PropertiesConfig config;
 
-    @ApiOperation(value = "testCallExe *")
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "path", value = "璺緞", dataType = "String", paramType = "query", example = "20241010095328")
-    })
-    @GetMapping("/testCallExe")
-    public R<Object> testCallExe(String path) {
-        try {
-            DataPo data = new DataPo();
-            data.setInPath(path);
+    @Resource
+    SimuService simuService;
 
-            String str = uwService.callExe(data);
+    @Resource
+    ResolveService resolveService;
 
-            return success(str);
-        } catch (Exception ex) {
-            return fail(ex, null);
-        }
-    }
-
-    @ApiOperation(value = "testResuslt *")
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "path", value = "璺緞", dataType = "String", paramType = "query", example = "20241107092342"),
-            @ApiImplicitParam(name = "time", value = "鏃堕棿", dataType = "String", paramType = "query", example = "2024-11-07 09:23:42")
-    })
-    @GetMapping("/testResuslt")
-    public R<Object> testResuslt(String path, String time) {
-        try {
-            DataPo data = new DataPo();
-            data.setEpsg(Integer.valueOf(4548));
-            data.setInPath(path);
-            data.setStartTime(StringHelper.YMDHMS_FORMAT.parse(time));
-
-            resultService.process(data);
-
-            return success("ok");
-        } catch (Exception ex) {
-            return fail(ex, null);
-        }
-    }
-
-    @ApiOperation(value = "testSww2Tif *")
-    @GetMapping("/testSww2Tif")
-    public R<Object> testSww2Tif() {
-        try {
-            DataPo data = new DataPo();
-            data.setEpsg(Integer.valueOf(4548));
-            data.setInPath("20241010095328");
-            data.setStartTime(StringHelper.YMDHMS_FORMAT.parse("2024-09-30 00:00:00"));
-
-            Object rs = uwService.copeDrainFiles(data);
-
-            return success(rs);
-        } catch (Exception ex) {
-            return fail(ex, null);
-        }
-    }
-
-    @ApiOperation(value = "testRainfall *")
-    @GetMapping("/testRainfall")
-    public R<Object> testRainfall() {
-        try {
-            DataPo data = new DataPo();
-            data.setEpsg(Integer.valueOf(4548));
-            data.setTotal(Double.valueOf(60.0));
-            data.setDuration(Integer.valueOf(60));
-            data.setInPath("20241010095328");
-            data.setStartTime(StringHelper.YMDHMS_FORMAT.parse("2024-07-01 00:00:00"));
-
-            uwService.createRainFile(data);
-
-            return success("ok");
-        } catch (Exception ex) {
-            return fail(ex, null);
-        }
-    }
-
-    @ApiOperation(value = "testToken *")
-    @GetMapping("/testToken")
-    public R<Object> testToken() {
-        try {
-            String token = gedbService.getToken();
-
-            return success(token);
-        } catch (Exception ex) {
-            return fail(ex, null);
-        }
-    }
-
-    @ApiOperation(value = "testPolygonize *")
-    @GetMapping("/testPolygonize")
-    public R<Object> testPolygonize() {
-        try {
-            ShpHelper.test();
-
-            return success("ok");
-        } catch (Exception ex) {
-            return fail(ex, null);
-        }
-    }
-
-    @ApiOperation(value = "testH5 *")
-    @GetMapping("/testH5")
-    public R<Object> testH5() {
-        try {
-            DataPo data = new DataPo();
-            data.setEpsg(Integer.valueOf(4548));
-            data.setInPath("20241010095328");
-            data.setStartTime(StringHelper.YMDHMS_FORMAT.parse("2024-09-30 00:00:00"));
-
-            hdf5Service.test(data);
-
-            return success("ok");
-        } catch (Exception ex) {
-            return fail(ex, null);
-        }
-    }
-
-    @ApiOperation(value = "testNsl <")
-    @GetMapping("/testNsl")
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "inPath", value = "杈撳叆璺緞", dataType = "String", paramType = "query", example = "20250412"),
-            @ApiImplicitParam(name = "startTime", value = "寮�濮嬫椂闂�", dataType = "Integer", paramType = "query", example = "2025-04-12 00:00:00"),
-            @ApiImplicitParam(name = "epsg", value = "鍧愭爣绯籌D", dataType = "Integer", paramType = "query", example = "4548")
-    })
-    public R<Object> testNsl(String inPath, String startTime, Integer epsg) {
-        try {
-            DataPo data = new DataPo();
-            data.setInPath(inPath);
-            data.setStartTime(StringHelper.YMDHMS_FORMAT.parse(startTime));
-            data.setEpsg(epsg);
-
-            testService.test(data);
-
-            return success("ok");
-        } catch (Exception ex) {
-            return fail(ex, null);
-        }
-    }
-
-    @ApiOperation(value = "insertRegion <")
+    @ApiOperation(value = "01.insertRegion <")
     @GetMapping("/insertRegion")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "fileName", value = "鏂囦欢鍚�", dataType = "String", paramType = "query", example = "5.beijing.geoJson"),
             @ApiImplicitParam(name = "type", value = "绫诲瀷", dataType = "Integer", paramType = "query", example = "1")
     })
     public R<Object> insertRegion(String fileName, Integer type) {
-        return insertNsl(fileName, type);
-    }
-
-    private R<Object> insertNsl(String fileName, Integer type) {
         // 瀛欒儭娌焔eometry.json锛�7.nsl_area.geojson锛�4.10000.geoJson锛�5.beijing.geoJson
         String path = "D:\\terrait\\NslServer\\data\\" + fileName;
         if (!new File(path).exists()) return fail(path + "锛屾枃浠朵笉瀛樺湪", null);
@@ -245,7 +112,7 @@
         return success(list.size() > 0 ? regionMapper.inserts(list) : 0);
     }
 
-    @ApiOperation(value = "testDepthFiles <")
+    @ApiOperation(value = "02.testDepthFiles <")
     @GetMapping("/testDepthFiles")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "oldPath", value = "杈撳叆璺緞", dataType = "String", paramType = "query", example = "D:\\other\\simu\\uwsolver\\chicago"),
@@ -286,7 +153,7 @@
         }
     }
 
-    @ApiOperation(value = "testTifFiles <")
+    @ApiOperation(value = "03.testTifFiles <")
     @GetMapping("/testTifFiles")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "oldPath", value = "杈撳叆璺緞", dataType = "String", paramType = "query", example = "D:\\other\\simu\\uwsolver\\chicago\\depth"),
@@ -314,27 +181,37 @@
         }
     }
 
-    @ApiOperation(value = "testPngList <")
+    @ApiOperation(value = "04.testPngList <")
     @GetMapping("/testPngList")
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "path", value = "璺緞", dataType = "String", paramType = "query", example = "D:\\other\\simu\\out\\chicago\\waters"),
+            @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) {
         try {
             if (null == size) size = (Integer) 1024;
+
+            String newPath = config.getOutPath() + File.separator + path + File.separator + "waters";
+            String pngPath = config.getOutPath() + File.separator + path + File.separator + "png";
+            if (!new File(pngPath).exists()) new File(pngPath).mkdirs();
+
+            int i = 1;
             List<String> list = new ArrayList<>();
-            for (File file : new File(path).listFiles()) {
+            for (File file : new File(newPath).listFiles()) {
                 if (!file.exists() || file.isFile()) continue;
 
                 File pngFile = new File(file.getPath() + File.separator + size + "_" + size + ".png");
                 if (!pngFile.exists() || pngFile.isDirectory()) continue;
 
-                list.add("file '" + pngFile.getPath().replace("\\", "/") + "'");
+                String pngName = i + ".png"; // String.format("f%06d", i)
+                Files.copy(pngFile.toPath(), Paths.get(pngPath + File.separator + pngName), StandardCopyOption.REPLACE_EXISTING);
+
+                list.add("file '" + pngName + "'");
                 System.out.println(list.get(list.size() - 1));
+                i++;
             }
 
-            Path outPath = Paths.get(path + File.separator + "list.txt");
+            Path outPath = Paths.get(pngPath + File.separator + "list.txt");
             try {
                 Files.write(outPath, list, StandardCharsets.UTF_8);
             } catch (IOException e) {
@@ -346,4 +223,235 @@
             return fail(ex, null);
         }
     }
+
+    @ApiOperation(value = "5.testNsl <")
+    @GetMapping("/testNsl")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "inPath", value = "杈撳叆璺緞", dataType = "String", paramType = "query", example = "20250412"),
+            @ApiImplicitParam(name = "startTime", value = "寮�濮嬫椂闂�", dataType = "Integer", paramType = "query", example = "2025-04-12 00:00:00"),
+            @ApiImplicitParam(name = "epsg", value = "鍧愭爣绯籌D", dataType = "Integer", paramType = "query", example = "4548")
+    })
+    public R<Object> testNsl(String inPath, String startTime, Integer epsg) {
+        try {
+            DataPo data = new DataPo();
+            data.setInPath(inPath);
+            data.setStartTime(StringHelper.YMDHMS_FORMAT.parse(startTime));
+            data.setEpsg(epsg);
+
+            testService.test(data);
+
+            return success("ok");
+        } catch (Exception ex) {
+            return fail(ex, null);
+        }
+    }
+
+    @ApiOperation(value = "09.testCreateNsl <")
+    @GetMapping("/testCreateNsl")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "tifPath", value = "Tif璺緞", dataType = "String", paramType = "query", example = "D:\\other\\simu\\uwsolver\\chicago"),
+            @ApiImplicitParam(name = "inPath", value = "杈撳叆璺緞", dataType = "String", paramType = "query", example = "20250425"),
+            @ApiImplicitParam(name = "startTime", value = "寮�濮嬫椂闂�", dataType = "Integer", paramType = "query", example = "2025-04-29 00:00:00"),
+            @ApiImplicitParam(name = "epsg", value = "鍧愭爣绯籌D", dataType = "Integer", paramType = "query", example = "4548")
+    })
+    public R<Object> testCreateNsl(String tifPath, String inPath, String startTime, Integer epsg) {
+        try {
+            DataPo data = new DataPo();
+            data.setInPath(inPath);
+            data.setStartTime(StringHelper.YMDHMS_FORMAT.parse(startTime));
+            data.setEpsg(epsg);
+
+            procTifs(tifPath, inPath, data.getStartTime());
+            testService.test(data);
+
+            return success("ok");
+        } catch (Exception ex) {
+            return fail(ex, null);
+        }
+    }
+
+    private void procTifs(String tifPath, String inPath, Date startTime) {
+        if (StringUtils.isEmpty(tifPath)) return;
+
+        Calendar calendar = Calendar.getInstance();
+        //calendar.setTime(new Date(startTime.getYear() - 1900, startTime.getMonth() - 1, startTime.getDay(), 0, 0, 0));
+        calendar.setTime(startTime);
+        SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
+        String newPath = config.getInPath() + File.separator + inPath + File.separator + "depth";
+        if (!new File(newPath).exists()) new File(newPath).mkdirs();
+
+        for (File file : new File(tifPath).listFiles()) {
+            if (!file.exists() || !file.isDirectory()) continue;
+
+            File tif = new File(tifPath + "\\" + file.getName() + File.separator + "depth.tif");
+            if (!tif.exists() || tif.isDirectory()) continue;
+
+            calendar.add(Calendar.SECOND, 1);
+            String newName = df.format(calendar.getTime());
+            String newFile = newPath + File.separator + newName + ".tif";
+
+            System.out.println(newFile);
+            tif.renameTo(new File(newFile));
+            file.delete();
+        }
+    }
+
+    @ApiOperation(value = "11.renametifs <")
+    @GetMapping("/renametifs")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "path", value = "璺緞", dataType = "String", paramType = "query", example = "D:\\other\\simu\\uwsolver\\chicago\\depth"),
+            @ApiImplicitParam(name = "prefix", value = "鍓嶇紑", dataType = "Integer", paramType = "query", example = "01250302"),
+            @ApiImplicitParam(name = "newPrefix", value = "鏂板墠缂�", dataType = "Integer", paramType = "query", example = "20250429")
+    })
+    public R<Object> renametifs(String path, String prefix, String newPrefix) {
+        try {
+            File[] files = new File(path).listFiles();
+            for (File file : files) {
+                String newName = file.getPath().replace(prefix, newPrefix);
+                file.renameTo(new File(newName));
+            }
+
+            return success("ok");
+        } catch (Exception ex) {
+            return fail(ex, null);
+        }
+    }
+
+    @ApiOperation(value = "10.褰撳墠鏃堕棿 *")
+    @GetMapping("/getTime")
+    public Object getTime() throws Exception {
+        //String rs = resolveService.createRainfallCsv("D:\\360\\zt.csv", "姝f�佸垎甯�", 100, 10, 1);
+        //rs = resolveService.createRainfallCsv("D:\\360\\pj.csv", "骞冲潎鍒嗗竷", 100, 10, 1);
+        //rs = resolveService.createRainfallCsv("D:\\360\\bdpj.csv", "娉㈠姩骞冲潎鍒嗗竷", 100, 10, 1);
+        //rs = resolveService.createRainfallCsv("D:\\360\\cxss.csv", "鎸佺画涓婂崌", 100, 10, 1);
+
+        //SimuData data = new SimuData();
+        //data.setStartTime(new Date());
+        //data.setInPath("20250504203823");
+        //String rs = resolveService.callZarr2tif(data);
+
+        Simu simu = simuService.selectById(17);
+        SimuData data = JSON.parseObject(simu.getData(), SimuData.class);
+        resolveService.initArgs(data);
+        resolveService.createRainfallFile(simu, data);
+        resolveService.callUwSolver(data);
+
+        return (Object) System.currentTimeMillis();
+    }
+
+    /*@ApiOperation(value = "12.testCallExe *")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "path", value = "璺緞", dataType = "String", paramType = "query", example = "20241010095328")
+    })
+    @GetMapping("/testCallExe")
+    public R<Object> testCallExe(String path) {
+        try {
+            DataPo data = new DataPo();
+            data.setInPath(path);
+
+            String str = uwService.callExe(data);
+
+            return success(str);
+        } catch (Exception ex) {
+            return fail(ex, null);
+        }
+    }
+
+    @ApiOperation(value = "13.testResuslt *")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "path", value = "璺緞", dataType = "String", paramType = "query", example = "20241107092342"),
+            @ApiImplicitParam(name = "time", value = "鏃堕棿", dataType = "String", paramType = "query", example = "2024-11-07 09:23:42")
+    })
+    @GetMapping("/testResuslt")
+    public R<Object> testResuslt(String path, String time) {
+        try {
+            DataPo data = new DataPo();
+            data.setEpsg(Integer.valueOf(4548));
+            data.setInPath(path);
+            data.setStartTime(StringHelper.YMDHMS_FORMAT.parse(time));
+
+            resultService.process(data);
+
+            return success("ok");
+        } catch (Exception ex) {
+            return fail(ex, null);
+        }
+    }
+
+    @ApiOperation(value = "14.testSww2Tif *")
+    @GetMapping("/testSww2Tif")
+    public R<Object> testSww2Tif() {
+        try {
+            DataPo data = new DataPo();
+            data.setEpsg(Integer.valueOf(4548));
+            data.setInPath("20241010095328");
+            data.setStartTime(StringHelper.YMDHMS_FORMAT.parse("2024-09-30 00:00:00"));
+
+            Object rs = uwService.copeDrainFiles(data);
+
+            return success(rs);
+        } catch (Exception ex) {
+            return fail(ex, null);
+        }
+    }
+
+    @ApiOperation(value = "15.testRainfall *")
+    @GetMapping("/testRainfall")
+    public R<Object> testRainfall() {
+        try {
+            DataPo data = new DataPo();
+            data.setEpsg(Integer.valueOf(4548));
+            data.setTotal(Double.valueOf(60.0));
+            data.setDuration(Integer.valueOf(60));
+            data.setInPath("20241010095328");
+            data.setStartTime(StringHelper.YMDHMS_FORMAT.parse("2024-07-01 00:00:00"));
+
+            uwService.createRainFile(data);
+
+            return success("ok");
+        } catch (Exception ex) {
+            return fail(ex, null);
+        }
+    }
+
+    @ApiOperation(value = "16.testToken *")
+    @GetMapping("/testToken")
+    public R<Object> testToken() {
+        try {
+            String token = gedbService.getToken();
+
+            return success(token);
+        } catch (Exception ex) {
+            return fail(ex, null);
+        }
+    }
+
+    @ApiOperation(value = "17.testPolygonize *")
+    @GetMapping("/testPolygonize")
+    public R<Object> testPolygonize() {
+        try {
+            ShpHelper.test();
+
+            return success("ok");
+        } catch (Exception ex) {
+            return fail(ex, null);
+        }
+    }
+
+    @ApiOperation(value = "18.testH5 *")
+    @GetMapping("/testH5")
+    public R<Object> testH5() {
+        try {
+            DataPo data = new DataPo();
+            data.setEpsg(Integer.valueOf(4548));
+            data.setInPath("20241010095328");
+            data.setStartTime(StringHelper.YMDHMS_FORMAT.parse("2024-09-30 00:00:00"));
+
+            hdf5Service.test(data);
+
+            return success("ok");
+        } catch (Exception ex) {
+            return fail(ex, null);
+        }
+    }*/
 }

--
Gitblit v1.9.3