From f984496e9bb3612ce38040a5dd0be548b181e971 Mon Sep 17 00:00:00 2001 From: dcb <xgybdcb@163.com> Date: 星期四, 22 五月 2025 16:13:54 +0800 Subject: [PATCH] 修复时间轴问题 --- src/main/resources/mybatis.xml | 4 + src/main/java/com/se/nsl/service/ResolveService.java | 11 +++++ src/main/java/com/se/nsl/service/TestService.java | 46 ++++++++++------------ 3 files changed, 34 insertions(+), 27 deletions(-) diff --git a/src/main/java/com/se/nsl/service/ResolveService.java b/src/main/java/com/se/nsl/service/ResolveService.java index 63b3fa5..cfe6efc 100644 --- a/src/main/java/com/se/nsl/service/ResolveService.java +++ b/src/main/java/com/se/nsl/service/ResolveService.java @@ -40,6 +40,8 @@ import java.nio.file.StandardCopyOption; import java.sql.Timestamp; import java.text.SimpleDateFormat; +import java.time.Instant; +import java.time.temporal.ChronoUnit; import java.util.*; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -273,7 +275,14 @@ int duration = 3600 * data.getDuration(); // 绉掓暟 if (null != data.getRainfalls() && data.getRainfalls().size() > 1) { - duration = (int) (Math.abs(data.getRainfalls().get(data.getRainfalls().size() - 1).getTime().getTime() - data.getRainfalls().get(0).getTime().getTime()) / 60); + List<Rainfall> rainfalls = data.getRainfalls(); + int size = rainfalls.size(); + Rainfall last = rainfalls.get(size - 1); + Rainfall first = rainfalls.get(0); + Instant end = last.getTime().toInstant(); + Instant start = first.getTime().toInstant(); + long diff = ChronoUnit.SECONDS.between(end, start); + duration = (int) (Math.abs(diff)); } String inPath = config.getInPath() + File.separator + data.getInPath(); diff --git a/src/main/java/com/se/nsl/service/TestService.java b/src/main/java/com/se/nsl/service/TestService.java index 401352b..fda8f1e 100644 --- a/src/main/java/com/se/nsl/service/TestService.java +++ b/src/main/java/com/se/nsl/service/TestService.java @@ -22,6 +22,10 @@ import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; +import java.time.Instant; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.List; @@ -197,6 +201,21 @@ } public void setWaterData(LayerDto layer, List<String> files) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss"); + for (String file : files) { + String fileName = ComHelper.getNameWithExt(file); + // 瑙f瀽涓� LocalDateTime锛堥粯璁ゅ熀浜庣郴缁熸椂鍖猴紝鍙兘闇�鎸囧畾鏃跺尯锛� + LocalDateTime dateTime = LocalDateTime.parse(fileName, formatter); + // 杞崲涓� UTC 鏃堕棿鎴筹紙鎺ㄨ崘锛岄伩鍏嶆椂鍖烘涔夛級 + Instant utcInstant = dateTime.atZone(ZoneId.of("UTC")).toInstant(); + long timestamp = utcInstant.toEpochMilli(); + layer.getWaters().getData().add(timestamp); + } + layer.getDuration().setStart(layer.getWaters().getData().get(0)); + layer.getDuration().setEnd(layer.getWaters().getData().get(layer.getWaters().getData().size() - 1)); + } + + /*public void setWaterData(LayerDto layer, List<String> files) { Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); calendar.set(Calendar.MILLISECOND, 0); @@ -221,7 +240,7 @@ } layer.getDuration().setStart(layer.getWaters().getData().get(0)); layer.getDuration().setEnd(layer.getWaters().getData().get(layer.getWaters().getData().size() - 1)); - } + }*/ public void setWaterHeight(LayerDto layer, List<String> files) { int c = files.size(), step = files.size() / 10; @@ -244,29 +263,6 @@ layer.getExtension().setMaxHeight(ComHelper.getMaxVal(layer.getExtension().getMaxHeight(), 1000000)); layer.getExtension().setMinHeight(ComHelper.getMaxVal(layer.getExtension().getMinHeight(), 1000000)); layer.getExtension().setDiffer(); - } - - private double[] readTifBbox(Dataset ds) { - // 1. 鑾峰彇鍥惧儚灏哄 - int width = ds.getRasterXSize(); - int height = ds.getRasterYSize(); - - // 2. 鑾峰彇GeoTransform鍙傛暟 - double[] geoTransform = new double[6]; - ds.GetGeoTransform(geoTransform); - - // 3. 瑙f瀽GeoTransform鍙傛暟锛堢粡绾害鍧愭爣锛� - double originLon = geoTransform[0]; // 宸︿笂瑙掔粡搴� - double originLat = geoTransform[3]; // 宸︿笂瑙掔含搴� - double pixelWidth = geoTransform[1]; // 缁忓害鏂瑰悜鍒嗚鲸鐜囷紙搴�/鍍忕礌锛� - double pixelHeight = geoTransform[5]; // 绾害鏂瑰悜鍒嗚鲸鐜囷紙搴�/鍍忕礌锛岄�氬父涓鸿礋锛� - - // 4. 璁$畻鍥涜嚦鑼冨洿锛堢粡绾害锛� - double minLon = Math.min(originLon, originLon + width * pixelWidth); - double maxLon = Math.max(originLon, originLon + width * pixelWidth); - double minLat = Math.min(originLat, originLat + height * pixelHeight); - double maxLat = Math.max(originLat, originLat + height * pixelHeight); - return new double[] {minLon, maxLon, minLat, maxLat}; } public void processWaters(ResultDto dto, List<String> files, LayerDto layer) { @@ -434,7 +430,7 @@ for (int[] sizes : layer.getTerrain().getSize()) { String name = ComHelper.getNameWithExt(ds.GetDescription()) + "_" + sizes[0] + "_" + sizes[1]; String tif = dto.getTemp() + File.separator + name + ".tif"; - ComHelper.Resample(ds, tif, sizes[0], sizes[1], layer); +// ComHelper.Resample(ds, tif, sizes[0], sizes[1], layer); if (!new File(tif).exists()) continue; String png = flowPath + File.separator + sizes[0] + "_" + sizes[1] + ".png"; diff --git a/src/main/resources/mybatis.xml b/src/main/resources/mybatis.xml index 7ed3666..d45cc1a 100644 --- a/src/main/resources/mybatis.xml +++ b/src/main/resources/mybatis.xml @@ -29,7 +29,9 @@ <!--鎸囧畾褰撶粨鏋滈泦涓�间负 null 鏃讹紝鏄惁璋冪敤鏄犲皠瀵硅薄鐨� setter锛坢ap 瀵硅薄鏃朵负 put锛夋柟娉�--> <setting name="callSettersOnNulls" value="true"/> <!--鎸囧畾 MyBatis 鎵�鐢ㄦ棩蹇楃殑鍏蜂綋瀹炵幇锛歀OG4J/LOG4J2/SLF4J/STDOUT_LOGGING/NO_LOGGING--> - <setting name="logImpl" value="STDOUT_LOGGING" /> + <!--鎺у埗鍙拌緭鍑� --> +<!-- <setting name="logImpl" value="STDOUT_LOGGING" />--> + <setting name="logImpl" value="NO_LOGGING" /> </settings> <typeAliases> <package name="com.se.nsl.domain"/> -- Gitblit v1.9.3