package com.se.simu.utils;
|
|
import com.bc.zarr.ArrayParams;
|
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 java.nio.file.Path;
|
import java.nio.file.Paths;
|
|
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())) {
|
// 获取 CSV 列数
|
int numColumns = csvParser.getHeaderMap().size();
|
// 计算 CSV 行数
|
int numRows = 0;
|
for (CSVRecord record : csvParser) {
|
numRows++;
|
}
|
// 重新初始化 CSV 解析器,因为之前的遍历已经耗尽了迭代器
|
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) {
|
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);
|
rowIndex++;
|
}
|
// 关闭 Zarr 组
|
//zarrGroup.close();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
|
}
|