diff --git a/R/CDORemap.R b/R/CDORemap.R index 56dcec7e84ab38eaa3329b6e50de96d367d17d62..6a9a7e5f39792c3a74be157c6123c4a2c4f5108d 100644 --- a/R/CDORemap.R +++ b/R/CDORemap.R @@ -697,6 +697,8 @@ CDORemap <- function(data_array = NULL, lons, lats, grid, method, if (!is.null(unlimited_dim)) { # This will make ArrayToNc create this dim as unlimited. names(dim(data_array))[unlimited_dim] <- 'time' + # create time variable. The value is random since CDORemap() doesn't support time remapping now and we just want to avoid cdo warning + time_attr <- array(c(1:dim(data_array)[unlimited_dim]), dim = c(dim(data_array)[unlimited_dim])) } if (length(dim(lons)) == 1) { names(dim(lons)) <- lon_dim @@ -758,7 +760,11 @@ CDORemap <- function(data_array = NULL, lons, lats, grid, method, } # dims_before_crop <- dim(subset) # Make sure subset goes along with metadata - easyNCDF::ArrayToNc(setNames(list(subset, lons, lats), c('var', lon_var_name, lat_var_name)), tmp_file) + if (is.null(unlimited_dim)) { + easyNCDF::ArrayToNc(setNames(list(subset, lons, lats), c('var', lon_var_name, lat_var_name)), tmp_file) + } else { + easyNCDF::ArrayToNc(setNames(list(subset, lons, lats, time_attr), c('var', lon_var_name, lat_var_name, 'time')), tmp_file) + } } else { if (is_irregular) { pos_lon <- which(names(dim(data_array)) == lon_dim) @@ -774,7 +780,11 @@ CDORemap <- function(data_array = NULL, lons, lats, grid, method, } } # dims_before_crop <- dim(data_array) - easyNCDF::ArrayToNc(setNames(list(data_array, lons, lats), c('var', lon_var_name, lat_var_name)), tmp_file) + if (is.null(unlimited_dim)) { + easyNCDF::ArrayToNc(setNames(list(data_array, lons, lats), c('var', lon_var_name, lat_var_name)), tmp_file) + } else { + easyNCDF::ArrayToNc(setNames(list(data_array, lons, lats, time_attr), c('var', lon_var_name, lat_var_name, 'time')), tmp_file) + } } sellonlatbox <- '' if (crop) { @@ -787,7 +797,7 @@ CDORemap <- function(data_array = NULL, lons, lats, grid, method, system(paste0("cdo -s ", sellonlatbox, "remap", method, ",", grid, " ", tmp_file, " ", tmp_file2)) }) file.remove(tmp_file) - if (('try-error' %in% class(err)) || err > 0) { + if (is(err, 'try-error') || err > 0) { stop("CDO remap failed.") } ncdf_remapped <- nc_open(tmp_file2)