Learn R Programming

rdwd (version 1.6.0)

readDWD.grib2: read nwp forecast data

Description

read gridded numerical weather prediction data. Intended to be called via readDWD().

Usage

readDWD.grib2(
  file,
  pack = "terra",
  bargs = NULL,
  toraster = TRUE,
  quiet = rdwdquiet(),
  ...
)

Value

rgdal or raster object, depending on toraster

Arguments

file

Name of file on harddrive, like e.g. cosmo-d2_germany_regular-lat-lon_single-level_2021010100_005_T_2M.grib2.bz2

pack

Char: package used for reading. One of "terra" (the default), "stars" or "rgdal" (for the deprecated cosmo-d2 data). See issue. DEFAULT: "terra"

bargs

Named list of arguments passed to R.utils::bunzip2(), see gargs in readDWD.raster(). DEFAULT: NULL

toraster

Logical: convert rgdal::readGDAL output with raster::raster()? Only used if pack="rgdal". DEFAULT: TRUE

quiet

Silence readGDAL completely, including warnings on discarded ellps / datum. DEFAULT: FALSE through rdwdquiet()

...

Further arguments passed to stars::read_stars(), rgdal::readGDAL() or rgdal::readGDAL().

Author

Berry Boessenkool, berry-b@gmx.de, Jan 2021.

See Also

Examples

Run this code
if (FALSE)  # Excluded from CRAN checks, but run in localtests
nwp_t2m_base <- "ftp://opendata.dwd.de/weather/nwp/icon-d2/grib/15/soiltyp"
nwp_urls <- indexFTP("", base=nwp_t2m_base, dir=tempdir())
# for p instead of soiltyp, icosahedral_model-level files fail with GDAL errors,
# see https://github.com/brry/rdwd/issues/28
# regular-lat-lon_pressure-level files work with pack="terra" or "stars"

nwp_file <- dataDWD(tail(nwp_urls,1), base=nwp_t2m_base, dir=tempdir(), 
                    joinbf=TRUE, dbin=TRUE, read=FALSE)
nwp_data <- readDWD(nwp_file)
terra::plot(nwp_data) # same map with sp::plot
addBorders() # the projection seems to be perfectly good :)

# index of GRIB files
if(FALSE){ # indexing takes about 6 minutes!
grib_base <- "ftp://opendata.dwd.de/weather/nwp/icon-d2/grib"
grib_files <- indexFTP("", base=grib_base, dir=tempdir())
for(f in unique(substr(grib_files, 1,3))) print(grib_files[which(substr(grib_files, 1,3)==f)[1]])
View(data.frame(grep("regular",grib_files, value=TRUE)))
}

Run the code above in your browser using DataLab