diff --git a/R/getRawQWData.r b/R/getRawQWData.r index b4be17a3d28a82a44bf25f8276224eb9303dc6ac..ba601d64540b628f95b409ed567e0deaf6d4fa7c 100644 --- a/R/getRawQWData.r +++ b/R/getRawQWData.r @@ -5,7 +5,7 @@ #' 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 USGS site number. This is usually an 8 digit number -#' @param parameterCd vector of USGS 5-digit parameter code. Leaving this blank will return all of the measured values during the specified time period. +#' @param parameterCd vector of USGS 5-digit parameter code or string of characteristicNames. Leaving this blank will return all of the measured values during the specified time period. #' @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. #' @param interactive logical Option for interactive mode. If true, there is user interaction for error handling and data checks. @@ -24,17 +24,35 @@ retrieveWQPqwData <- function(siteNumber,parameterCd,startDate,endDate,interacti url <- constructNWISURL(siteNumber,parameterCd,startDate,endDate,"wqp",interactive=interactive) - h <- basicHeaderGatherer() - doc <- getURI(url, headerfunction = h$update) + retval = tryCatch({ + h <- basicHeaderGatherer() + doc <- getURL(url, headerfunction = h$update) + + }, warning = function(w) { + message(paste("URL caused a warning:", url)) + message(w) + }, error = function(e) { + message(paste("URL does not seem to exist:", url)) + message(e) + return(NA) + }) + numToBeReturned <- as.numeric(h$value()["Total-Result-Count"]) - if (!is.na(numToBeReturned) | numToBeReturned != 0){ - suppressWarnings(retval <- read.delim(url, header = TRUE, quote="\"", dec=".", sep='\t', colClasses=c('character'), fill = TRUE)) + + if (!is.na(numToBeReturned) | numToBeReturned != 0){ + + retval <- read.delim(textConnection(doc), header = TRUE, quote="\"", + dec=".", sep='\t', + colClasses=c('character'), + fill = TRUE) actualNumReturned <- nrow(retval) if(actualNumReturned != numToBeReturned) warning(numToBeReturned, " sample results were expected, ", actualNumReturned, " were returned") return(retval) + } else { warning("No data to retrieve") + return(NA) } }