Skip to content

Commit

Permalink
#148 pending RnD on units management
Browse files Browse the repository at this point in the history
eblondel committed May 14, 2020
1 parent ecfd865 commit 8c3ccaf
Showing 3 changed files with 63 additions and 1 deletion.
10 changes: 10 additions & 0 deletions R/GMLAbstractGML.R
Original file line number Diff line number Diff line change
@@ -16,6 +16,9 @@
#' \item{\code{new(xml, element, attrs, defaults)}}{
#' This method is used to instantiate a GML abstract GML
#' }
#' \item{\code{setDescription(description)}}{
#' Set the description
#' }
#' \item{\code{setDescriptionReference(descriptionReference)}}{
#' Set the descriptionReference
#' }
@@ -49,6 +52,8 @@ GMLAbstractGML <- R6Class("GMLAbstractGML",
public = list(
#+ metaDataProperty [0..*]
metaDataProperty = list(),
#+ description [0..1]
description = NULL,
#+ descriptionReference [0..1]: character
descriptionReference = NULL,
#+ identifier [0..1]: character
@@ -59,6 +64,11 @@ GMLAbstractGML <- R6Class("GMLAbstractGML",
if(is.null(element)) element <- private$xmlElement
super$initialize(xml, element = element, attrs = attrs, defaults = defaults, wrap = wrap)
},

#setDescription
setDescription = function(description){
self$description <- GMLElement$create("description", value = description)
},

#setDescriptionReference
setDescriptionReference = function(descriptionReference){
51 changes: 50 additions & 1 deletion R/GMLUnitDefinition.R
Original file line number Diff line number Diff line change
@@ -69,4 +69,53 @@ GMLUnitDefinition <- R6Class("GMLUnitDefinition",
self$catalogSymbol <- GMLElement$create("catalogSymbol", value = catalogSymbol)
}
)
)
)

GMLUnitDefinition$buildFrom = function(x, by = "symbol", unitsystem = "udunits2"){
out <- NULL
if(unitsystem == "udunits2"){
units_df <- units::valid_udunits()
unit <- units_df[units_df[,by] == x,]
if(nrow(unit)==0) return(NULL)
unitType <- unit$source_xml
unitClass <- switch(unitType,
"base" = GMLBaseUnit,
"derived" = GMLDerivedUnit,
"accepted" = GMLConventionalUnit,
"common" = GMLConventionalUnit
)
unitBaseUri <- paste0("https://mmisw.org/ont/mmi/udunits2-", unitType)
unitUri <- paste(unitBaseUri, unit$name_singular, sep="/")

gmlunit <- unitClass$new()
gmlunit$setIdentifier(unit$symbol, unitUri)
gmlunit$setCatalogSymbol(unit$symbol)
gmlunit$addName(unit$name_singular)
if(unit$definition != "") gmlunit$setDescription(unit$definition)
if(unitType == "base") gmlunit$setUnitsSystem(unitsystem)
if(unitType != "base"){
def <- unit$def
def_unit <- gsub("\\.", " ", gsub("/", " ",gsub("\\^", "-", def)))
def_unit_obj <- as_units(def_unit, implicit_exponents = TRUE)
def_unit_attrs <- attributes(def_unit_obj)$units

if(unitType == "derived"){
if(length(def_unit_attrs$denominator)>0){
denominators <- as.list(table(def_unit_attrs$denominator))
for(uom in names(denominators)){
gmlunit$addDerivationUnitTerm(uom, exponent = denominators[[uom]])
}
}
}else{
base_units_df <- units_df[units_df$source_xml == "base",]
def <- unit$def
def_unit <- gsub("\\.", " ", gsub("/", " ",gsub("\\^", "-", def)))
def_unit_comps <- unlist(strsplit(def_unit, " "))
}
}

out <- gmlunit

}
return(out)
}
3 changes: 3 additions & 0 deletions man/GMLAbstractGML.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 8c3ccaf

Please sign in to comment.