0

我有一个 3 维的 netCDF 文件。第一个维度是经度,范围为 1-464。第二个维度是纬度,范围从 1 到 201。第三个维度是时间,从 1 到 5479。

现在我想从文件中提取某些值。我认为可以使用 start 参数来处理它。我试过这个命令。

test = open.ncdf("rr_0.25deg_reg_1980-1994_v8.0.nc")

data = get.var.ncdf(test,start=c(1:464,1:201,1:365))

但不知何故它不起作用。有人有解决办法吗?

提前致谢...

4

2 回答 2

2

看起来您正在使用ncdfR 中的包。如果可以,我建议使用更新的ncdf4包,它基于 Unidata 的 netcdf 版本 4 库(链接)

回到你的问题。我使用ncdf4包,但我认为ncdf包的工作方式相同。调用函数get.var.ncdf时,还需要显式提供要提取的变量的名称。我认为您可以使用names(test$var).

所以你需要做这样的事情:

# Open the nc file
test = open.ncdf("rr_0.25deg_reg_1980-1994_v8.0.nc")

# Now get the names of the variables in the nc file
names(test$var)

# Get the data from the first variable listed above
# (May not fit in memory)
data = get.var.ncdf(test,varid=names(test$var)[1])

# If you only want a certain range of data. 
# The following will probably not fit in memory either
# data = get.var.ncdf(test,varid=names(test$var)[1])[1:464,1:201,1:365]

对于您的问题,您需要将varid=names(test$var)[1]上面的内容替换为 ,您要提取的变量varid='VARIABLE_NAME'在哪里。VARIABLE_NAME

希望有帮助。

编辑:

我在我的系统上安装了这个ncdf包,上面的代码对我有用!

于 2013-07-11T18:34:50.383 回答
0

您还可以使用 CDO 在将其读入 R 以进行绘图等之前提取 R 之外的时间步长/日期和位置。这样做的好处是您可以直接在坐标空间中工作并直接指定时间步长或日期:

例如

cdo seldate,20100101,20121031 in.nc out.nc
cdo sellonlatbox,lon1,lon2,lat1,lat2 in.nc out.nc
于 2017-11-05T01:23:24.997 回答