From 670044227f872b0d89cb030d4afbf9db6e7dde42 Mon Sep 17 00:00:00 2001 From: Scott Chamberlain Date: Thu, 18 Jun 2015 14:54:44 -0700 Subject: [PATCH] added buoy fxns back with ncdf as a Suggest fix #100 --- .travis.yml | 1 + DESCRIPTION | 8 +- Makefile | 24 +-- NAMESPACE | 5 +- R/buoy.R | 182 ++++++++++++++++++ inst/vign/buoy_vignette.Rmd | 72 +++++++ inst/vign/buoy_vignette.md | 162 ++++++++++++++++ inst/vign/cache/__packages | 1 + ...k-6_06db865bc85a57593469dea6bfca0483.RData | Bin 3146 -> 0 bytes ...unk-6_06db865bc85a57593469dea6bfca0483.rdb | Bin 50 -> 0 bytes ...unk-6_06db865bc85a57593469dea6bfca0483.rdx | Bin 129 -> 0 bytes ...k-6_181b628d1c6cd74a26b72d5fde321639.RData | Bin 0 -> 3036 bytes ...nk-6_181b628d1c6cd74a26b72d5fde321639.rdb} | 0 ...unk-6_181b628d1c6cd74a26b72d5fde321639.rdx | Bin 0 -> 113 bytes ...k-7_d349084176e47e1c61a402f4bbcdeac5.RData | Bin 3080 -> 0 bytes ...unk-7_d349084176e47e1c61a402f4bbcdeac5.rdx | Bin 113 -> 0 bytes ...k-7_d7709fb8940f561fcabecd7373a4f17b.RData | Bin 0 -> 3044 bytes ...nk-7_d7709fb8940f561fcabecd7373a4f17b.rdb} | 0 ...unk-7_d7709fb8940f561fcabecd7373a4f17b.rdx | Bin 0 -> 113 bytes ...k-8_04f16f7cc021520c25e1718535043ef5.RData | Bin 3250 -> 0 bytes ...unk-8_04f16f7cc021520c25e1718535043ef5.rdx | Bin 113 -> 0 bytes ...k-8_7681af405e52be8e7f236efeb017cc2f.RData | Bin 0 -> 3047 bytes ...nk-8_7681af405e52be8e7f236efeb017cc2f.rdb} | 0 ...unk-8_7681af405e52be8e7f236efeb017cc2f.rdx | Bin 0 -> 113 bytes ...k-9_70cbb1cc91384cd880b98d6af5706c8e.RData | Bin 0 -> 3039 bytes ...unk-9_70cbb1cc91384cd880b98d6af5706c8e.rdb | 0 ...unk-9_70cbb1cc91384cd880b98d6af5706c8e.rdx | Bin 0 -> 113 bytes ...k-9_a2785f07e4c58300ef4d190ebbb2aa63.RData | Bin 3165 -> 0 bytes ...unk-9_a2785f07e4c58300ef4d190ebbb2aa63.rdx | Bin 113 -> 0 bytes man/buoy.Rd | 74 +++++++ tests/testthat/test-buoy.R | 42 ++++ vignettes/buoy_vignette.Rmd | 162 ++++++++++++++++ 32 files changed, 714 insertions(+), 19 deletions(-) create mode 100644 R/buoy.R create mode 100644 inst/vign/buoy_vignette.Rmd create mode 100644 inst/vign/buoy_vignette.md delete mode 100644 inst/vign/cache/unnamed-chunk-6_06db865bc85a57593469dea6bfca0483.RData delete mode 100644 inst/vign/cache/unnamed-chunk-6_06db865bc85a57593469dea6bfca0483.rdb delete mode 100644 inst/vign/cache/unnamed-chunk-6_06db865bc85a57593469dea6bfca0483.rdx create mode 100644 inst/vign/cache/unnamed-chunk-6_181b628d1c6cd74a26b72d5fde321639.RData rename inst/vign/cache/{unnamed-chunk-7_d349084176e47e1c61a402f4bbcdeac5.rdb => unnamed-chunk-6_181b628d1c6cd74a26b72d5fde321639.rdb} (100%) create mode 100644 inst/vign/cache/unnamed-chunk-6_181b628d1c6cd74a26b72d5fde321639.rdx delete mode 100644 inst/vign/cache/unnamed-chunk-7_d349084176e47e1c61a402f4bbcdeac5.RData delete mode 100644 inst/vign/cache/unnamed-chunk-7_d349084176e47e1c61a402f4bbcdeac5.rdx create mode 100644 inst/vign/cache/unnamed-chunk-7_d7709fb8940f561fcabecd7373a4f17b.RData rename inst/vign/cache/{unnamed-chunk-8_04f16f7cc021520c25e1718535043ef5.rdb => unnamed-chunk-7_d7709fb8940f561fcabecd7373a4f17b.rdb} (100%) create mode 100644 inst/vign/cache/unnamed-chunk-7_d7709fb8940f561fcabecd7373a4f17b.rdx delete mode 100644 inst/vign/cache/unnamed-chunk-8_04f16f7cc021520c25e1718535043ef5.RData delete mode 100644 inst/vign/cache/unnamed-chunk-8_04f16f7cc021520c25e1718535043ef5.rdx create mode 100644 inst/vign/cache/unnamed-chunk-8_7681af405e52be8e7f236efeb017cc2f.RData rename inst/vign/cache/{unnamed-chunk-9_a2785f07e4c58300ef4d190ebbb2aa63.rdb => unnamed-chunk-8_7681af405e52be8e7f236efeb017cc2f.rdb} (100%) create mode 100644 inst/vign/cache/unnamed-chunk-8_7681af405e52be8e7f236efeb017cc2f.rdx create mode 100644 inst/vign/cache/unnamed-chunk-9_70cbb1cc91384cd880b98d6af5706c8e.RData create mode 100644 inst/vign/cache/unnamed-chunk-9_70cbb1cc91384cd880b98d6af5706c8e.rdb create mode 100644 inst/vign/cache/unnamed-chunk-9_70cbb1cc91384cd880b98d6af5706c8e.rdx delete mode 100644 inst/vign/cache/unnamed-chunk-9_a2785f07e4c58300ef4d190ebbb2aa63.RData delete mode 100644 inst/vign/cache/unnamed-chunk-9_a2785f07e4c58300ef4d190ebbb2aa63.rdx create mode 100644 man/buoy.Rd create mode 100644 tests/testthat/test-buoy.R create mode 100644 vignettes/buoy_vignette.Rmd diff --git a/.travis.yml b/.travis.yml index bd9964d6..19256ece 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,7 @@ language: r r_binary_packages: - rgdal + - ncdf r_github_packages: - jimhester/robustr diff --git a/DESCRIPTION b/DESCRIPTION index 192c0510..936cff4d 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -7,9 +7,8 @@ Description: Client for many 'NOAA' data sources including the 'NCDC' have an interface for 'NOAA' sea ice data, the 'NOAA' severe weather inventory, 'NOAA' Historical Observing Metadata Repository ('HOMR') data, 'NOAA' storm data via 'IBTrACS', and tornado data via the 'NOAA' storm prediction - center. 'NOAA' buoy data is only on the buoy branch in the 'Github' repository - for this package (see url below). -Version: 0.3.9.9700 + center. +Version: 0.3.9.9800 License: MIT + file LICENSE Authors@R: c( person("Hart", "Edmund", role = "ctb", email = "Edmund.m.hart@gmail.com"), @@ -38,4 +37,5 @@ Suggests: testthat, roxygen2, knitr, - taxize + taxize, + ncdf diff --git a/Makefile b/Makefile index 3984764f..78591a82 100644 --- a/Makefile +++ b/Makefile @@ -1,27 +1,23 @@ -all: move rmd2md cleanup +all: move rmd2md move: cp inst/vign/ncdc_vignette.md vignettes;\ cp inst/vign/ncdc_attributes.md vignettes;\ cp inst/vign/ncdc_workflow.md vignettes;\ - cp inst/vign/erddap_vignette.md vignettes;\ cp inst/vign/swdi_vignette.md vignettes;\ cp inst/vign/seaice_vignette.md vignettes;\ cp inst/vign/homr_vignette.md vignettes;\ cp inst/vign/storms_vignette.md vignettes;\ + cp inst/vign/buoy_vignette.md vignettes;\ cp -r inst/vign/figure/* vignettes/figure rmd2md: cd vignettes;\ - cp ncdc_vignette.md ncdc_vignette.Rmd;\ - cp ncdc_attributes.md ncdc_attributes.Rmd;\ - cp ncdc_workflow.md ncdc_workflow.Rmd;\ - cp erddap_vignette.md erddap_vignette.Rmd;\ - cp seaice_vignette.md seaice_vignette.Rmd;\ - cp swdi_vignette.md swdi_vignette.Rmd;\ - cp homr_vignette.md homr_vignette.Rmd;\ - cp storms_vignette.md storms_vignette.Rmd - -cleanup: - cd vignettes;\ - rm ncdc_vignette.md ncdc_attributes.md ncdc_workflow.md erddap_vignette.md swdi_vignette.md seaice_vignette.md homr_vignette.md storms_vignette.md + mv ncdc_vignette.md ncdc_vignette.Rmd;\ + mv ncdc_attributes.md ncdc_attributes.Rmd;\ + mv ncdc_workflow.md ncdc_workflow.Rmd;\ + mv seaice_vignette.md seaice_vignette.Rmd;\ + mv swdi_vignette.md swdi_vignette.Rmd;\ + mv homr_vignette.md homr_vignette.Rmd;\ + mv storms_vignette.md storms_vignette.Rmd;\ + mv buoy_vignette.md buoy_vignette.Rmd diff --git a/NAMESPACE b/NAMESPACE index 3c058e3b..51f1aa22 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -1,6 +1,7 @@ # Generated by roxygen2 (4.1.1): do not edit by hand S3method(ncdc_plot,ncdc_data) +S3method(print,buoy) S3method(print,ghcnd) S3method(print,ghcnd_stations) S3method(print,isd) @@ -16,6 +17,8 @@ S3method(type_summ,integer) S3method(type_summ,logical) S3method(type_summ,matrix) S3method(type_summ,numeric) +export(buoy) +export(buoys) export(erddap_clear_cache) export(erddap_data) export(erddap_datasets) @@ -42,7 +45,6 @@ export(is.ncdc_locs_cats) export(is.ncdc_stations) export(isd) export(isd_stations) -export(latlong2bbox) export(ncdc) export(ncdc_combine) export(ncdc_datacats) @@ -79,6 +81,7 @@ export(theme_ice) export(tornadoes) export(type_summ) import(ggplot2) +importFrom(XML,htmlParse) importFrom(XML,xmlParse) importFrom(XML,xmlToList) importFrom(XML,xmlValue) diff --git a/R/buoy.R b/R/buoy.R new file mode 100644 index 00000000..ec9be63f --- /dev/null +++ b/R/buoy.R @@ -0,0 +1,182 @@ +#' Get NOAA buoy data from the National Buoy Data Center +#' +#' @importFrom XML htmlParse +#' @export +#' +#' @param dataset (character) Dataset name to query. See below for Details. Required +#' @param buoyid (integer) Buoy ID. Required +#' @param datatype (character) Data type, one of 'c', 'cc', 'p', 'o' +#' @param year (integer) Year of data collection +#' @param ... Curl options passed on to \code{\link[httr]{GET}} (optional) +#' +#' @details Functions: +#' \itemize{ +#' \item buoys Get available buoys given a dataset name +#' \item buoy Get data given some combination of dataset name, buoy ID, year, and datatype +#' } +#' +#' Options for the dataset parameter. One of: +#' \itemize{ +#' \item adcp - Acoustic Doppler Current Profiler data +#' \item adcp2 - MMS Acoustic Doppler Current Profiler data +#' \item cwind - Continuous Winds data +#' \item dart - Deep-ocean Assessment and Reporting of Tsunamis data +#' \item mmbcur - Marsh-McBirney Current Measurements data +#' \item ocean - Oceanographic data +#' \item pwind - Peak Winds data +#' \item stdmet- Standard Meteorological data +#' \item swden - Spectral Wave Density data with Spectral Wave Direction data +#' \item wlevel - Water Level data +#' } +#' @references \url{http://www.ndbc.noaa.gov/} and \url{http://dods.ndbc.noaa.gov/} +#' @examples \dontrun{ +#' # Get available buoys +#' buoys(dataset = 'cwind') +#' +#' # Get data for a buoy +#' ## if no year or datatype specified, we get the first file +#' buoy(dataset = 'cwind', buoyid = 46085) +#' +#' # Including specific year +#' buoy(dataset = 'cwind', buoyid = 41001, year = 1999) +#' +#' # Including specific year and datatype +#' buoy(dataset = 'cwind', buoyid = 41001, year = 2008, datatype = "cc") +#' buoy(dataset = 'cwind', buoyid = 41001, year = 2008, datatype = "cc") +#' +#' # Other datasets +#' buoy(dataset = 'ocean', buoyid = 42856) +#' +#' # curl debugging +#' library('httr') +#' buoy(dataset = 'cwind', buoyid = 46085, config=verbose()) +#' } +buoy <- function(dataset, buoyid, year=NULL, datatype=NULL, ...) { + availbuoys <- buoys(dataset, ...) + page <- availbuoys[grep(buoyid, availbuoys$id), "url"] + files <- buoy_files(page, buoyid, ...) + if (length(files) == 0) stop("No data files found, try a different search", call. = FALSE) + fileuse <- pick_year_type(files, year, datatype) + toget <- buoy_single_file_url(dataset, buoyid, fileuse) + output <- tempdir() + ncfile <- get_ncdf_file(toget, buoyid, files[[1]], output) + buoy_collect_data(ncfile) +} + +pick_year_type <- function(x, y, z) { + if (is.null(y) && is.null(z)) { + message("Using ", x[[1]]) + return(x[[1]]) + } else if (is.null(z) && !is.null(y)) { + tt <- pickme(y, x) + message("Using ", tt) + return(tt) + } else if (is.null(y) && !is.null(z)) { + tt <- pickme(z, x) + message("Using ", tt) + return(tt) + } else { + pickme(paste0(z, y), x) + } +} + +pickme <- function(findme, against) { + tmp <- grep(findme, against, value = TRUE) + if (length(tmp) > 1) tmp[1] else tmp +} + +#' @export +#' @rdname buoy +buoys <- function(dataset, ...) { + url <- sprintf('http://dods.ndbc.noaa.gov/thredds/catalog/data/%s/catalog.html', dataset) + res <- GET(url, ...) + tt <- content(res, as = "text") + html <- htmlParse(tt) + folders <- xpathSApply(html, "//a//tt", xmlValue) + folders <- grep("/", folders, value = TRUE) + tmp <- paste0(sprintf('http://dods.ndbc.noaa.gov/thredds/catalog/data/%s/', dataset), folders, "catalog.html") + data.frame(id = gsub("/", "", folders), url = tmp, stringsAsFactors = FALSE) +} + +# Get NOAA buoy data from the National Buoy Data Center +buoy_files <- function(path, buoyid, ...){ + singlebuoy_files <- GET(path, ...) + tt_sbf <- content(singlebuoy_files, as = "text") + html_sbf <- htmlParse(tt_sbf) + files_sbf <- grep(".nc$", xpathSApply(html_sbf, "//a//tt", xmlValue), value = TRUE) + gsub(buoyid, "", files_sbf) +} + +# Make url for a single NOAA buoy data file +buoy_single_file_url <- function(dataset, buoyid, file){ + sprintf('http://dods.ndbc.noaa.gov/thredds/fileServer/data/%s/%s/%s%s', + dataset, buoyid, buoyid, file) +} + +# Download a single ncdf file +get_ncdf_file <- function(path, buoyid, file, output){ + res <- GET(path) + outpath <- sprintf("%s/%s%s", output, buoyid, file) + writeBin(content(res), outpath) + return(outpath) +} + +# Download a single ncdf file +buoy_collect_data <- function(path){ + nc <- ncdf::open.ncdf(path) + + out <- list() + dims <- names(nc$dim) + for (i in seq_along(dims)) { + out[[dims[i]]] <- ncdf::get.var.ncdf(nc, nc$dim[[dims[i]]]) + } + out$time <- sapply(out$time, convert_time) + + vars <- names(nc$var) + outvars <- list() + for (i in seq_along(vars)) { + outvars[[ vars[i] ]] <- as.vector(ncdf::get.var.ncdf(nc, vars[i])) + } + df <- do.call("cbind.data.frame", outvars) + + rows <- length(outvars[[1]]) + out <- lapply(out, function(z) rep(z, each = rows/length(z))) + + meta <- data.frame(out, stringsAsFactors = FALSE) + alldf <- cbind(meta, df) + + nms <- c('name','prec','units','longname','missval','hasAddOffset','hasScaleFact') + meta <- lapply(vars, function(x) nc$var[[x]][names(nc$var[[x]]) %in% nms]) + names(meta) <- vars + + invisible(ncdf::close.ncdf(nc)) + all <- list(meta = meta, data = alldf) + class(all) <- "buoy" + return( all ) +} + +#' @export +print.buoy <- function(x, ..., n = 10) { + vars <- names(x$meta) + dims <- dim(x$data) + cat(sprintf('Dimensions (rows/cols): [%s X %s]', dims[1], dims[2]), "\n") + cat(sprintf('%s variables: [%s]', length(vars), paste0(vars, collapse = ", ")), "\n\n") + trunc_mat_(x$data, n = n) +} + +convert_time <- function(n = NULL, isoTime = NULL) { +# if (!is.null(n)) stopifnot(is.numeric(n)) +# if (!is.null(isoTime)) stopifnot(is.character(isoTime)) +# check1notboth(n, isoTime) + format(as.POSIXct(noaa_compact(list(n, isoTime))[[1]], origin = "1970-01-01T00:00:00Z", tz = "UTC"), + format = "%Y-%m-%dT%H:%M:%SZ", tz = "UTC") +} + +# check1notboth <- function(x, y) { +# if (is.null(x) && is.null(y)) { +# stop(sprintf("One of %s or %s must be non-NULL", deparse(substitute(x)), deparse(substitute(y))), call. = FALSE) +# } +# if (!is.null(x) && !is.null(y)) { +# stop(sprintf("Supply only one of %s or %s", deparse(substitute(x)), deparse(substitute(y))), call. = FALSE) +# } +# } diff --git a/inst/vign/buoy_vignette.Rmd b/inst/vign/buoy_vignette.Rmd new file mode 100644 index 00000000..eceb31a5 --- /dev/null +++ b/inst/vign/buoy_vignette.Rmd @@ -0,0 +1,72 @@ + + +```{r echo=FALSE} +knitr::opts_chunk$set( + fig.width = 10, + comment = "#>", + warning = FALSE, + message = FALSE +) +``` + +buoy vignette +====== + +This vignette covers NOAA buoy data from the National Buoy Data Center. The +main function to get data is `buoy`, while `buoys` can be used to +get the buoy IDs and web pages for each buoy. + +```{r} +library('rnoaa') +``` + +## Find out what buoys are available in a dataset + +```{r} +res <- buoys(dataset = "cwind") +``` + +Inspect the buoy ids, and the urls for them + +```{r} +head(res) +``` + +Or browse them on the web + +```{r eval=FALSE} +browseURL(res[1, 2]) +``` + +## Get buoy data + +With `buoy` you can get data for a particular dataset, buoy id, year, and datatype. + +Get data for a buoy + +> if no year or datatype specified, we get the first file + +```{r cache=TRUE} +buoy(dataset = 'cwind', buoyid = 46085) +``` + +Including year + +```{r cache=TRUE} +buoy(dataset = 'cwind', buoyid = 41001, year = 1999) +``` + +Including year and datatype + +```{r cache=TRUE} +buoy(dataset = 'cwind', buoyid = 41001, year = 2008, datatype = "cc") +``` + +Including just datatype + +```{r cache=TRUE} +buoy(dataset = 'cwind', buoyid = 41001, datatype = "cc") +``` diff --git a/inst/vign/buoy_vignette.md b/inst/vign/buoy_vignette.md new file mode 100644 index 00000000..f730e47a --- /dev/null +++ b/inst/vign/buoy_vignette.md @@ -0,0 +1,162 @@ + + + + +buoy vignette +====== + +This vignette covers NOAA buoy data from the National Buoy Data Center. The +main function to get data is `buoy`, while `buoys` can be used to +get the buoy IDs and web pages for each buoy. + + +```r +library('rnoaa') +``` + +## Find out what buoys are available in a dataset + + +```r +res <- buoys(dataset = "cwind") +``` + +Inspect the buoy ids, and the urls for them + + +```r +head(res) +``` + +``` +#> id +#> 1 41001 +#> 2 41002 +#> 3 41004 +#> 4 41006 +#> 5 41008 +#> 6 41009 +#> url +#> 1 http://dods.ndbc.noaa.gov/thredds/catalog/data/cwind/41001/catalog.html +#> 2 http://dods.ndbc.noaa.gov/thredds/catalog/data/cwind/41002/catalog.html +#> 3 http://dods.ndbc.noaa.gov/thredds/catalog/data/cwind/41004/catalog.html +#> 4 http://dods.ndbc.noaa.gov/thredds/catalog/data/cwind/41006/catalog.html +#> 5 http://dods.ndbc.noaa.gov/thredds/catalog/data/cwind/41008/catalog.html +#> 6 http://dods.ndbc.noaa.gov/thredds/catalog/data/cwind/41009/catalog.html +``` + +Or browse them on the web + + +```r +browseURL(res[1, 2]) +``` + +## Get buoy data + +With `buoy` you can get data for a particular dataset, buoy id, year, and datatype. + +Get data for a buoy + +> if no year or datatype specified, we get the first file + + +```r +buoy(dataset = 'cwind', buoyid = 46085) +``` + +``` +#> Dimensions (rows/cols): [33486 X 5] +#> 2 variables: [wind_dir, wind_spd] +#> +#> time latitude longitude wind_dir wind_spd +#> 1 2007-05-05T02:00:00Z 55.855 -142.559 331 2.8 +#> 2 2007-05-05T02:10:00Z 55.855 -142.559 328 2.6 +#> 3 2007-05-05T02:20:00Z 55.855 -142.559 329 2.2 +#> 4 2007-05-05T02:30:00Z 55.855 -142.559 356 2.1 +#> 5 2007-05-05T02:40:00Z 55.855 -142.559 360 1.5 +#> 6 2007-05-05T02:50:00Z 55.855 -142.559 10 1.9 +#> 7 2007-05-05T03:00:00Z 55.855 -142.559 10 2.2 +#> 8 2007-05-05T03:10:00Z 55.855 -142.559 14 2.2 +#> 9 2007-05-05T03:20:00Z 55.855 -142.559 16 2.1 +#> 10 2007-05-05T03:30:00Z 55.855 -142.559 22 1.6 +#> .. ... ... ... ... ... +``` + +Including year + + +```r +buoy(dataset = 'cwind', buoyid = 41001, year = 1999) +``` + +``` +#> Dimensions (rows/cols): [52554 X 5] +#> 2 variables: [wind_dir, wind_spd] +#> +#> time latitude longitude wind_dir wind_spd +#> 1 1999-01-01T00:00:00Z 34.68 -72.66 272 11.7 +#> 2 1999-01-01T00:10:00Z 34.68 -72.66 260 11.0 +#> 3 1999-01-01T00:20:00Z 34.68 -72.66 249 8.7 +#> 4 1999-01-01T00:30:00Z 34.68 -72.66 247 8.4 +#> 5 1999-01-01T00:40:00Z 34.68 -72.66 240 7.1 +#> 6 1999-01-01T00:50:00Z 34.68 -72.66 242 7.9 +#> 7 1999-01-01T01:00:00Z 34.68 -72.66 246 8.3 +#> 8 1999-01-01T01:10:00Z 34.68 -72.66 297 10.9 +#> 9 1999-01-01T01:20:00Z 34.68 -72.66 299 11.3 +#> 10 1999-01-01T01:30:00Z 34.68 -72.66 299 11.1 +#> .. ... ... ... ... ... +``` + +Including year and datatype + + +```r +buoy(dataset = 'cwind', buoyid = 41001, year = 2008, datatype = "cc") +``` + +``` +#> Dimensions (rows/cols): [1585 X 5] +#> 2 variables: [wind_dir, wind_spd] +#> +#> time latitude longitude wind_dir wind_spd +#> 1 2008-05-28T16:00:00Z 34.704 -72.734 230 8.6 +#> 2 2008-05-28T16:10:00Z 34.704 -72.734 230 8.7 +#> 3 2008-05-28T16:20:00Z 34.704 -72.734 229 8.5 +#> 4 2008-05-28T16:30:00Z 34.704 -72.734 231 8.8 +#> 5 2008-05-28T16:40:00Z 34.704 -72.734 236 8.5 +#> 6 2008-05-28T16:50:00Z 34.704 -72.734 235 8.9 +#> 7 2008-05-28T17:00:00Z 34.704 -72.734 233 8.2 +#> 8 2008-05-28T17:10:00Z 34.704 -72.734 233 8.2 +#> 9 2008-05-28T17:20:00Z 34.704 -72.734 231 8.3 +#> 10 2008-05-28T17:30:00Z 34.704 -72.734 232 7.8 +#> .. ... ... ... ... ... +``` + +Including just datatype + + +```r +buoy(dataset = 'cwind', buoyid = 41001, datatype = "cc") +``` + +``` +#> Dimensions (rows/cols): [1585 X 5] +#> 2 variables: [wind_dir, wind_spd] +#> +#> time latitude longitude wind_dir wind_spd +#> 1 2008-05-28T16:00:00Z 34.704 -72.734 230 8.6 +#> 2 2008-05-28T16:10:00Z 34.704 -72.734 230 8.7 +#> 3 2008-05-28T16:20:00Z 34.704 -72.734 229 8.5 +#> 4 2008-05-28T16:30:00Z 34.704 -72.734 231 8.8 +#> 5 2008-05-28T16:40:00Z 34.704 -72.734 236 8.5 +#> 6 2008-05-28T16:50:00Z 34.704 -72.734 235 8.9 +#> 7 2008-05-28T17:00:00Z 34.704 -72.734 233 8.2 +#> 8 2008-05-28T17:10:00Z 34.704 -72.734 233 8.2 +#> 9 2008-05-28T17:20:00Z 34.704 -72.734 231 8.3 +#> 10 2008-05-28T17:30:00Z 34.704 -72.734 232 7.8 +#> .. ... ... ... ... ... +``` diff --git a/inst/vign/cache/__packages b/inst/vign/cache/__packages index c38c4f2f..4e2ac864 100644 --- a/inst/vign/cache/__packages +++ b/inst/vign/cache/__packages @@ -9,3 +9,4 @@ slidify slidifyLibraries taxize ggplot2 +scimapClient diff --git a/inst/vign/cache/unnamed-chunk-6_06db865bc85a57593469dea6bfca0483.RData b/inst/vign/cache/unnamed-chunk-6_06db865bc85a57593469dea6bfca0483.RData deleted file mode 100644 index 5d125aef99e82b92f392a5e4e5f5a4d0475d7b90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3146 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 diff --git a/inst/vign/cache/unnamed-chunk-6_181b628d1c6cd74a26b72d5fde321639.RData b/inst/vign/cache/unnamed-chunk-6_181b628d1c6cd74a26b72d5fde321639.RData new file mode 100644 index 0000000000000000000000000000000000000000..53bf546dde255418cd50851b0fbdc0ea0b748704 GIT binary patch literal 3036 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

