【发布时间】:2014-05-21 14:26:54
【问题描述】:
根据上一个问题 (Faster reading of time series from netCDF?),我重新排列了我的 netCDF 文件以提供快速的时间序列读取 (scripts on github to be cleaned up eventually ...)。
简而言之,为了加快读取速度,我将尺寸从lat, lon, time 重新排列为time, lat, lon。现在,我现有的脚本中断了,因为它们假设尺寸将始终为 lat, lon, time,遵循 ncvar_get 的 ncdf4 文档,用于“开始”参数:
顺序为X-Y-Z-T(即时间维度在最后)
然而,事实并非如此。
此外,通过命令行 netCDF 实用程序 ncdump -h 和 R 函数 ncdf4::nc_open 列出的变量顺序存在相关的不一致。第一个表示维度是预期的(lat, lon, time)顺序,而后者首先看到维度与时间(time, lat, lon)。
举个简单的例子,下载文件test.nc并运行
bash-$ ncdump -h .nc
bash-$ R
R> library(ncdf4)
R> print(nc_open("test.nc")
我想做的是从变量“lwdown”中获取记录 5-15
my.nc <- nc_open("test.nc")
但这不起作用,因为R首先看到时间维度,所以我必须将我的脚本更改为
ncvar_get(my.nc, "lwdown", start = c(5, 1, 1), count = c(10, 1, 1))
更新我的脚本和函数也不错,除了我希望能够从文件中读取数据而不管维度顺序如何。
除了有没有办法概括这个函数,使它独立于维度顺序工作?
【问题讨论】: