diff --git a/R/getNWISSites.R b/R/getNWISSites.R new file mode 100644 index 0000000000000000000000000000000000000000..78172d2c8e72bb81f7efe3da58cc0f3405b5bd54 --- /dev/null +++ b/R/getNWISSites.R @@ -0,0 +1,28 @@ +#' Site Data Import from NWIS +#' +#' Returns a list of sites from the NWIS web service. This function gets the data from: \url{http://waterservices.usgs.gov/rest/Site-Test-Tool.html}. +#' Arguments to the function should be based on \url{http://waterservices.usgs.gov/rest/Site-Service.html#Service} +#' +#' @param \dots see \url{http://waterservices.usgs.gov/rest/Site-Service.html#Service} for a complete list of options +#' @keywords data import NWIS web service +#' @return retval dataframe +#' @export +#' @examples +#' siteListPhos <- getNWISSites(stateCd="OH",parameterCd="00665") +getNWISSites <- function(...){ + + matchReturn <- match.call() + + values <- sapply(matchReturn[-1], function(x) URLencode(as.character(paste(x,collapse="",sep="")))) + + urlCall <- paste(paste(names(values),values,sep="="),collapse="&") + + + baseURL <- "http://waterservices.usgs.gov/nwis/site/?format=rdb&siteOutput=expanded&" + urlCall <- paste(baseURL, + urlCall,sep = "") + + retval <- getRDB1Data(urlCall) + + return(retval) +} diff --git a/R/getRDB1Data.r b/R/getRDB1Data.r index ded1fa2bd2e8b2fdaead39a3edfde6f0ca0d229d..2fe495e7326107c44d91c48f5460f0bf16e4b197 100644 --- a/R/getRDB1Data.r +++ b/R/getRDB1Data.r @@ -31,15 +31,19 @@ getRDB1Data <- function(obs_url,asDateTime=FALSE){ dataType <- tmp[1,] data <- tmp[-1,] - if (asDateTime){ - data[,regexpr('d$', dataType) > 0] <- as.POSIXct(strptime(data[,regexpr('d$', dataType) > 0], "%Y-%m-%d %H:%M")) - } else { - data[,regexpr('d$', dataType) > 0] <- as.Date(data[,regexpr('d$', dataType) > 0]) + if(sum(regexpr('d$', dataType) > 0) > 0){ + if (asDateTime){ + data[,regexpr('d$', dataType) > 0] <- as.POSIXct(strptime(data[,regexpr('d$', dataType) > 0], "%Y-%m-%d %H:%M")) + } else { + data[,regexpr('d$', dataType) > 0] <- as.Date(data[,regexpr('d$', dataType) > 0]) + } } - tempDF <- data[,which(regexpr('n$', dataType) > 0)] - tempDF <- suppressWarnings(sapply(tempDF, function(x) as.numeric(x))) - data[,which(regexpr('n$', dataType) > 0)] <- tempDF + if (sum(regexpr('n$', dataType) > 0) > 0){ + tempDF <- data[,which(regexpr('n$', dataType) > 0)] + tempDF <- suppressWarnings(sapply(tempDF, function(x) as.numeric(x))) + data[,which(regexpr('n$', dataType) > 0)] <- tempDF + } row.names(data) <- NULL return(data) }