继上一个问题之后(从 netCDF 更快地读取时间序列?)我重新排列了我的 netCDF 文件以提供快速的时间序列读取(github上的脚本最终会被清理......).
简而言之,为了使阅读速度更快,我重新排列了尺寸lat, lon, time
to time, lat, lon
。现在,我现有的脚本崩溃了,因为它们假设尺寸始终是lat, lon, time
,遵循 ncdf4 文档ncvar_get
,对于“开始”参数:
顺序为 X-Y-Z-T(即时间维度在最后)
然而,这种情况并非如此。
此外,通过命令行 netCDF 实用程序列出的变量顺序存在相关的不一致ncdump -h
和 R 函数ncdf4::nc_open
。第一个表示维度按预期(纬度、经度、时间)顺序排列,而后者则首先看到时间顺序的维度(时间、纬度、经度)。
作为一个最小的示例,请下载文件test.nc and run
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))
更新我的脚本和函数也不错,只是我希望能够从文件中读取数据,而不管维度顺序如何。
除了有没有办法概括这个函数,使其独立于维度顺序工作?