From 45e5ecaf4a407f95e318da1cf7380c669899b386 Mon Sep 17 00:00:00 2001 From: wuww <252740454@qq.com> Date: 星期三, 14 五月 2025 10:29:54 +0800 Subject: [PATCH] 解决调用zarr2tif出错 --- src/main/java/com/se/nsl/service/ResolveService.java | 54 +++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 39 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/se/nsl/service/ResolveService.java b/src/main/java/com/se/nsl/service/ResolveService.java index c4f0d3a..73b1841 100644 --- a/src/main/java/com/se/nsl/service/ResolveService.java +++ b/src/main/java/com/se/nsl/service/ResolveService.java @@ -5,6 +5,7 @@ import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSON; import com.se.nsl.config.PropertiesConfig; +import com.se.nsl.domain.dto.Zarr2Tif; import com.se.nsl.domain.po.Rainfall; import com.se.nsl.domain.po.Simu; import com.se.nsl.domain.po.SimuData; @@ -20,8 +21,10 @@ import org.springframework.util.StringUtils; import javax.annotation.Resource; +import java.io.BufferedReader; import java.io.File; import java.io.IOException; +import java.io.InputStreamReader; import java.math.BigDecimal; import java.math.RoundingMode; import java.nio.charset.StandardCharsets; @@ -239,24 +242,45 @@ /** * 璋冪敤zarr2tif */ - private String callZarr2tif(SimuData data) throws Exception { - String zarr2tifBat = config.getZarr2tifBat(); - File dir = new File(zarr2tifBat).getParentFile(); - String configJson = new File(dir, "config.json").getAbsolutePath(); + public String callZarr2tif(SimuData data) throws Exception { + String inPath = config.getInPath() + File.separator + data.getInPath(); + String zarrFile = inPath + File.separator + "result.zarr"; + String geotiffDir = inPath + File.separator + "depth"; + String terrainFile = inPath + File.separator + config.getDemFile(); + String jsonPath = inPath + File.separator + "zarr2tif.json"; - String cmd = String.format("%s \"%s\"", zarr2tifBat, configJson); - String res = callBat(cmd); + Zarr2Tif zarr2Tif = new Zarr2Tif(zarrFile, geotiffDir, terrainFile, data.getStartTime()); + ComHelper.writeJson(jsonPath, JSON.toJSONString(zarr2Tif)); - File resultTifDir = new File(dir, "result_tif"); - File targetDir = new File(config.getInPath(), data.getInPath() + File.separator + "depth"); - System.out.println("targetDir:" + targetDir); - File[] files = resultTifDir.listFiles(); - for (File file : files) { - File target = new File(targetDir, file.getName()); - Files.copy(file.toPath(), target.toPath()); + String cmd = String.format("%s \"%s\"", config.getZarr2tifBat(), jsonPath); + + return callBat2(cmd); + } + + private String callBat2(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; } - - return res; } /*private String callZarr2tif(SimuData data) throws Exception { -- Gitblit v1.9.3