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