From 3417cf014a65765e02696c1d121ce58b2b4a8aed Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期二, 08 四月 2025 15:55:36 +0800
Subject: [PATCH] 修改pom.xml

---
 src/main/java/com/se/simu/utils/ZarrUtils.java |   94 +++++++++++++++++++++++++++++-----------------
 1 files changed, 59 insertions(+), 35 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..f85043c 100644
--- a/src/main/java/com/se/simu/utils/ZarrUtils.java
+++ b/src/main/java/com/se/simu/utils/ZarrUtils.java
@@ -4,61 +4,85 @@
 import com.bc.zarr.DataType;
 import com.bc.zarr.ZarrArray;
 import com.bc.zarr.ZarrGroup;
-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 com.se.simu.domain.vo.StationRainVo;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.text.SimpleDateFormat;
+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 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};
+            int check=stationRainVos.size();
+            int[] chunks = {check};
+            int[] offset = {0};
             // 鍒涘缓 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));
-                zarrArray.write(value);
+            double[] values=new double[stationRainVos.size()];
+            for (StationRainVo record : stationRainVos) {
+//                double value = record.getRainfall();
+//                zarrArray.write(value);
+                values[rowIndex]=record.getRainfall();
                 rowIndex++;
             }
+            zarrArray.write(values,chunks,offset);
             // 鍏抽棴 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 check=stationRainVos.size();
+            int[] chunks = {check};
+            int[] offset = {0};
+            // 鍒涘缓 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");
+            long[] values=new long[stationRainVos.size()];
+            for (StationRainVo record : stationRainVos) {
+                values[rowIndex]=sdf.parse(record.getDatetime()).getTime()/1000;
+//                long value = sdf.parse(record.getDatetime()).getTime()/1000;
+//                zarrArray.write(value);
+                rowIndex++;
+            }
+            zarrArray.write(values,chunks,offset);
+            // 鍏抽棴 Zarr 缁�
+            //zarrGroup.close();
+        } catch (Exception e) {
             e.printStackTrace();
         }
     }

--
Gitblit v1.9.3