_4<}_E14IB-sf6Vj`9v@W zkJ{k%e&=DE)&Cd&@AV`9kU{ewXN e{Q-l127ihF5#orAUB%g#-~I(Jd;J^c4FCWNyZt!; literal 0 HcmV?d00001 diff --git a/inst/vign/cache/unnamed-chunk-7_d349084176e47e1c61a402f4bbcdeac5.rdb b/inst/vign/cache/unnamed-chunk-6_181b628d1c6cd74a26b72d5fde321639.rdb similarity index 100% rename from inst/vign/cache/unnamed-chunk-7_d349084176e47e1c61a402f4bbcdeac5.rdb rename to inst/vign/cache/unnamed-chunk-6_181b628d1c6cd74a26b72d5fde321639.rdb diff --git a/inst/vign/cache/unnamed-chunk-6_181b628d1c6cd74a26b72d5fde321639.rdx b/inst/vign/cache/unnamed-chunk-6_181b628d1c6cd74a26b72d5fde321639.rdx new file mode 100644 index 0000000000000000000000000000000000000000..cd56fafedeb97cfdc8a64c4152912a5f1998c39b GIT binary patch literal 113 zcmb2|=3oE==1`y0Tnz?1r{(0fO@45`a_;7)2g`CEJYPLmIHgrhG1EATLCDK!l@dGK zSHu2i3`|mOJG=D)(k@;X2(Q+7XVzRh|9)=KSJ7FQmtOUio*s5sElMNs%l^mT3sg?c Qd=~VJp<+q%)eS(K0K5e-M*si- literal 0 HcmV?d00001 diff --git a/inst/vign/cache/unnamed-chunk-7_d349084176e47e1c61a402f4bbcdeac5.RData b/inst/vign/cache/unnamed-chunk-7_d349084176e47e1c61a402f4bbcdeac5.RData deleted file mode 100644 index bce856f632ceadc9b932a6e6de5284691a4444da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3080 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 W7qBAM810VL_J07Zc3;({3;+OH2p9AK diff --git a/inst/vign/cache/unnamed-chunk-7_d349084176e47e1c61a402f4bbcdeac5.rdx b/inst/vign/cache/unnamed-chunk-7_d349084176e47e1c61a402f4bbcdeac5.rdx deleted file mode 100644 index 3ce359992a9f7fdc67881ec641a5d3dd51fb9b49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 113 zcmb2|=3oE==1`y0Tnz?1r{(1Ccz$@k=Uk*?L9p3}&sTTxrnIUlW*SQ}2zhyUd_6hQ zG4$ERNsbPS)893Hof5&LdgQKL*YdLopNj9Pg>T)kKj+SyJ;j-ZK1-%5v3|FH_aS}B Rl#HKV@e)~5TQ&e~0suZsG4=oe diff --git a/inst/vign/cache/unnamed-chunk-7_d7709fb8940f561fcabecd7373a4f17b.RData b/inst/vign/cache/unnamed-chunk-7_d7709fb8940f561fcabecd7373a4f17b.RData new file mode 100644 index 0000000000000000000000000000000000000000..c7c76842f2ecd1394ec9a9968581650458d4e734 GIT binary patch literal 3044 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 Rl#HKV@e)~5TQ&e~0suZsG4=oe diff --git a/inst/vign/cache/unnamed-chunk-8_7681af405e52be8e7f236efeb017cc2f.RData b/inst/vign/cache/unnamed-chunk-8_7681af405e52be8e7f236efeb017cc2f.RData new file mode 100644 index 0000000000000000000000000000000000000000..64b888aaaf7b30ad00057c2fdbd25fc51a680e92 GIT binary patch literal 3047 zcmVhFcrx@S&C9fRI+@dPVakO-*-;mbDrmZ{`d78jg6HT4?e*^mahBNZuTt|D^Pi_0ov*!nj1= z2-a zUu~gis$V2CuT8;WFg3?%IPIvWu(lB$HrOYJu~H0`2suZ6`IpA+V96!yCq`9WZ`|us zgCC#Gh+FmS`%?YQFq(q&RrPn_<*UN zo7KCv1-?^>!Zy*zOHmCAIH!lVHmX#3Vu7(^b$2Z!;*!1_dM*9Po&U-ndNAhdhY?{b zVp&NM_kFS$!hO*6>Xo*PbPvGb1y6TG506(mBb_e$qhoZuL>BAuqrAxoCTDlQT||}N zFioXuG~uufE&r|2nYbcg-}3NikyRcObAmffj7{4Rdepw~>6;wCZtFAHya&d`?5Bj= z$2~vX*gIr2ws|w{vwT+bM(nbZnrb}fVt{j+)l=hvU2$_|B3w6%BTc7EE%ri2QmWeJI3lQ)F*F15`D&yMKL zx-fx8#kTSutwtM1=n~tlnx|uyGfB#r81~^q5f9!Mg^$E1Ssm>)NIraV8utxN75gq! zY6;#W{b|&gU8ow&y_+}YnZV)80y3wG^{S$Xn274Pbq{;bmwt2?HopyN@jLL$-!%Ly zwa{O{n`$u6>1q5x1sWceO3vX{d$W38tFl@aH*M0GhlP$d`5<-BdZi1AJ&~SrG|NnG z^qW~e*SzmHrG|Kge8mq$^y7Dn>|7R9(%+em`hXf{%!T%Nd4~#VG;%8@#knNlD7{1r zyZT9{8|U-f-A$(ov=gq!f9u~2%FwsE7{F$|uvj18mugMCDJz$Xu{E)tP2n@& z^}^wrfar^ZXZEsbBWp1_NozB}oPt%svt5i!F5#+ak5j(Xb%2uKmzr_P!3@5E`5@*- zT!(W*AhRITOTYr?1f-ox0YPni!M%xqlo6#p$ zu4FF;kn4ln#~H^5-Z(2%-J9w4;iKC`AlDZ5*nAe>KNBI)e(MXaN+l-u?Jkt&%jecD zL|?B2r{gInQxt6TYW$dcT5wNP5P?B$JM6`l{ zZw*2!gJF`b5fjZ8jafAC2x>`JPBL6_LB^QOgZDiizj%%#)&I z#U%MD)kgGY(nMqr@heT|1)>1UvJA-5q8E)*tip7TB;@QM%v|s4r$4<>!L+N@mAg^q zuGFahmQQSg1MN|e{F(IJY{5D6y#a&Ch1E$0qAD-8E|fkwQLjwa6q#%nXtCv~$L$Tw zpyf!sV;HrW${o58R=`nF6hEaBUvK)&32JlYvo79ns)A;WF-e#heAJ@UBY-fdne*r? z#H7}C3UTETvLocp=!PL3IC%%3mY`2jO6Oim7Yn@Il0`t8H{q zZp7U*ZjA1k8#A_=`&MZ&h1Ocid8(e5zWU>K+a--JY2o$_X2k=+95`g3`-EeKTEU%^ zHTvEt(Aq-H<+7*K$_pA$Vp}YaAC_5jC*)R$-$Q%vtM$FU4>5daIa;J%fAn)+Z=+aR#dIc$&CDLD6b5J1Zv6|t%q!~A=S_cDfONmWM z>6e^YDf1(fBCx*KiPM#xaY1#om*&_@TOzzI4(hJNA$Vh;rof zUcMGUP-sHwy;$nj2R5L{DZ@{x6yzbEbLmuy2FKMBoYn_AM_5_=AN>R|ouDHVC2#f+8^LS||vFb=$Mbz%;;chz3i5 z;7~9ertzyd6bAVv5MZreE8WJc|KB`(i-&FJp?~0^$ltu?7O%0LhyAI)`fnbw#cOWo zHU7kF{j0y$c3$&OyykBnxy8f(&BOofKkPRT-Qp43`9J#qZyvdw|C9g!_y_yBe<0iV pKl%^-CE&mO2ZR561A~7D{}%rv#1dPFigjo={sZ%}@=F5_000HH4KV-! literal 0 HcmV?d00001 diff --git a/inst/vign/cache/unnamed-chunk-9_a2785f07e4c58300ef4d190ebbb2aa63.rdb b/inst/vign/cache/unnamed-chunk-8_7681af405e52be8e7f236efeb017cc2f.rdb similarity index 100% rename from inst/vign/cache/unnamed-chunk-9_a2785f07e4c58300ef4d190ebbb2aa63.rdb rename to inst/vign/cache/unnamed-chunk-8_7681af405e52be8e7f236efeb017cc2f.rdb diff --git a/inst/vign/cache/unnamed-chunk-8_7681af405e52be8e7f236efeb017cc2f.rdx b/inst/vign/cache/unnamed-chunk-8_7681af405e52be8e7f236efeb017cc2f.rdx new file mode 100644 index 0000000000000000000000000000000000000000..cd56fafedeb97cfdc8a64c4152912a5f1998c39b GIT binary patch literal 113 zcmb2|=3oE==1`y0Tnz?1r{(0fO@45`a_;7)2g`CEJYPLmIHgrhG1EATLCDK!l@dGK zSHu2i3`|mOJG=D)(k@;X2(Q+7XVzRh|9)=KSJ7FQmtOUio*s5sElMNs%l^mT3sg?c Qd=~VJp<+q%)eS(K0K5e-M*si- literal 0 HcmV?d00001 diff --git a/inst/vign/cache/unnamed-chunk-9_70cbb1cc91384cd880b98d6af5706c8e.RData b/inst/vign/cache/unnamed-chunk-9_70cbb1cc91384cd880b98d6af5706c8e.RData new file mode 100644 index 0000000000000000000000000000000000000000..5c06807d040aa7da774ca0052747b5984b42f5c9 GIT binary patch literal 3039 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 literal 0 HcmV?d00001 diff --git a/inst/vign/cache/unnamed-chunk-9_70cbb1cc91384cd880b98d6af5706c8e.rdb b/inst/vign/cache/unnamed-chunk-9_70cbb1cc91384cd880b98d6af5706c8e.rdb new file mode 100644 index 00000000..e69de29b diff --git a/inst/vign/cache/unnamed-chunk-9_70cbb1cc91384cd880b98d6af5706c8e.rdx b/inst/vign/cache/unnamed-chunk-9_70cbb1cc91384cd880b98d6af5706c8e.rdx new file mode 100644 index 0000000000000000000000000000000000000000..cd56fafedeb97cfdc8a64c4152912a5f1998c39b GIT binary patch literal 113 zcmb2|=3oE==1`y0Tnz?1r{(0fO@45`a_;7)2g`CEJYPLmIHgrhG1EATLCDK!l@dGK zSHu2i3`|mOJG=D)(k@;X2(Q+7XVzRh|9)=KSJ7FQmtOUio*s5sElMNs%l^mT3sg?c Qd=~VJp<+q%)eS(K0K5e-M*si- literal 0 HcmV?d00001 diff --git a/inst/vign/cache/unnamed-chunk-9_a2785f07e4c58300ef4d190ebbb2aa63.RData b/inst/vign/cache/unnamed-chunk-9_a2785f07e4c58300ef4d190ebbb2aa63.RData deleted file mode 100644 index 8d8c630769df85d1bb8298e18df7f9f72c48bace..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3165 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 DOc6LA diff --git a/inst/vign/cache/unnamed-chunk-9_a2785f07e4c58300ef4d190ebbb2aa63.rdx b/inst/vign/cache/unnamed-chunk-9_a2785f07e4c58300ef4d190ebbb2aa63.rdx deleted file mode 100644 index 3ce359992a9f7fdc67881ec641a5d3dd51fb9b49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 113 zcmb2|=3oE==1`y0Tnz?1r{(1Ccz$@k=Uk*?L9p3}&sTTxrnIUlW*SQ}2zhyUd_6hQ zG4$ERNsbPS)893Hof5&LdgQKL*YdLopNj9Pg>T)kKj+SyJ;j-ZK1-%5v3|FH_aS}B Rl#HKV@e)~5TQ&e~0suZsG4=oe diff --git a/man/buoy.Rd b/man/buoy.Rd new file mode 100644 index 00000000..cd20bd3d --- /dev/null +++ b/man/buoy.Rd @@ -0,0 +1,74 @@ +% Generated by roxygen2 (4.1.1): do not edit by hand +% Please edit documentation in R/buoy.R +\name{buoy} +\alias{buoy} +\alias{buoys} +\title{Get NOAA buoy data from the National Buoy Data Center} +\usage{ +buoy(dataset, buoyid, year = NULL, datatype = NULL, ...) + +buoys(dataset, ...) +} +\arguments{ +\item{dataset}{(character) Dataset name to query. See below for Details. Required} + +\item{buoyid}{(integer) Buoy ID. Required} + +\item{year}{(integer) Year of data collection} + +\item{datatype}{(character) Data type, one of 'c', 'cc', 'p', 'o'} + +\item{...}{Curl options passed on to \code{\link[httr]{GET}} (optional)} +} +\description{ +Get NOAA buoy data from the National Buoy Data Center +} +\details{ +Functions: +\itemize{ + \item buoys Get available buoys given a dataset name + \item buoy Get data given some combination of dataset name, buoy ID, year, and datatype +} + +Options for the dataset parameter. One of: +\itemize{ + \item adcp - Acoustic Doppler Current Profiler data + \item adcp2 - MMS Acoustic Doppler Current Profiler data + \item cwind - Continuous Winds data + \item dart - Deep-ocean Assessment and Reporting of Tsunamis data + \item mmbcur - Marsh-McBirney Current Measurements data + \item ocean - Oceanographic data + \item pwind - Peak Winds data + \item stdmet- Standard Meteorological data + \item swden - Spectral Wave Density data with Spectral Wave Direction data + \item wlevel - Water Level data +} +} +\examples{ +\dontrun{ +# Get available buoys +buoys(dataset = 'cwind') + +# Get data for a buoy +## if no year or datatype specified, we get the first file +buoy(dataset = 'cwind', buoyid = 46085) + +# Including specific year +buoy(dataset = 'cwind', buoyid = 41001, year = 1999) + +# Including specific year and datatype +buoy(dataset = 'cwind', buoyid = 41001, year = 2008, datatype = "cc") +buoy(dataset = 'cwind', buoyid = 41001, year = 2008, datatype = "cc") + +# Other datasets +buoy(dataset = 'ocean', buoyid = 42856) + +# curl debugging +library('httr') +buoy(dataset = 'cwind', buoyid = 46085, config=verbose()) +} +} +\references{ +\url{http://www.ndbc.noaa.gov/} and \url{http://dods.ndbc.noaa.gov/} +} + diff --git a/tests/testthat/test-buoy.R b/tests/testthat/test-buoy.R new file mode 100644 index 00000000..04fc9933 --- /dev/null +++ b/tests/testthat/test-buoy.R @@ -0,0 +1,42 @@ +context("buoy") + +test_that("buoys works", { + skip_on_cran() + + aa <- buoys(dataset = 'cwind') + + # class + expect_is(aa, "data.frame") + expect_is(aa$id, "character") + + # dimensions + expect_equal(NCOL(aa), 2) +}) + +test_that("buoys fails well", { + skip_on_cran() + + expect_error(buoys(), "argument \"dataset\" is missing") +}) + +test_that("buoy works", { + skip_on_cran() + + one <- buoy(dataset = 'cwind', buoyid = 41001, year = 2008, datatype = "cc") + + # class + expect_is(one, "buoy") + expect_is(unclass(one), "list") + expect_is(one$meta, "list") + expect_is(one$data, "data.frame") + + # dimensions + expect_equal(length(one), 2) +}) + +test_that("buoys fails well", { + skip_on_cran() + + expect_error(buoy(), "argument \"dataset\" is missing") + expect_error(buoy(dataset = 'ocean', buoyid = 41012), "No data files found") +}) diff --git a/vignettes/buoy_vignette.Rmd b/vignettes/buoy_vignette.Rmd new file mode 100644 index 00000000..f730e47a --- /dev/null +++ b/vignettes/buoy_vignette.Rmd @@ -0,0 +1,162 @@ + + + + +buoy vignette +====== + +This vignette covers NOAA buoy data from the National Buoy Data Center. The +main function to get data is `buoy`, while `buoys` can be used to +get the buoy IDs and web pages for each buoy. + + +```r +library('rnoaa') +``` + +## Find out what buoys are available in a dataset + + +```r +res <- buoys(dataset = "cwind") +``` + +Inspect the buoy ids, and the urls for them + + +```r +head(res) +``` + +``` +#> id +#> 1 41001 +#> 2 41002 +#> 3 41004 +#> 4 41006 +#> 5 41008 +#> 6 41009 +#> url +#> 1 http://dods.ndbc.noaa.gov/thredds/catalog/data/cwind/41001/catalog.html +#> 2 http://dods.ndbc.noaa.gov/thredds/catalog/data/cwind/41002/catalog.html +#> 3 http://dods.ndbc.noaa.gov/thredds/catalog/data/cwind/41004/catalog.html +#> 4 http://dods.ndbc.noaa.gov/thredds/catalog/data/cwind/41006/catalog.html +#> 5 http://dods.ndbc.noaa.gov/thredds/catalog/data/cwind/41008/catalog.html +#> 6 http://dods.ndbc.noaa.gov/thredds/catalog/data/cwind/41009/catalog.html +``` + +Or browse them on the web + + +```r +browseURL(res[1, 2]) +``` + +## Get buoy data + +With `buoy` you can get data for a particular dataset, buoy id, year, and datatype. + +Get data for a buoy + +> if no year or datatype specified, we get the first file + + +```r +buoy(dataset = 'cwind', buoyid = 46085) +``` + +``` +#> Dimensions (rows/cols): [33486 X 5] +#> 2 variables: [wind_dir, wind_spd] +#> +#> time latitude longitude wind_dir wind_spd +#> 1 2007-05-05T02:00:00Z 55.855 -142.559 331 2.8 +#> 2 2007-05-05T02:10:00Z 55.855 -142.559 328 2.6 +#> 3 2007-05-05T02:20:00Z 55.855 -142.559 329 2.2 +#> 4 2007-05-05T02:30:00Z 55.855 -142.559 356 2.1 +#> 5 2007-05-05T02:40:00Z 55.855 -142.559 360 1.5 +#> 6 2007-05-05T02:50:00Z 55.855 -142.559 10 1.9 +#> 7 2007-05-05T03:00:00Z 55.855 -142.559 10 2.2 +#> 8 2007-05-05T03:10:00Z 55.855 -142.559 14 2.2 +#> 9 2007-05-05T03:20:00Z 55.855 -142.559 16 2.1 +#> 10 2007-05-05T03:30:00Z 55.855 -142.559 22 1.6 +#> .. ... ... ... ... ... +``` + +Including year + + +```r +buoy(dataset = 'cwind', buoyid = 41001, year = 1999) +``` + +``` +#> Dimensions (rows/cols): [52554 X 5] +#> 2 variables: [wind_dir, wind_spd] +#> +#> time latitude longitude wind_dir wind_spd +#> 1 1999-01-01T00:00:00Z 34.68 -72.66 272 11.7 +#> 2 1999-01-01T00:10:00Z 34.68 -72.66 260 11.0 +#> 3 1999-01-01T00:20:00Z 34.68 -72.66 249 8.7 +#> 4 1999-01-01T00:30:00Z 34.68 -72.66 247 8.4 +#> 5 1999-01-01T00:40:00Z 34.68 -72.66 240 7.1 +#> 6 1999-01-01T00:50:00Z 34.68 -72.66 242 7.9 +#> 7 1999-01-01T01:00:00Z 34.68 -72.66 246 8.3 +#> 8 1999-01-01T01:10:00Z 34.68 -72.66 297 10.9 +#> 9 1999-01-01T01:20:00Z 34.68 -72.66 299 11.3 +#> 10 1999-01-01T01:30:00Z 34.68 -72.66 299 11.1 +#> .. ... ... ... ... ... +``` + +Including year and datatype + + +```r +buoy(dataset = 'cwind', buoyid = 41001, year = 2008, datatype = "cc") +``` + +``` +#> Dimensions (rows/cols): [1585 X 5] +#> 2 variables: [wind_dir, wind_spd] +#> +#> time latitude longitude wind_dir wind_spd +#> 1 2008-05-28T16:00:00Z 34.704 -72.734 230 8.6 +#> 2 2008-05-28T16:10:00Z 34.704 -72.734 230 8.7 +#> 3 2008-05-28T16:20:00Z 34.704 -72.734 229 8.5 +#> 4 2008-05-28T16:30:00Z 34.704 -72.734 231 8.8 +#> 5 2008-05-28T16:40:00Z 34.704 -72.734 236 8.5 +#> 6 2008-05-28T16:50:00Z 34.704 -72.734 235 8.9 +#> 7 2008-05-28T17:00:00Z 34.704 -72.734 233 8.2 +#> 8 2008-05-28T17:10:00Z 34.704 -72.734 233 8.2 +#> 9 2008-05-28T17:20:00Z 34.704 -72.734 231 8.3 +#> 10 2008-05-28T17:30:00Z 34.704 -72.734 232 7.8 +#> .. ... ... ... ... ... +``` + +Including just datatype + + +```r +buoy(dataset = 'cwind', buoyid = 41001, datatype = "cc") +``` + +``` +#> Dimensions (rows/cols): [1585 X 5] +#> 2 variables: [wind_dir, wind_spd] +#> +#> time latitude longitude wind_dir wind_spd +#> 1 2008-05-28T16:00:00Z 34.704 -72.734 230 8.6 +#> 2 2008-05-28T16:10:00Z 34.704 -72.734 230 8.7 +#> 3 2008-05-28T16:20:00Z 34.704 -72.734 229 8.5 +#> 4 2008-05-28T16:30:00Z 34.704 -72.734 231 8.8 +#> 5 2008-05-28T16:40:00Z 34.704 -72.734 236 8.5 +#> 6 2008-05-28T16:50:00Z 34.704 -72.734 235 8.9 +#> 7 2008-05-28T17:00:00Z 34.704 -72.734 233 8.2 +#> 8 2008-05-28T17:10:00Z 34.704 -72.734 233 8.2 +#> 9 2008-05-28T17:20:00Z 34.704 -72.734 231 8.3 +#> 10 2008-05-28T17:30:00Z 34.704 -72.734 232 7.8 +#> .. ... ... ... ... ... +```