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