R 或 CDO 中几个 netcdf 层之间随时间的每日时间步长插值
Daily time steps interpolation between several netcdf layers over time in R or CDO
我对只有一个时间层的空间变量(假设 var_A_1985.nc、var_A_2000.nc 和 var_A_2010.nc)随时间进行了多次观察。是否可以通过对这些值进行线性插值来有效地重建从 1985 年 1 月 1 日到 2010 年 1 月 1 日的每日值?
我目前探索了两个选项:
气候数据运算符 (CDO):我看到了运算符 inttime 和 intyear,但这些似乎不适用于我的情况。
R 作为 RasterBrick 元素操作
类似于:
library(raster)
library(ncdf4)
setwd(mypath)
var_A_1985 <- raster("var_A_1985.nc")
var_A_2000 <- raster("var_A_2000.nc")
var_A_brick <- brick(var_A_1985, var_A_2000)
brick_2<- brick(lapply(1:n_days, function(x) raster::raster(matrix(NA, nrow(var_A_1985), ncol(var_A_1985)))) #with n_days representing the number of days between 01/01/1985 and 01/01/2000
extremes<- c(1, n_days)
for (i in 1:2) {
brick_2[[extremes[i]]]=var_A_brick[[1]]
}
var_A_brick_filled <- approxNA(brick_2, method = 'linear')
#and then write this the new netcdf with daily values
第二种方法确实有效,但需要很长时间。有没有更有效的方法来做到这一点?
您可以按如下方式使用 CDO 执行此操作:
cdo -inttime,1985-01-01,12:00:00,1day -mergetime var*.nc outfile
当然要调整开始时间。
我对只有一个时间层的空间变量(假设 var_A_1985.nc、var_A_2000.nc 和 var_A_2010.nc)随时间进行了多次观察。是否可以通过对这些值进行线性插值来有效地重建从 1985 年 1 月 1 日到 2010 年 1 月 1 日的每日值?
我目前探索了两个选项:
气候数据运算符 (CDO):我看到了运算符 inttime 和 intyear,但这些似乎不适用于我的情况。
R 作为 RasterBrick 元素操作
类似于:
library(raster)
library(ncdf4)
setwd(mypath)
var_A_1985 <- raster("var_A_1985.nc")
var_A_2000 <- raster("var_A_2000.nc")
var_A_brick <- brick(var_A_1985, var_A_2000)
brick_2<- brick(lapply(1:n_days, function(x) raster::raster(matrix(NA, nrow(var_A_1985), ncol(var_A_1985)))) #with n_days representing the number of days between 01/01/1985 and 01/01/2000
extremes<- c(1, n_days)
for (i in 1:2) {
brick_2[[extremes[i]]]=var_A_brick[[1]]
}
var_A_brick_filled <- approxNA(brick_2, method = 'linear')
#and then write this the new netcdf with daily values
第二种方法确实有效,但需要很长时间。有没有更有效的方法来做到这一点?
您可以按如下方式使用 CDO 执行此操作:
cdo -inttime,1985-01-01,12:00:00,1day -mergetime var*.nc outfile
当然要调整开始时间。