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