nc_grid_to_dt {eurocordexr} | R Documentation |
Convert a netcdf array to long format as data.table
Description
Extracts a variable from netcdf, and returns a
data.table
with cell index, date, values, and
optionally: coordinates.
Usage
nc_grid_to_dt(
filename,
variable,
icell_raster_pkg = TRUE,
add_xy = FALSE,
interpolate_to_standard_calendar = FALSE,
date_range,
verbose = FALSE
)
Arguments
filename |
Complete path to .nc file. |
variable |
Name of the variable to extract from |
icell_raster_pkg |
Boolean, if |
add_xy |
Boolean, if |
interpolate_to_standard_calendar |
Boolean, if |
date_range |
(optional) two-element vector of class Date (min, max), which will be used to extract only parts of the netcdf file |
verbose |
Boolean, if |
Details
Coordinates are usually not put in the result, because it saves space. It is
recommended to merge them after the final operations. The unique cell index
is more efficient. However, if you plan to merge to data extracted with the
raster package (assuming the same grid), then cell indices might differ. Set
icell_raster_pkg
to TRUE
, to have the same cell indices. Note
that raster and ncdf4 have different concepts of coordinates (cell corner vs.
cell center), so merging based on coordinates can produce arbitrary results
(besides rounding issues).
Value
A data.table
with columns:
-
icell: Cell index
date: Date of class
Date
, if file has a standard calendar. Date as character, if it has a non-standard calendar (360, noleap) and ifinterpolate_to_standard_calendar
is set toFALSE
. Ifinterpolate_to_standard_calendar
isTRUE
, it's always of classDate
.variable: Values, column is renamed to input
variable
(optional) x,y: Coordinates of netcdf dimensions, will be renamed to dimension names found in array named after input
variable
Warning
Netcdf files can be huge, so loading everything in memory can rapidly crash your R session. Think first about subsetting or aggregating (e.g. using CDO: https://code.mpimet.mpg.de/projects/cdo/).
See Also
The raster and terra packages can also open netcdf files and create
data.frames with raster::as.data.frame
or terra::as.data.frame
. But, it does
not handle non-standard calendars, and returns a data.frame, which is
slower than data.table.
Examples
# example data from EURO-CORDEX (cropped for size)
fn1 <- system.file("extdata", "test1.nc", package = "eurocordexr")
dat <- nc_grid_to_dt(fn1)
str(dat)