diff --git a/NAMESPACE b/NAMESPACE index 09a0ba0258653f4ff26dbe939c7ed74b63c596da..8109f84198c681459fa01e11a48f1c73b23615a0 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -24,6 +24,7 @@ export(readNWISuv) export(readWQPdata) export(readWQPqw) export(renameNWISColumns) +export(setAccess) export(stateCd) export(stateCdLookup) export(whatNWISdata) diff --git a/R/AAA.R b/R/AAA.R new file mode 100644 index 0000000000000000000000000000000000000000..4384113b4e52233558527b151ddfd517be42ae6b --- /dev/null +++ b/R/AAA.R @@ -0,0 +1,4 @@ +pkg.env <- new.env() +.onLoad = function(libname, pkgname){ + suppressMessages(setAccess('public')) +} \ No newline at end of file diff --git a/R/constructNWISURL.r b/R/constructNWISURL.r index e0c288c4e1f9c4431b83eb1390e88e98fc78f34f..c20ce648e70008a929b892ae04b25dd2306d30b5 100644 --- a/R/constructNWISURL.r +++ b/R/constructNWISURL.r @@ -149,9 +149,6 @@ constructNWISURL <- function(siteNumber,parameterCd="00060",startDate="",endDate if ("uv"==service) { service <- "iv" - baseURL <- paste0("http://nwis.waterservices.usgs.gov/nwis/",service) - } else { - baseURL <- paste0("http://waterservices.usgs.gov/nwis/",service) } format <- match.arg(format, c("xml","tsv","wml1","wml2","rdb")) @@ -174,30 +171,29 @@ constructNWISURL <- function(siteNumber,parameterCd="00060",startDate="",endDate } ) - - url <- paste0(baseURL,"/?site=",siteNumber, "&format=", formatURL) + url <- drURL(service, Access=pkg.env$access, site=siteNumber, format=formatURL) if("gwlevels"!= service){ - url <- paste0(url, "&ParameterCd=",parameterCd) + url <- appendDrURL(url, ParameterCd=parameterCd) } if("dv"==service) { if(length(statCd) > 1){ statCd <- paste(statCd, collapse=",") } - url <- paste0(url, "&StatCd=", statCd) + url <- appendDrURL(url, StatCd=statCd) } if (nzchar(startDate)) { - url <- paste0(url,"&startDT=",startDate) + url <- appendDrURL(url, startDT=startDate) } else { startorgin <- "1851-01-01" if ("iv" == service) startorgin <- "1900-01-01" - url <- paste0(url,"&startDT=",startorgin) + url <- appendDrURL(url, startDT=startorgin) } if (nzchar(endDate)) { - url <- paste0(url,"&endDT=",endDate) + url <- appendDrURL(url, endDT=endDate) } } diff --git a/R/setAccess.R b/R/setAccess.R new file mode 100644 index 0000000000000000000000000000000000000000..2e4bb7e2dbc483fd44c96a31267f1638b4833263 --- /dev/null +++ b/R/setAccess.R @@ -0,0 +1,59 @@ +#'Set data endpoint +#' +#'access Indicate which dataRetrieval access code +#' you want to use options: \code{c('public','internal')} +#' +#' @param access code for data access. Either "public" or "internal" +#' +#'@author Luke Winslow, Jordan S Read +#' +#'@examples +#' +#'\dontrun{ +#'setAccess('internal') +#' +#'setAccess('public') +#' +#'} +#' +#' @export +setAccess = function(access="public"){ + + access = match.arg(access, c('public','internal')) + + if(access=="internal"){ + pkg.env$access = '3' + message('setting access to internal') + }else { + pkg.env$access = '0' + message('setting access to public') + } + + pkg.env$waterservices = "http://waterservices.usgs.gov/nwis/site/" + pkg.env$iv = "http://nwis.waterservices.usgs.gov/nwis/iv/" + pkg.env$dv = "http://waterservices.usgs.gov/nwis/dv/" + pkg.env$gwlevels = "http://waterservices.usgs.gov/nwis/gwlevels/" + +} + +drURL <- function(base.name, ..., arg.list=NULL){ + + + queryString <- drQueryArgs(..., arg.list=arg.list) + #to do: add something to check for redundant params + + return(paste0(pkg.env[[base.name]], '?', queryString)) +} + +drQueryArgs <- function(..., arg.list){ + args <- append(expand.grid(..., stringsAsFactors = FALSE), arg.list) + # get the args into name=value strings + keyValues <- paste0(names(args),unname(lapply(args, function(x) paste0('=',x[[1]])))) + return(paste(keyValues, collapse='&')) +} + +appendDrURL <- function(url, ..., arg.list=NULL){ + + queryString <- drQueryArgs(..., arg.list=arg.list) + return(paste0(url, "&", queryString)) +} \ No newline at end of file diff --git a/R/whatNWISData.r b/R/whatNWISData.r index 2d9c18da1be8eb525b25af1b6578c80fc17e2fba..50067b22ebb23b2ce00d3b994f33d49b69df3871 100644 --- a/R/whatNWISData.r +++ b/R/whatNWISData.r @@ -87,8 +87,7 @@ whatNWISdata <- function(siteNumbers,service="all",parameterCd="all",statCd="all } } - - urlSitefile <- paste("http://waterservices.usgs.gov/nwis/site/?format=rdb&seriesCatalogOutput=true&sites=",siteNumber,sep = "") + urlSitefile <- drURL('waterservices', Access=pkg.env$access, format='rdb', seriesCatalogOutput='true',sites=paste(siteNumber)) SiteFile <- importRDB1(urlSitefile, asDateTime = FALSE) diff --git a/R/whatNWISsites.R b/R/whatNWISsites.R index 49e34e845526c8eb59ed02fa619a9a1c0b159c6a..c7b864aed875a4466876972aba4488f8c8fb8935 100644 --- a/R/whatNWISsites.R +++ b/R/whatNWISsites.R @@ -35,14 +35,11 @@ whatNWISsites <- function(...){ matchReturn <- list(...) values <- sapply(matchReturn, function(x) URLencode(as.character(paste(eval(x),collapse=",",sep="")))) - urlCall <- paste(paste(names(values),values,sep="="),collapse="&") - names(values)[names(values) == "siteNumber"] <- "sites" names(values)[names(values) == "siteNumbers"] <- "sites" - baseURL <- "http://waterservices.usgs.gov/nwis/site/?format=mapper&" - urlCall <- paste(baseURL, - urlCall,sep = "") + urlCall <- drURL('waterservices',Access=pkg.env$access, format="mapper", arg.list = values) + rawData <- getWebServiceData(urlCall) diff --git a/man/setAccess.Rd b/man/setAccess.Rd new file mode 100644 index 0000000000000000000000000000000000000000..a8a7822cf7bb28c53ceb6f39624186b3b51a4bc7 --- /dev/null +++ b/man/setAccess.Rd @@ -0,0 +1,29 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/setAccess.R +\name{setAccess} +\alias{setAccess} +\title{Set data endpoint} +\usage{ +setAccess(access = "public") +} +\arguments{ +\item{access}{code for data access. Either "public" or "internal"} +} +\description{ +access Indicate which dataRetrieval access code +you want to use options: \code{c('public','internal')} +} +\examples{ + +\dontrun{ +setAccess('internal') + +setAccess('public') + +} + +} +\author{ +Luke Winslow, Jordan S Read +} + diff --git a/man/whatNWISData.Rd b/man/whatNWISData.Rd index d236dfb6bc272b328fd1dc40ba3d89ef96b9e4a1..05bb05be6946eb419b95f90f0b5449d56abef30c 100644 --- a/man/whatNWISData.Rd +++ b/man/whatNWISData.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/whatNWISdata.r +% Please edit documentation in R/whatNWISData.r \name{whatNWISdata} \alias{whatNWISdata} \title{USGS data availability} diff --git a/man/whatNWISdata.Rd b/man/whatNWISdata.Rd new file mode 100644 index 0000000000000000000000000000000000000000..05bb05be6946eb419b95f90f0b5449d56abef30c --- /dev/null +++ b/man/whatNWISdata.Rd @@ -0,0 +1,85 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/whatNWISData.r +\name{whatNWISdata} +\alias{whatNWISdata} +\title{USGS data availability} +\usage{ +whatNWISdata(siteNumbers, service = "all", parameterCd = "all", + statCd = "all") +} +\arguments{ +\item{siteNumbers}{character USGS site number or multiple sites.} + +\item{service}{character. Options are "all", or one or many of "dv"(daily values), +"uv","rt", or "iv"(unit values), "qw"(water-quality),"sv"(sites visits),"pk"(peak measurements), +"gw"(groundwater levels), "ad" (sites included in USGS Annual Water Data Reports External Link), +"aw" (sites monitored by the USGS Active Groundwater Level Network External Link), "id" (historical +instantaneous values)} + +\item{parameterCd}{character vector of valid parameter codes to return. Defaults to "all" which will not perform a filter.} + +\item{statCd}{character vector of all statistic codes to return. Defaults to "all" which will not perform a filter.} +} +\value{ +A data frame with the following columns: +\tabular{lll}{ +Name \tab Type \tab Description \cr +agency_cd \tab character \tab The NWIS code for the agency reporting the data\cr +site_no \tab character \tab The USGS site number \cr +station_nm \tab character \tab Site name \cr +site_tp_cd \tab character \tab Site type \cr +dec_lat_va \tab numeric \tab Decimal latitude\cr +dec_long_va \tab numeric \tab Decimal longitude \cr +coord_acy_cd \tab character \tab Latitude-longitude accuracy \cr +dec_coord_datum_cd \tab character \tab Decimal Latitude-longitude datum \cr +alt_va \tab character \tab Altitude of Gage or land surface \cr +alt_acy_va \tab character \tab Altitude accuracy \cr +alt_datum_cd \tab character \tab Altitude datum \cr +huc_cd \tab character \tab Hydrologic unit code \cr +data_type_cd \tab character \tab Data type \cr +parm_cd \tab character \tab Parameter code \cr +stat_cd \tab character \tab Statistical code \cr +dd_nu \tab character \tab Internal database key \cr +loc_web_ds \tab character \tab Additional measurement description \cr +medium_grp_cd \tab character \tab Medium group code \cr +parm_grp_cd \tab character \tab Parameter group code \cr +srs_id \tab character \tab SRS ID \cr +access_cd \tab character \tab Access code \cr +begin_date \tab Date \tab Begin date \cr +end_date \tab Date \tab End date \cr +count_nu \tab integer \tab Record count\cr +parameter_group_nm \tab character \tab Parameter group name \cr +parameter_nm \tab character \tab Parameter name \cr +casrn \tab character \tab Chemical Abstracts Service (CAS) Registry Number \cr +srsname \tab character \tab Substance Registry Services \cr +parameter_units \tab character \tab Parameter units \cr +} + +There are also several useful attributes attached to the data frame: +\tabular{lll}{ +Name \tab Type \tab Description \cr +url \tab character \tab The url used to generate the data \cr +comment \tab character \tab Header comments from the RDB file \cr +queryTime \tab POSIXct \tab The time the data was returned \cr +} +} +\description{ +Imports a table of available parameters, period of record, and count. See \url{http://waterservices.usgs.gov/rest/Site-Service.html} +for more information. +} +\examples{ +\dontrun{ +availableData <- whatNWISdata('05114000') +# To find just unit value ('instantaneous') data: +uvData <- whatNWISdata('05114000',service="uv") +uvDataMulti <- whatNWISdata(c('05114000','09423350'),service=c("uv","dv")) +siteNumbers <- c("01491000","01645000") +flowAndTemp <- whatNWISdata(siteNumbers, parameterCd=c("00060","00010")) +} +} +\keyword{USGS} +\keyword{data} +\keyword{import} +\keyword{service} +\keyword{web} + diff --git a/tests/testthat/tests_userFriendly_fxns.R b/tests/testthat/tests_userFriendly_fxns.R index 945c8376e1a432044d6a6e3d4ce1f386c7783fed..87803e3d8c57191fa3605c8744f42d5289d2b9b1 100644 --- a/tests/testthat/tests_userFriendly_fxns.R +++ b/tests/testthat/tests_userFriendly_fxns.R @@ -19,7 +19,7 @@ test_that("Unit value data returns correct types", { expect_is(rawData$dateTime, 'POSIXct') expect_is(rawData$Flow_Inst, 'numeric') expect_that(attr(rawData, "url"), equals( - "http://nwis.waterservices.usgs.gov/nwis/iv/?site=05114000&format=waterml,1.1&ParameterCd=00060&startDT=2014-10-10&endDT=2014-10-10") + "http://nwis.waterservices.usgs.gov/nwis/iv/?Access=0&site=05114000&format=waterml,1.1&ParameterCd=00060&startDT=2014-10-10&endDT=2014-10-10") ) # #First switchover to standard time: # expect_that(as.numeric(timeZoneChange[which(timeZoneChange$tz_cd == "America/Chicago")[1],"dateTime"]),