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