From a4a79738258d9ba077d0d8639b3b41fd2f40eb4a Mon Sep 17 00:00:00 2001
From: unknown <ldecicco@usgs.gov>
Date: Tue, 16 Dec 2014 14:40:33 -0600
Subject: [PATCH] Fixing WaterML2 qualifier.

---
 R/importWaterML2.r | 39 +++++++++++++++++++++++++++++----------
 1 file changed, 29 insertions(+), 10 deletions(-)

diff --git a/R/importWaterML2.r b/R/importWaterML2.r
index 5b955009..5d4fec0b 100644
--- a/R/importWaterML2.r
+++ b/R/importWaterML2.r
@@ -77,13 +77,22 @@ importWaterML2 <- function(obs_url, asDateTime=FALSE, tz=""){
     chunk <- xmlRoot(chunk)
     chunkNS <- xmlNamespaceDefinitions(chunk, simplify = TRUE)
     
+#     xp <- xpathApply(chunk, "//wml2:MeasurementTimeseries/wml2:point/wml2:MeasurementTVP", 
+#                      xpathSApply, ".//*[not(*)]", 
+#                      function(x) setNames(ifelse(nzchar(xmlValue(x)), 
+#                                        xmlValue(x), 
+#                                           ifelse("qualifier" == xmlName(x),
+#                                                 xpathSApply(x,"./@xlink:title",namespaces = ns),"")), #originally I had the "" as xmlAttr(x) 
+#                                                     xmlName(x)), 
+#                      namespaces = chunkNS)
+    
     xp <- xpathApply(chunk, "//wml2:MeasurementTimeseries/wml2:point/wml2:MeasurementTVP", 
                      xpathSApply, ".//*[not(*)]", 
                      function(x) setNames(ifelse(nzchar(xmlValue(x)), 
-                                       xmlValue(x), 
-                                          ifelse("qualifier" == xmlName(x),
-                                                xpathSApply(x,"./@xlink:title",namespaces = ns),"")), #originally I had the "" as xmlAttr(x) 
-                                                    xmlName(x)), 
+                                                 xmlValue(x), 
+                                                 ifelse("qualifier" == xmlName(x),
+                                                        xpathSApply(x,"./@xlink:title",namespaces = ns),"")), #originally I had the "" as xmlAttr(x) 
+                                          xmlName(x,full=TRUE)), 
                      namespaces = chunkNS)
   
     if(length(xpathApply(doc, 
@@ -91,9 +100,12 @@ importWaterML2 <- function(obs_url, asDateTime=FALSE, tz=""){
                   xmlValue, namespaces = ns)) != 0){
       xp <- xp[-1]
     }
-      
+
+    
     DF2 <- do.call(rbind.fill.matrix, lapply(xp, t))
     DF2 <- as.data.frame(DF2,stringsAsFactors=FALSE)
+
+    names(DF2)[grep("wml2",names(DF2))] <- sub("wml2:","",names(DF2)[grep("wml2",names(DF2))])
     
     if(asDateTime){
     
@@ -113,6 +125,8 @@ importWaterML2 <- function(obs_url, asDateTime=FALSE, tz=""){
     }
   
     DF2$value <- as.numeric(DF2$value)
+    
+#########################################
     # Very specific to USGS:
     defaultQualifier <- as.character(xpathApply(chunk, "//wml2:defaultPointMetadata/wml2:DefaultTVPMeasurementMetadata/wml2:qualifier/@xlink:title",namespaces = chunkNS))
     
@@ -120,17 +134,22 @@ importWaterML2 <- function(obs_url, asDateTime=FALSE, tz=""){
       defaultQualifier <- "NA"
     }
     
-    if("qualifier" %in% names(DF2)){
-      DF2$qualifier <- ifelse(defaultQualifier != DF2$qualifier,DF2$qualifier,defaultQualifier)
+    if("swe:value" %in% names(DF2)){
+      isQual <- as.character(xpathApply(chunk, 
+                                        "//wml2:MeasurementTimeseries/wml2:point/wml2:MeasurementTVP/wml2:metadata/wml2:TVPMeasurementMetadata/wml2:qualifier/@xlink:title",
+                                        namespaces = chunkNS))
+      DF2$qualifier <- ifelse(defaultQualifier != isQual,isQual,defaultQualifier)
+      DF2$`swe:value` <- NULL
     } else {
       DF2$qualifier <- rep(defaultQualifier,nrow(DF2))
     }
     
     
-    DF2$qualifier <- ifelse("Provisional data subject to revision." == DF2$qualifier, "P",
-                               ifelse("Approved for publication. Processing and review completed." == DF2$qualifier, "A", DF2$qualifier))
+#     DF2$qualifier <- ifelse("Provisional data subject to revision." == DF2$qualifier, "P",
+#                                ifelse("Approved for publication. Processing and review completed." == DF2$qualifier, "A", DF2$qualifier))
     
-  
+#########################################
+
     id <- as.character(xpathApply(chunk, "//gml:identifier", xmlValue, namespaces = chunkNS))
     DF2$identifier <- rep(id, nrow(DF2))
     
-- 
GitLab