-
Laura A DeCicco authoredLaura A DeCicco authored
getRawQWData.r 2.33 KiB
#' Raw Data Import for USGS NWIS Water Quality Data
#'
#' Imports data from NWIS web service. This function gets the data from here: \url{http://www.waterqualitydata.us}
#' 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 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 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.
#' @keywords data import USGS web service
#' @return retval dataframe with first column dateTime, and at least one qualifier and value columns
#' (subsequent qualifier/value columns could follow depending on requested parameter codes)
#' @export
#' @import RCurl
#' @examples
#' # These examples require an internet connection to run
#' rawSample <- getRawQWData('USGS-01594440','01075', '1985-01-01', '1985-03-31')
#' rawSampleAll <- getRawQWData('USGS-05114000','', '1985-01-01', '1985-03-31')
#' rawSampleSelect <- getRawQWData('USGS-05114000',c('00915','00931'), '1985-01-01', '1985-04-30')
#' rawStoret <- getRawQWData('WIDNR_WQX-10032762','Specific conductance', '', '')
getRawQWData <- function(siteNumber,ParameterCd,StartDate,EndDate,interactive=TRUE){
url <- constructNWISURL(siteNumber,ParameterCd,StartDate,EndDate,"wqp",interactive=interactive)
h <- basicHeaderGatherer()
doc <- getURI(url, headerfunction = h$update)
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))
actualNumReturned <- nrow(retval)
if(actualNumReturned != numToBeReturned) warning(numToBeReturned, " sample results were expected, ", actualNumReturned, " were returned")
return(retval)
} else {
warning("No data to retrieve")
}
}