From 6bf6d275167a0ffe78a1c9a808a8f02e2a95bc32 Mon Sep 17 00:00:00 2001 From: Laura DeCicco <ldecicco@usgs.gov> Date: Fri, 1 Aug 2014 16:52:22 -0500 Subject: [PATCH] Getting rid of duplicate code. Using getRawQWData instead. --- R/getWQPData.r | 90 ++++++++++++-------------------------------------- 1 file changed, 21 insertions(+), 69 deletions(-) diff --git a/R/getWQPData.r b/R/getWQPData.r index 582ebeea..b1995775 100644 --- a/R/getWQPData.r +++ b/R/getWQPData.r @@ -1,8 +1,8 @@ #' Data Import from Water Quality Portal #' -#' Imports data from Water Quality Portal web service. This function gets the data from here: \url{http://www.waterqualitydata.us}. This function is more general than getQWData +#' Imports data from Water Quality Portal web service. This function gets the data from: \url{http://www.waterqualitydata.us}. This function is more general than getQWData #' because it allows for other agencies rather than the USGS. Therefore, the 5-digit parameter code cannot be used. -#' Instead, this function uses characteristicName. A complete list can be found here \url{http://www.waterqualitydata.us/Codes/Characteristicname} +#' Instead, this function uses characteristicName. A complete list can be found here #' #' @param siteNumber string site number. If USGS, it should be in the form :'USGS-XXXXXXXXX...' #' @param characteristicName string @@ -16,77 +16,29 @@ #' @import RCurl #' @examples #' # These examples require an internet connection to run -#' getWQPData('USGS-01594440','Chloride', '', '') -#' getWQPData('WIDNR_WQX-10032762','Specific conductance', '', '') +#' Chloride <- getWQPData('USGS-01594440','Chloride', '', '') +#' SC <- getWQPData('WIDNR_WQX-10032762','Specific conductance', '', '') +#' NWIS_Cl <- getWQPData('USGS-04024000','30234', '', '') getWQPData <- function(siteNumber,characteristicName,StartDate,EndDate,interactive=TRUE){ - -# require(RCurl) - - StartDate <- formatCheckDate(StartDate, "StartDate", interactive=interactive) - EndDate <- formatCheckDate(EndDate, "EndDate", interactive=interactive) - dateReturn <- checkStartEndDate(StartDate, EndDate, interactive=interactive) - StartDate <- dateReturn[1] - EndDate <- dateReturn[2] - - if (nzchar(StartDate)){ - StartDate <- format(as.Date(StartDate), format="%m-%d-%Y") - } - if (nzchar(EndDate)){ - EndDate <- format(as.Date(EndDate), format="%m-%d-%Y") + retval <- getRawQWData(siteNumber=siteNumber, + ParameterCd=characteristicName, + StartDate=StartDate, + EndDate=EndDate, + interactive=interactive) + #Check for pcode: + if(all(nchar(characteristicName) == 5)){ + suppressWarnings(pCodeLogic <- all(!is.na(as.numeric(characteristicName)))) + } else { + pCodeLogic <- FALSE } - - characteristicName <- URLencode(characteristicName) - - baseURL <- "http://www.waterqualitydata.us/Result/search?siteid=" - url <- paste(baseURL, - siteNumber, - "&characteristicName=", - characteristicName, # to get multi-parameters, use a semicolen - "&startDateLo=", - StartDate, - "&startDateHi=", - EndDate, - "&countrycode=US&mimeType=tsv",sep = "") - h <- basicHeaderGatherer() - doc <- getURI(url, headerfunction = h$update) - numToBeReturned <- as.numeric(h$value()["Total-Result-Count"]) - - suppressWarnings(retval <- read.delim(url, header = TRUE, quote="\"", dec=".", sep='\t', colClasses=c('character'), fill = TRUE)) - - qualifier <- ifelse((retval$ResultDetectionConditionText == "Not Detected" | - retval$ResultDetectionConditionText == "Detected Not Quantified" | - retval$ResultMeasureValue < retval$DetectionQuantitationLimitMeasure.MeasureValue),"<","") - - correctedData<-ifelse((nchar(qualifier)==0),retval$ResultMeasureValue,retval$DetectionQuantitationLimitMeasure.MeasureValue) - test <- data.frame(retval$CharacteristicName) - - # test$dateTime <- as.POSIXct(strptime(paste(retval$ActivityStartDate,retval$ActivityStartTime.Time,sep=" "), "%Y-%m-%d %H:%M:%S")) - test$dateTime <- as.Date(retval$ActivityStartDate, "%Y-%m-%d") - - originalLength <- nrow(test) - - if (!is.na(numToBeReturned)){ - if(originalLength != numToBeReturned) warning(numToBeReturned, " sample results were expected, ", originalLength, " were returned") - - test$qualifier <- qualifier - test$value <- as.numeric(correctedData) - - test <- test[!is.na(test$dateTime),] - newLength <- nrow(test) - if (originalLength != newLength){ - numberRemoved <- originalLength - newLength - warningMessage <- paste(numberRemoved, " rows removed because no date was specified", sep="") - warning(warningMessage) - } - - colnames(test)<- c("CharacteristicName","dateTime","qualifier","value") - data <- reshape(test, idvar="dateTime", timevar = "CharacteristicName", direction="wide") - data$dateTime <- format(data$dateTime, "%Y-%m-%d") - data$dateTime <- as.Date(data$dateTime) - return(data) + + if(nrow(retval) > 0){ + data <- processQWData(retval,pCodeLogic) } else { - warning("No data retrieved") + data <- NULL } + return(data) + } -- GitLab