使用 sdslite 读取 netcdf 数据的子集
Reading subset of netcdf data with sdslite
我正在尝试读取一个相当大的海洋数据变量的 NETCDF 数据子集。该文件本身有 40GB 大。具有三个维度的变量;时间,深度,对应的元素。
当尝试使用 sdslite 库读取所有内容时:
let ds = DataSet.Open("massive_file.nc")
let u : single [,,] = ds.GetData<single[,,]> ("u" )
我得到异常
System.OverflowException: Arithmetic operation resulted in an overflow.
at System.Buffer.ByteLength(Array array)
at Microsoft.Research.Science.Data.NetCDF4.NetCdfVariable`1.ToMultidimArray[T](T[] ncArray, Int32[] shape)
这告诉我我试图一次读取太多数据。但是,我一直在阅读文档,但我终其一生都看不到如何读取这些数据的一个子集。那么有没有人知道如何做到这一点?我可能只是瞎了,错过了,但我肯定不明白。
想通了。
let dims = ds.Dimensions.["nele"].Length
let u : single [,] = ds.GetData<single[,]> ("u", DataSet.ReduceDim(0), DataSet.Range(0, 32), DataSet.Range(0, 1000000) )
将得到第0个时间步索引,32个深度索引及其对应的所有元素。
我正在尝试读取一个相当大的海洋数据变量的 NETCDF 数据子集。该文件本身有 40GB 大。具有三个维度的变量;时间,深度,对应的元素。
当尝试使用 sdslite 库读取所有内容时:
let ds = DataSet.Open("massive_file.nc")
let u : single [,,] = ds.GetData<single[,,]> ("u" )
我得到异常
System.OverflowException: Arithmetic operation resulted in an overflow.
at System.Buffer.ByteLength(Array array)
at Microsoft.Research.Science.Data.NetCDF4.NetCdfVariable`1.ToMultidimArray[T](T[] ncArray, Int32[] shape)
这告诉我我试图一次读取太多数据。但是,我一直在阅读文档,但我终其一生都看不到如何读取这些数据的一个子集。那么有没有人知道如何做到这一点?我可能只是瞎了,错过了,但我肯定不明白。
想通了。
let dims = ds.Dimensions.["nele"].Length
let u : single [,] = ds.GetData<single[,]> ("u", DataSet.ReduceDim(0), DataSet.Range(0, 32), DataSet.Range(0, 1000000) )
将得到第0个时间步索引,32个深度索引及其对应的所有元素。