From 64a65ab0412f852394119242d696e4ac9cd5a33b Mon Sep 17 00:00:00 2001 From: unknown <ldecicco@usgs.gov> Date: Thu, 30 Oct 2014 17:04:27 -0500 Subject: [PATCH] Added timezone overwrites to import functions. --- R/importWaterML1.r | 18 +++++++++++++++++- R/importWaterML2.r | 19 ++++++++++++++++++- man/importWaterML1.Rd | 7 ++++++- man/importWaterML2.Rd | 7 ++++++- 4 files changed, 47 insertions(+), 4 deletions(-) diff --git a/R/importWaterML1.r b/R/importWaterML1.r index 99ae2404..db842fc3 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 9d414ab3..d572e04c 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 89affbe2..f2602018 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 17f04c3f..bf77757e 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 -- GitLab