From 096abd16d07228aba3189302a14b24f56bb63abd Mon Sep 17 00:00:00 2001
From: 张洋洋 <10611411+yang-yang-z@user.noreply.gitee.com>
Date: 星期五, 10 一月 2025 14:24:02 +0800
Subject: [PATCH] [add]h5读取改造

---
 src/main/java/com/se/simu/utils/ZarrUtils.java |  124 ++++++++++++++++++++++++++++++++---------
 1 files changed, 96 insertions(+), 28 deletions(-)

diff --git a/src/main/java/com/se/simu/utils/ZarrUtils.java b/src/main/java/com/se/simu/utils/ZarrUtils.java
index 736b32c..598ef34 100644
--- a/src/main/java/com/se/simu/utils/ZarrUtils.java
+++ b/src/main/java/com/se/simu/utils/ZarrUtils.java
@@ -4,63 +4,131 @@
 import com.bc.zarr.DataType;
 import com.bc.zarr.ZarrArray;
 import com.bc.zarr.ZarrGroup;
+import com.se.simu.domain.vo.StationRainVo;
 import org.apache.commons.csv.CSVFormat;
 import org.apache.commons.csv.CSVParser;
 import org.apache.commons.csv.CSVRecord;
+
 import java.io.FileReader;
 import java.io.IOException;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
 
 public class ZarrUtils {
-    public static void main(String[] args) throws Exception{
-        // 杈撳叆 CSV 鏂囦欢鐨勮矾寰�
-        String csvFilePath = "D:\\鍩庡競鍐呮稘\\sem\\闆ㄩ噺绔欑偣鏁版嵁\\闆ㄩ噺绔欏寘鍚潗鏍�.csv";
-        // 杈撳嚭 Zarr 鏂囦欢鐨勮矾寰�
-        String zarrFilePath = "D:\\鍩庡競鍐呮稘\\sem\\闆ㄩ噺绔欑偣鏁版嵁\\闆ㄩ噺绔欏寘鍚潗鏍�.zarr";
-        try (CSVParser csvParser = new CSVParser(new FileReader(csvFilePath), CSVFormat.DEFAULT.withFirstRecordAsHeader())) {
+//    public static void main(String[] args) throws Exception {
+//        // 杈撳叆 CSV 鏂囦欢鐨勮矾寰�
+//        String csvFilePath = "D:\\鍩庡競鍐呮稘\\sem\\闆ㄩ噺绔欑偣鏁版嵁\\闆ㄩ噺绔欏寘鍚潗鏍�.csv";
+//        // 杈撳嚭 Zarr 鏂囦欢鐨勮矾寰�
+//        String zarrFilePath = "D:\\鍩庡競鍐呮稘\\sem\\闆ㄩ噺绔欑偣鏁版嵁\\澶у簽鏉�";
+//        try (CSVParser csvParser = new CSVParser(new FileReader(csvFilePath), CSVFormat.DEFAULT.withFirstRecordAsHeader())) {
+//            // 鑾峰彇 CSV 鍒楁暟
+//            int numColumns = csvParser.getHeaderMap().size();
+//            // 璁$畻 CSV 琛屾暟
+//            int numRows = 0;
+//            for (CSVRecord record : csvParser) {
+//                numRows++;
+//            }
+//            // 閲嶆柊鍒濆鍖� CSV 瑙f瀽鍣紝鍥犱负涔嬪墠鐨勯亶鍘嗗凡缁忚�楀敖浜嗚凯浠e櫒
+//            csvParser.close();
+//            CSVParser csvRecords = new CSVParser(new FileReader(csvFilePath), CSVFormat.DEFAULT.withFirstRecordAsHeader());
+//            // 鍒涘缓 Zarr 缁�
+//            Path zarrPath = Paths.get(zarrFilePath);
+//            ZarrGroup zarrGroup = ZarrGroup.create(zarrPath);
+//            // 瀹氫箟 Zarr 鏁扮粍鐨勭淮搴�
+//            int[] shape = {numRows, numColumns};
+//            // 瀹氫箟鍒嗗潡澶у皬
+//            int[] chunks = {1440};
+//            // 鍒涘缓 Zarr 鏁扮粍
+//            ArrayParams params = new ArrayParams();
+//            params.shape(chunks);
+//            params.chunks(chunks);
+//            params.dataType(DataType.f4);
+//            ZarrArray zarrArray = zarrGroup.createArray("rainfall", params);
+//            int rowIndex = 0;
+//            for (CSVRecord record : csvRecords) {
+//                double value = Double.parseDouble(record.get(1));
+//                zarrArray.write(value);
+//                rowIndex++;
+//            }
+//            // 鍏抽棴 Zarr 缁�
+//            //zarrGroup.close();
+//        } catch (IOException e) {
+//            e.printStackTrace();
+//        }
+//    }
+
+    public static void saveZarrRainfall(String path, List<StationRainVo> stationRainVos){
+        try {
             // 鑾峰彇 CSV 鍒楁暟
-            int numColumns = csvParser.getHeaderMap().size();
+            int numColumns = 5;
             // 璁$畻 CSV 琛屾暟
-            int numRows = 0;
-            for (CSVRecord record : csvParser) {
-                numRows++;
-            }
-            // 閲嶆柊鍒濆鍖� CSV 瑙f瀽鍣紝鍥犱负涔嬪墠鐨勯亶鍘嗗凡缁忚�楀敖浜嗚凯浠e櫒
-            csvParser.close();
-            CSVParser  csvRecords = new CSVParser(new FileReader(csvFilePath), CSVFormat.DEFAULT.withFirstRecordAsHeader());
+            int numRows = stationRainVos.size();
             // 鍒涘缓 Zarr 缁�
-            Path zarrPath = Paths.get(zarrFilePath);
+            Path zarrPath = Paths.get(path);
             ZarrGroup zarrGroup = ZarrGroup.create(zarrPath);
             // 瀹氫箟 Zarr 鏁扮粍鐨勭淮搴�
             int[] shape = {numRows, numColumns};
             // 瀹氫箟鍒嗗潡澶у皬
             int[] chunks = {1440};
             // 鍒涘缓 Zarr 鏁扮粍
-            ArrayParams params=new ArrayParams();
+            ArrayParams params = new ArrayParams();
             params.shape(chunks);
             params.chunks(chunks);
             params.dataType(DataType.f4);
-            ZarrArray zarrArray = zarrGroup.createArray("rainfall",params);
+            ZarrArray zarrArray = zarrGroup.createArray("rainfall", params);
             int rowIndex = 0;
-            for (CSVRecord record : csvRecords) {
-                int[] x={rowIndex};
-//                for (int colIndex = 0; colIndex < numColumns; colIndex++) {
-//                    //double value = Double.parseDouble(record.get(colIndex));
-//                    String value = record.get(colIndex);
-//                    int[] y={colIndex};
-//                    //zarrArray.write(value);
-//                    zarrArray.write(value,x,y);
-//                }
-                double value = Double.parseDouble(record.get(1));
+            for (StationRainVo record : stationRainVos) {
+                double value = record.getRainfall();
                 zarrArray.write(value);
                 rowIndex++;
             }
             // 鍏抽棴 Zarr 缁�
             //zarrGroup.close();
-        } catch (IOException e) {
+        } catch (Exception e) {
             e.printStackTrace();
         }
     }
 
+    public static void saveZarrTime(String path, List<StationRainVo> stationRainVos){
+        try {
+            // 鑾峰彇 CSV 鍒楁暟
+            int numColumns = 5;
+            // 璁$畻 CSV 琛屾暟
+            int numRows = stationRainVos.size();
+            // 鍒涘缓 Zarr 缁�
+            Path zarrPath = Paths.get(path);
+            ZarrGroup zarrGroup = ZarrGroup.create(zarrPath);
+            // 瀹氫箟 Zarr 鏁扮粍鐨勭淮搴�
+            int[] shape = {numRows, numColumns};
+            // 瀹氫箟鍒嗗潡澶у皬
+            int[] chunks = {1440};
+            // 鍒涘缓 Zarr 鏁扮粍
+            ArrayParams params = new ArrayParams();
+            params.shape(chunks);
+            params.chunks(chunks);
+            params.dataType(DataType.i4);
+            ZarrArray zarrArray = zarrGroup.createArray("time", params);
+            int rowIndex = 0;
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm");
+            for (StationRainVo record : stationRainVos) {
+                long value = sdf.parse(record.getDatetime()).getTime();
+                zarrArray.write(value);
+                rowIndex++;
+            }
+            // 鍏抽棴 Zarr 缁�
+            //zarrGroup.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public static void main(String[] args) throws Exception{
+        System.out.println("2023/7/31 6:30");
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm");
+        Date date = sdf.parse("2023/7/31 6:30");
+        System.out.println(date.getTime());
+    }
 }

--
Gitblit v1.9.3