From d6b1b0443c1de55feba8f64f7de5e9dbe94e5ddf Mon Sep 17 00:00:00 2001 From: unknown <ldecicco@usgs.gov> Date: Fri, 12 Dec 2014 15:57:06 -0600 Subject: [PATCH] Added 'all' option to readNWISpCode function. Returns all pCodes with a new call to the service. --- R/readNWISpCode.r | 74 ++++++++++++++++++++++++++--------------------- 1 file changed, 41 insertions(+), 33 deletions(-) diff --git a/R/readNWISpCode.r b/R/readNWISpCode.r index f6afad53..92e05b64 100644 --- a/R/readNWISpCode.r +++ b/R/readNWISpCode.r @@ -1,9 +1,11 @@ #' USGS Parameter Data Retrieval #' -#' Imports data from NWIS about meaured parameter based on user-supplied parameter code. +#' Imports data from NWIS about meaured parameter based on user-supplied parameter code or codes. #' This function gets the data from here: \url{http://nwis.waterdata.usgs.gov/nwis/pmcodes} #' -#' @param parameterCd character of USGS parameter codes (or multiple parameter codes). This is usually an 5 digit number. +#' @param parameterCd character of USGS parameter codes (or multiple parameter codes). These are 5 digit number codes +#' that can be found here: \link{http://help.waterdata.usgs.gov/codes-and-parameters/parameters}. To get a +#' complete list of all current parameter codes in the USGS, use "all" as the input. #' @keywords data import USGS web service #' @return parameterData data frame with all information from the USGS about the particular parameter. #' @@ -22,43 +24,49 @@ #' paramINFO <- readNWISpCode(c('01075','00060','00931')) readNWISpCode <- function(parameterCd){ - pcodeCheck <- all(nchar(parameterCd) == 5) & all(!is.na(suppressWarnings(as.numeric(parameterCd)))) + if(any(parameterCd == "all")){ + fullURL <- "http://nwis.waterdata.usgs.gov/nwis/pmcodes/pmcodes?radio_pm_search=param_group&pm_group=All+--+include+all+parameter+groups&format=rdb&show=parameter_group_nm&show=parameter_nm&show=casrn&show=srsname&show=parameter_units" + fullPcodeDownload <- importRDB1(fullURL) + return(fullPcodeDownload) + + } else { + pcodeCheck <- all(nchar(parameterCd) == 5) & all(!is.na(suppressWarnings(as.numeric(parameterCd)))) - if(!pcodeCheck){ - goodIndex <- which(parameterCd %in% parameterCdFile$parameter_cd) - if(length(goodIndex) > 0){ - badPcode <- parameterCd[-goodIndex] - } else { - badPcode <- parameterCd + if(!pcodeCheck){ + goodIndex <- which(parameterCd %in% parameterCdFile$parameter_cd) + if(length(goodIndex) > 0){ + badPcode <- parameterCd[-goodIndex] + } else { + badPcode <- parameterCd + } + message("The following pCodes seem mistyped:",paste(badPcode,collapse=",")) + parameterCd <- parameterCd[goodIndex] } - message("The following pCodes seem mistyped:",paste(badPcode,collapse=",")) - parameterCd <- parameterCd[goodIndex] - } - - parameterData <- parameterCdFile[parameterCdFile$parameter_cd %in% parameterCd,] - - if(nrow(parameterData) != length(parameterCd)){ - if(length(parameterCd) == 1){ - url <- paste0("http://nwis.waterdata.usgs.gov/nwis/pmcodes/pmcodes?radio_pm_search=pm_search", - "&pm_search=", parameterCd, - "&format=rdb", "&show=parameter_group_nm", - "&show=parameter_nm", "&show=casrn", - "&show=srsname", "&show=parameter_units") - newData <- importRDB1(url,asDateTime = FALSE) - } else { + parameterData <- parameterCdFile[parameterCdFile$parameter_cd %in% parameterCd,] + + if(nrow(parameterData) != length(parameterCd)){ - #TODO: add else... - fullURL <- "http://nwis.waterdata.usgs.gov/nwis/pmcodes/pmcodes?radio_pm_search=param_group&pm_group=All+--+include+all+parameter+groups&format=rdb&show=parameter_group_nm&show=parameter_nm&show=casrn&show=srsname&show=parameter_units" - fullPcodeDownload <- importRDB1(fullURL) - newData <- fullPcodeDownload[fullPcodeDownload$parameter_cd %in% parameterCd,] + if(length(parameterCd) == 1){ + url <- paste0("http://nwis.waterdata.usgs.gov/nwis/pmcodes/pmcodes?radio_pm_search=pm_search", + "&pm_search=", parameterCd, + "&format=rdb", "&show=parameter_group_nm", + "&show=parameter_nm", "&show=casrn", + "&show=srsname", "&show=parameter_units") + newData <- importRDB1(url,asDateTime = FALSE) + } else { + + #TODO: add else... + fullURL <- "http://nwis.waterdata.usgs.gov/nwis/pmcodes/pmcodes?radio_pm_search=param_group&pm_group=All+--+include+all+parameter+groups&format=rdb&show=parameter_group_nm&show=parameter_nm&show=casrn&show=srsname&show=parameter_units" + fullPcodeDownload <- importRDB1(fullURL) + newData <- fullPcodeDownload[fullPcodeDownload$parameter_cd %in% parameterCd,] + + } + return(newData) + } else { + return(parameterData) } - return(newData) - - } else { - return(parameterData) } - } -- GitLab