Skip to contents

The Blended Sea Winds dataset contains globally gridded, high-resolution ocean surface vector winds and wind stresses on a global 0.25° grid, and multiple time resolutions of six-hourly, daily, monthly, and 11-year (1995–2005) climatological monthlies.


bsw(date = NULL, uv_stress = "uv", resolution = "6hrly", ...)



(date/character) date, in the form YYYY-MM-DD if resolution is 6hrly or daily, or in the form YYYY-MM if resolution is monthly. For resolution=clm can be left NULL. If given, must be in the range 1987-07-09 to today-1 (yesterday)


(character) one of uv or stresss, not sure what these mean exactly yet. Default: uv


(character) temporal resolution. one of 6hrly, clm, daily, or monthly. See Details.


curl options passed on to crul::verb-GET


an object of class ncdf4


Products are available from July 9th, 1987 - present.

Uses ncdf4 under the hood to read NetCDF files


See bsw_cache for managing cached files

We only handle the netcdf files for now, we're avoiding the ieee files, see

Citing NOAA and BSW data

Message from NOAA: "We also ask you to acknowledge us in your use of the data to help us justify continued service. This may be done by including text such as: The wind data are acquired from NOAA's National Climatic Data Center, via their website We would also appreciate receiving a copy of the relevant publication."

Temporal resolution

  • 6hrly: 6-hourly, 4 global snapshots (u,v) at UTC 00, 06, 12 and 18Z

  • clm: climatological monthlies; also provided is the scalar mean (u,v,w)

  • daily: averages of the 6hrly time points, thus with a center time 09Z; also provided is the scalar mean, (u,v,w)

  • monthly: averages of daily data; also provided is the scalar mean (u,v,w)



if (FALSE) {
# 6hrly data
## uv
x <- bsw(date = "2017-10-01")
## stress
y <- bsw(date = "2011-08-01", uv_stress = "stress")

# daily
z <- bsw(date = "2017-10-01", resolution = "daily")

# monthly
w <- bsw(date = "2011-08", resolution = "monthly")

# clm
# x <- bsw(resolution = "clm")