change_att {cmsafops}R Documentation

Change attributes of a NetCDF variable.

Description

This function can change the name, standard_name, long_name, units, _FillValue and missing_value of a variable. There is no separate outfile, thus use this function with care. The values for v_name, s_name, l_name, u_name, F_val and m_val are optional and will only be changed if they are given. If an attribute is not defined yet, it is added by the function.

Usage

change_att(
  var,
  infile,
  v_name = NULL,
  s_name = NULL,
  l_name = NULL,
  u_name = NULL,
  F_val = NULL,
  m_val = NULL,
  val_prec = "double",
  verbose = FALSE
)

Arguments

var

Name of NetCDF variable (character).

infile

Filename of input NetCDF file. This may include the directory (character).

v_name

New variable name (character).

s_name

New standard name (character).

l_name

New long name (character).

u_name

New units name (character).

F_val

New fill value (numeric).

m_val

New missing value (numeric).

val_prec

Precision of the FillValue and missing value (character). Default is double.

verbose

logical; if TRUE, progress messages are shown

Value

The variable information within the infile NetCDF is changed.

Examples

## Create an example NetCDF file with a similar structure as used by CM
## SAF. The file is created with the ncdf4 package.  Alternatively
## example data can be freely downloaded here: <https://wui.cmsaf.eu/>

library(ncdf4)

## create some (non-realistic) example data

lon <- seq(5, 15, 0.5)
lat <- seq(45, 55, 0.5)
time <- seq(as.Date("2000-01-01"), as.Date("2010-12-31"), "month")
origin <- as.Date("1983-01-01 00:00:00")
time <- as.numeric(difftime(time, origin, units = "hour"))
data <- array(250:350, dim = c(21, 21, 132))

## create NetCDF

x <- ncdim_def(name = "lon", units = "degrees_east", vals = lon)
y <- ncdim_def(name = "lat", units = "degrees_north", vals = lat)
t <- ncdim_def(name = "time", units = "hours since 1983-01-01 00:00:00",
 vals = time, unlim = TRUE)
var1 <- ncvar_def("Data1", "W m-2", list(x, y, t), -1, prec = "short")
vars <- list(var1)
ncnew <- nc_create(file.path(tempdir(),"CMSAF_example_file.nc"), vars)
ncvar_put(ncnew, var1, data)
ncatt_put(ncnew, "lon", "standard_name", "longitude", prec = "text")
ncatt_put(ncnew, "lat", "standard_name", "latitude", prec = "text")
nc_close(ncnew)

## Change the variable and standard name of the example CM SAF NetCDF
## file:
change_att(var = "Data1", infile = file.path(tempdir(),"CMSAF_example_file.nc"), v_name = "SIS",
 s_name = "surface_downwelling_shortwave_flux_in_air")

unlink(file.path(tempdir(),"CMSAF_example_file.nc"))

[Package cmsafops version 1.3.0 Index]