From 9db8d773af4f886cf0652b0ce303631a90692a50 Mon Sep 17 00:00:00 2001 From: wuww <252740454@qq.com> Date: 星期日, 04 五月 2025 14:28:24 +0800 Subject: [PATCH] 调用UW的Bat --- src/main/java/com/se/nsl/service/ResolveService.java | 89 +++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 87 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/se/nsl/service/ResolveService.java b/src/main/java/com/se/nsl/service/ResolveService.java index 0c7d47a..fd7425a 100644 --- a/src/main/java/com/se/nsl/service/ResolveService.java +++ b/src/main/java/com/se/nsl/service/ResolveService.java @@ -1,20 +1,31 @@ package com.se.nsl.service; +import cn.hutool.core.io.FileUtil; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSON; import com.se.nsl.config.PropertiesConfig; import com.se.nsl.domain.po.DataPo; import com.se.nsl.domain.po.Simu; import com.se.nsl.domain.po.SimuData; +import com.se.nsl.domain.vo.ConfigVo; +import com.se.nsl.helper.ComHelper; import com.se.nsl.helper.StringHelper; 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.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.io.BufferedReader; +import java.io.File; +import java.io.IOException; +import java.io.InputStreamReader; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; import java.sql.Timestamp; import java.util.Date; import java.util.concurrent.ExecutorService; @@ -29,6 +40,8 @@ @Resource PropertiesConfig config; + @Autowired + private UwService uwService; public int start(Simu simu) { Date now = new Date(); @@ -77,7 +90,10 @@ try { DataPo data = JSONUtil.toBean(simu.getData(), DataPo.class); - update(simu, 1, null); + update(simu, 1, "寮�濮�"); + + initArgs(data); + String rs = callUwSolver(data); //gedbService.copeVectors(token, data, db); //update(simu, 3, null); @@ -101,7 +117,76 @@ simuService.updateById(simu); } - private void initArgs(){ + /** + * 鍒濆鍖栧弬鏁� + */ + private void initArgs(DataPo data) throws IOException { + String inPath = config.getInPath() + File.separator + data.getInPath(); + createDir(inPath); + createDir(inPath + File.separator + "depth"); + createDir(inPath + File.separator + "velocity"); + createDir(config.getOutPath() + File.separator + data.getOutPath()); + // 涓存椂澶嶅埗楂樼▼tif锛屼互鍚庨渶瑕佽嚜琛屽垏鍓� + File uwBat = new File(config.getUwSolverBat()); + String sourceTif = uwBat.getParent() + File.separator + "data" + File.separator + "Hillzone.tif"; + String targetTif = inPath + File.separator + config.getDemFile(); + Files.copy(Paths.get(sourceTif), Paths.get(targetTif), StandardCopyOption.REPLACE_EXISTING); + } + + private void createDir(String path) { + File f = new File(path); + if (f.exists() && f.isDirectory()) { + FileUtil.del(f); + } + f.mkdirs(); + } + + /** + * 璋冪敤UWSolver + */ + private String callUwSolver(DataPo data) throws Exception { + File uwBat = new File(config.getUwSolverBat()); + + ConfigVo vo = new ConfigVo(data.getDuration(), config.getSaveFrames()); + //String configFile = uwBat.getParent() + File.separator + data.getInPath() + ".json"; + String configFile = config.getInPath() + File.separator + data.getInPath() + File.separator + data.getInPath() + ".json"; + ComHelper.writeJson(configFile, JSON.toJSONString(vo)); + + String cmd = String.format("%s %s", config.getUwSolverBat(), configFile); + + return callBat(cmd); + } + + private String callZarr2tif(DataPo data) throws Exception { + String cmd = ""; + + return callBat(cmd); + } + + private String callBat(String cmd) { + try { + ProcessBuilder pb = new ProcessBuilder("cmd", "/c", cmd); + pb.redirectErrorStream(true); // 鍚堝苟閿欒娴佸埌鏍囧噯杈撳嚭 + + Process process = pb.start(); + process.getOutputStream().close(); + + /*StringBuilder sb = new StringBuilder(); + try (BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream(), "GBK"))) { + String line; + while ((line = reader.readLine()) != null) { + System.out.println(line); + sb.append(line); + } + }*/ + + int exitCode = process.waitFor(); + + return "ok"; // sb.toString(); + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + return null; + } } } -- Gitblit v1.9.3