diff --git a/R/importWaterML1.r b/R/importWaterML1.r index 99ae24044d4172fd54289decbf797c3cb603cbf7..db842fc3706f4b04076b083b74f8172bf22435b1 100644 --- a/R/importWaterML1.r +++ b/R/importWaterML1.r @@ -5,6 +5,10 @@ #' #' @param obs_url string containing the url for the retrieval #' @param asDateTime logical, if TRUE returns date and time as POSIXct, if FALSE, Date +#' @param tz string to set timezone attribute of datetime. Default is an empty quote, which converts the +#' datetimes to UTC (properly accounting for daylight savings times based on the data's provided tz_cd column). +#' Possible values to provide are "America/New_York","America/Chicago", "America/Denver","America/Los_Angeles", +#' "America/Anchorage","America/Honolulu","America/Jamaica","America/Managua","America/Phoenix", and "America/Metlakatla" #' @return mergedDF a data frame containing columns agency, site, dateTime, values, and remark codes for all requested combinations #' @export #' @import XML @@ -33,7 +37,7 @@ #' fileName <- "WaterML1Example.xml" #' fullPath <- file.path(filePath, fileName) #' importUserWM1 <- importWaterML1(fullPath) -importWaterML1 <- function(obs_url,asDateTime=FALSE){ +importWaterML1 <- function(obs_url,asDateTime=FALSE, tz=""){ if(url.exists(obs_url)){ doc = tryCatch({ @@ -59,6 +63,13 @@ importWaterML1 <- function(obs_url,asDateTime=FALSE){ doc <- xmlTreeParse(obs_url, getDTD = FALSE, useInternalNodes = TRUE) } + if(tz != ""){ + tz <- match.arg(tz, c("America/New_York","America/Chicago", + "America/Denver","America/Los_Angeles", + "America/Anchorage","America/Honolulu", + "America/Jamaica","America/Managua", + "America/Phoenix","America/Metlakatla")) + } doc <- xmlRoot(doc) ns <- xmlNamespaceDefinitions(doc, simplify = TRUE) @@ -105,6 +116,11 @@ importWaterML1 <- function(obs_url,asDateTime=FALSE){ tzAbbriev <- as.character(zoneAbbrievs[tzHoursOff]) datetime <- datetime - tzHours*60*60 + + if(tz != ""){ + attr(datetime, "tzone") <- tz + } + } else { datetime <- as.Date(strptime(xpathSApply(subChunk, "ns1:value/@dateTime",namespaces = chunkNS),"%Y-%m-%dT%H:%M:%S")) } diff --git a/R/importWaterML2.r b/R/importWaterML2.r index 9d414ab32b7db8e649d28de157bdc7753c0e617c..d572e04ce6a2ead384f841dafc8a8ddc016410b5 100644 --- a/R/importWaterML2.r +++ b/R/importWaterML2.r @@ -4,6 +4,10 @@ #' #' @param obs_url string containing the url for the retrieval #' @param asDateTime logical, if TRUE returns date and time as POSIXct, if FALSE, Date +#' @param tz string to set timezone attribute of datetime. Default is an empty quote, which converts the +#' datetimes to UTC (properly accounting for daylight savings times based on the data's provided tz_cd column). +#' Possible values to provide are "America/New_York","America/Chicago", "America/Denver","America/Los_Angeles", +#' "America/Anchorage","America/Honolulu","America/Jamaica","America/Managua","America/Phoenix", and "America/Metlakatla" #' @return mergedDF a data frame containing columns agency, site, dateTime, values, and remark codes for all requested combinations #' @export #' @import XML @@ -35,7 +39,7 @@ #' fullPath <- file.path(filePath, fileName) #' UserData <- importWaterML2(fullPath) #' } -importWaterML2 <- function(obs_url, asDateTime=FALSE){ +importWaterML2 <- function(obs_url, asDateTime=FALSE, tz=""){ if(url.exists(obs_url)){ doc = tryCatch({ @@ -62,6 +66,14 @@ importWaterML2 <- function(obs_url, asDateTime=FALSE){ doc <- xmlTreeParse(obs_url, getDTD = FALSE, useInternalNodes = TRUE) } + if(tz != ""){ + tz <- match.arg(tz, c("America/New_York","America/Chicago", + "America/Denver","America/Los_Angeles", + "America/Anchorage","America/Honolulu", + "America/Jamaica","America/Managua", + "America/Phoenix","America/Metlakatla")) + } + doc <- xmlRoot(doc) ns <- xmlNamespaceDefinitions(doc, simplify = TRUE) @@ -101,6 +113,11 @@ importWaterML2 <- function(obs_url, asDateTime=FALSE){ as.POSIXct(DF2$time, format="%Y-%m-%dT%H%M%S",tz="UTC")) DF2$time <- as.POSIXct(DF2$time, origin = "1970-01-01", tz="UTC") + + if(tz != ""){ + attr(DF2$time, "tzone") <- tz + } + } else { DF2$time <- as.Date(DF2$time) } diff --git a/man/importWaterML1.Rd b/man/importWaterML1.Rd index 89affbe2b90d764d94ae39d43a20a6e3c86d65fa..f2602018d474303b013e55b2322e47a35b7cc1f8 100644 --- a/man/importWaterML1.Rd +++ b/man/importWaterML1.Rd @@ -3,12 +3,17 @@ \alias{importWaterML1} \title{Function to return data from the NWISWeb WaterML1.1 service} \usage{ -importWaterML1(obs_url, asDateTime = FALSE) +importWaterML1(obs_url, asDateTime = FALSE, tz = "") } \arguments{ \item{obs_url}{string containing the url for the retrieval} \item{asDateTime}{logical, if TRUE returns date and time as POSIXct, if FALSE, Date} + +\item{tz}{string to set timezone attribute of datetime. Default is an empty quote, which converts the +datetimes to UTC (properly accounting for daylight savings times based on the data's provided tz_cd column). +Possible values to provide are "America/New_York","America/Chicago", "America/Denver","America/Los_Angeles", +"America/Anchorage","America/Honolulu","America/Jamaica","America/Managua","America/Phoenix", and "America/Metlakatla"} } \value{ mergedDF a data frame containing columns agency, site, dateTime, values, and remark codes for all requested combinations diff --git a/man/importWaterML2.Rd b/man/importWaterML2.Rd index 17f04c3fdf48c255e4e61c105a9966d740b62350..bf77757ed241a1f019eaf57dbd8682fd44e7c321 100644 --- a/man/importWaterML2.Rd +++ b/man/importWaterML2.Rd @@ -3,12 +3,17 @@ \alias{importWaterML2} \title{Function to return data from the WaterML2 data} \usage{ -importWaterML2(obs_url, asDateTime = FALSE) +importWaterML2(obs_url, asDateTime = FALSE, tz = "") } \arguments{ \item{obs_url}{string containing the url for the retrieval} \item{asDateTime}{logical, if TRUE returns date and time as POSIXct, if FALSE, Date} + +\item{tz}{string to set timezone attribute of datetime. Default is an empty quote, which converts the +datetimes to UTC (properly accounting for daylight savings times based on the data's provided tz_cd column). +Possible values to provide are "America/New_York","America/Chicago", "America/Denver","America/Los_Angeles", +"America/Anchorage","America/Honolulu","America/Jamaica","America/Managua","America/Phoenix", and "America/Metlakatla"} } \value{ mergedDF a data frame containing columns agency, site, dateTime, values, and remark codes for all requested combinations