rNOMADS-package {rNOMADS} | R Documentation |
An interface to the NOAA Operational Model Archive and Distribution System
Description
Automatically download forecast data from the National Oceanic and Atmospheric Administration's Operational Model Archive and Distribution System (NOMADS) and read it into R.
This can be done in two ways: reading ascii data directly from the server using the DODS-GrADS system or downloading binary files in GRIB1 or GRIB2 format.
The grib capability of rNOMADS
uses an external series of routines called wgrib2
to read operational model data; get wgrib2
at http://www.cpc.ncep.noaa.gov/products/wesley/wgrib2/.
The package will also attempt to call another external routine called wgrib
if the user wishes to read GRIB1 files; get wgrib
at http://www.cpc.ncep.noaa.gov/products/wesley/wgrib.html.
Details
Package: | rNOMADS |
Type: | Package |
Version: | 2.2.0 |
Date: | 2016-03-21 |
License: | GPL v3 |
Author(s)
Daniel C. Bowman danny.c.bowman@gmail.com
References
Bowman, D. C. and Lees, J. M. (2015).
Near real time weather and ocean model data access with rNOMADS.
Computers & Geosciences 78, pp. 88-95.
NOMADS website:
https://nomads.ncep.noaa.gov/
wgrib2 download page:
https://www.cpc.ncep.noaa.gov/products/wesley/wgrib2/
wgrib2 reference:
Ebisuzaki, W, Bokhorst, R., Hyvatti, J., Jovic, D., Nilssen, K,
Pfeiffer, K., Romero, P., Schwarb, M., da Silva, A., Sondell, N., and Varlamov, S. (2011).
wgrib2: read and write GRIB2 files. National Weather Service Climate Prediction Center,
http://www.cpc.ncep.noaa.gov/products/wesley/wgrib2/
wgrib download page:
http://www.cpc.ncep.noaa.gov/products/wesley/wgrib.html
Examples
#Getting temperature for North Carolina, USA,
#6-12 hours ago depending on when the latest model run was.
#Get values at the ground surface and at the 800 mb level
#Then make a contour plot of the surface temperature.
#We use GrADS-DODS here for compatibility.
#Using the Global Forecast System 0.5x0.5 model
## Not run:
urls.out <- GetDODSDates(abbrev = "gfs_0p50")
model.url <- tail(urls.out$url, 1) #Get most recent model date
#Get most recent model run
model.runs <- GetDODSModelRuns(model.url)
model.run <- tail(model.runs$model.run, 1)
#Get ground temperature for the 6 hour prediction
variable <- "tmp2m" #temp at 2 m
time <- c(2,2) #6 hour prediction
lon.dom <- seq(0, 360, by = 0.5) #domain of longitudes in model
lat.dom <- seq(-90, 90, by = 0.5) #domain of latitudes in model
lon <- which((lon.dom >= 360 - 84) & (lon.dom <= 360 - 74)) - 1 #NOMADS indexes start at 0
lat <- which((lat.dom <= 37) & (lat.dom >= 32)) - 1 #NOMADS indexes start at 0
model.data.surface <- DODSGrab(model.url, model.run, variable, time, c(min(lon), max(lon)),
c(min(lat), max(lat)))
lev <- c(8, 8) #800 mb level
variable <- "tmpprs"
model.data.800mb <- DODSGrab(model.url, model.run, variable, time, c(min(lon), max(lon)),
c(min(lat), max(lat)), level = lev)
#Make results into arrays
model.array.surface <- ModelGrid(model.data.surface, c(0.5, 0.5))
model.array.800mb <- ModelGrid(model.data.800mb, c(0.5, 0.5))
#Make a contour plot of the temperature around North Carolina, USA:
contour(x = model.array.surface$x - 360, y = model.array.surface$y,
model.array.surface$z[1,1,,] - 273.15, xlab = "Longitude", ylab = "Latitude",
main = paste("North Carolina Surface Temperatures for",
model.array.surface$fcst.date, "UTC in Celsius"))
dev.new()
contour(x = model.array.800mb$x - 360, y = model.array.800mb$y,
model.array.800mb$z[1,1,,] - 273.15, xlab = "Longitude", ylab = "Latitude",
main = paste("North Carolina Temperatures at 800 mb for",
model.array.surface$fcst.date, "UTC in Celsius"))
## End(Not run)