使用 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个深度索引及其对应的所有元素。