From e989c680e8cbec7b87a35281e239f21e4dc0a616 Mon Sep 17 00:00:00 2001 From: unknown <ldecicco@usgs.gov> Date: Wed, 22 Oct 2014 08:50:46 -0500 Subject: [PATCH] Took out wqp, add new function. --- R/constructNWISURL.r | 124 ++++++++++++++++++++++++++----------------- 1 file changed, 76 insertions(+), 48 deletions(-) diff --git a/R/constructNWISURL.r b/R/constructNWISURL.r index 7b838f7b..97fdbd2b 100644 --- a/R/constructNWISURL.r +++ b/R/constructNWISURL.r @@ -14,7 +14,6 @@ #' but will offer a warning if the file was incomplete (for example, if there was a momentary problem with the internet connection). It is possible to safely use the "tsv" option, #' but the user must carefully check the results to see if the data returns matches what is expected. The default is therefore "xml". #' @param expanded logical defaults to FALSE. If TRUE, retrieves additional information, only applicable for qw data. -#' @param interactive logical Option for interactive mode. If TRUE, there is user interaction for error handling and data checks. #' @keywords data import USGS web service #' @return url string #' @export @@ -31,19 +30,11 @@ #' url_qw_single <- constructNWISURL(siteNumber,"01075",startDate,endDate,'qw') #' url_qw <- constructNWISURL(siteNumber,c('01075','00029','00453'), #' startDate,endDate,'qw') -#' url_wqp <- constructNWISURL(paste("USGS",siteNumber,sep="-"),c('01075','00029','00453'), -#' startDate,endDate,'wqp') #' url_daily_tsv <- constructNWISURL(siteNumber,pCode,startDate,endDate,'dv', #' statCd=c("00003","00001"),format="tsv") #' } -constructNWISURL <- function(siteNumber,parameterCd,startDate,endDate,service,statCd="00003", format="xml",expanded=FALSE,interactive=TRUE){ +constructNWISURL <- function(siteNumber,parameterCd,startDate,endDate,service,statCd="00003", format="xml",expanded=FALSE){ - startDate <- formatCheckDate(startDate, "StartDate", interactive=interactive) - endDate <- formatCheckDate(endDate, "EndDate", interactive=interactive) - - dateReturn <- checkStartEndDate(startDate, endDate, interactive=interactive) - startDate <- dateReturn[1] - endDate <- dateReturn[2] multipleSites <- length(siteNumber) > 1 multiplePcodes <- length(parameterCd)>1 siteNumber <- paste(siteNumber, collapse=",") @@ -94,49 +85,18 @@ constructNWISURL <- function(siteNumber,parameterCd,startDate,endDate,service,st url <- paste(url,"&end_date=",endDate,sep="") } }, - wqp = { - - #Check for pcode: - if(all(nchar(parameterCd) == 5)){ - suppressWarnings(pCodeLogic <- all(!is.na(as.numeric(parameterCd)))) - } else { - pCodeLogic <- FALSE - parameterCd <- gsub(",","%2C",parameterCd) - parameterCd <- URLencode(parameterCd) - } - - if(multiplePcodes){ - parameterCd <- paste(parameterCd, collapse=";") - } - - if (nzchar(startDate)){ - startDate <- format(as.Date(startDate), format="%m-%d-%Y") - } - if (nzchar(endDate)){ - endDate <- format(as.Date(endDate), format="%m-%d-%Y") - } - - baseURL <- "http://www.waterqualitydata.us/Result/search?siteid=" - url <- paste0(baseURL, - siteNumber, - ifelse(pCodeLogic,"&pCode=","&characteristicName="), - parameterCd, - "&startDateLo=", - startDate, - "&startDateHi=", - endDate, - "&countrycode=US&mimeType=tsv") - }, + { # this will be either dv or uv # Check for 5 digit parameter code: if(multiplePcodes){ parameterCd <- paste(parameterCd, collapse=",") - } else { - if("gwlevels" != service){ - parameterCd <- formatCheckParameterCd(parameterCd, interactive=interactive) - } - } + } +# else { +# if("gwlevels" != service){ +# parameterCd <- formatCheckParameterCd(parameterCd, interactive=interactive) +# } +# } if ("uv"==service) { service <- "iv" @@ -191,3 +151,71 @@ constructNWISURL <- function(siteNumber,parameterCd,startDate,endDate,service,st } } + + + + + +#' Construct WQP url for data retrieval +#' +#' Imports data from WQP web service. This function gets the data from here: \url{http://nwis.waterdata.usgs.gov/nwis/qwdata} +#' A list of parameter codes can be found here: \url{http://nwis.waterdata.usgs.gov/nwis/pmcodes/} +#' A list of statistic codes can be found here: \url{http://nwis.waterdata.usgs.gov/nwis/help/?read_file=stat&format=table} +#' +#' @param siteNumber string or vector of strings USGS site number. This is usually an 8 digit number +#' @param parameterCd string or vector of USGS parameter code. This is usually an 5 digit number. +#' @param startDate string starting date for data retrieval in the form YYYY-MM-DD. +#' @param endDate string ending date for data retrieval in the form YYYY-MM-DD. +#' @keywords data import WQP web service +#' @return url string +#' @export +#' @import RCurl +#' @examples +#' siteNumber <- '01594440' +#' startDate <- '1985-01-01' +#' endDate <- '' +#' pCode <- c("00060","00010") +#' url_wqp <- constructWQPURL(paste("USGS",siteNumber,sep="-"), +#' c('01075','00029','00453'), +#' startDate,endDate) +constructWQPURL <- function(siteNumber,parameterCd,startDate,endDate){ + + multipleSites <- length(siteNumber) > 1 + multiplePcodes <- length(parameterCd)>1 + siteNumber <- paste(siteNumber, collapse=",") + + if(all(nchar(parameterCd) == 5)){ + suppressWarnings(pCodeLogic <- all(!is.na(as.numeric(parameterCd)))) + } else { + pCodeLogic <- FALSE + parameterCd <- gsub(",","%2C",parameterCd) + parameterCd <- URLencode(parameterCd) + } + + if(multiplePcodes){ + parameterCd <- paste(parameterCd, collapse=";") + } + if (nzchar(startDate)){ + startDate <- format(as.Date(startDate), format="%m-%d-%Y") + } + if (nzchar(endDate)){ + endDate <- format(as.Date(endDate), format="%m-%d-%Y") + } + + baseURL <- "http://www.waterqualitydata.us/Result/search?siteid=" + url <- paste0(baseURL, + siteNumber, + ifelse(pCodeLogic,"&pCode=","&characteristicName="), + parameterCd, + "&startDateLo=", + startDate, + "&startDateHi=", + endDate, + "&countrycode=US&mimeType=tsv") + if(url.exists(url)){ + return(url) + } else { + stop("The following url doesn't seem to exist:\n",url) + } + +} -- GitLab