Skip to content

Commit

Permalink
#21 encoding/decoding GML geometric primitives
Browse files Browse the repository at this point in the history
  • Loading branch information
eblondel committed Jan 23, 2018
1 parent 83cdd94 commit 4fed6ec
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 9 deletions.
8 changes: 4 additions & 4 deletions R/GMLAbstractGeometry.R
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,10 @@ GMLAbstractGeometry <- R6Class("GMLAbstractGeometry",

GMLAbstractGeometry$fromSimpleFeatureGeometry = function(sfg){
if(!is(sfg, "sfg")) stop("Input 'sfg' should be a of class 'sfg' (Simple Feature Geometry)")
newvalue <- switch(class(value)[2],
"POINT" = GMLPoint$new(sfg=value),
"LINESTRING" = GMLLineString$new(sfg=value),
"POLYGON" = GMLPolygon$new(sfg=value)
newvalue <- switch(class(sfg)[2],
"POINT" = GMLPoint$new(sfg=sfg),
"LINESTRING" = GMLLineString$new(sfg=sfg),
"POLYGON" = GMLPolygon$new(sfg=sfg)
)
return(newvalue)
}
20 changes: 15 additions & 5 deletions R/ISOAbstractObject.R
Original file line number Diff line number Diff line change
Expand Up @@ -343,12 +343,22 @@ ISOAbstractObject <- R6Class("ISOAbstractObject",
}
}else{
if(nsPrefix == "gml"){
gmlElem <- GMLElement$new(element = fieldName)
gmlElem$decode(xml = childElement)
if(is(self[[fieldName]], "list")){
self[[fieldName]] <- c(self[[fieldName]], gmlElem)
if(inherits(self,"GMLAbstractRing")){
value <- xmlValue(child)
if(value=="") value <- NA
if(!is.na(value)){
values <- as.numeric(unlist(strsplit(value," ")))
m.values <- matrix(values, length(values)/2, 2, byrow = TRUE)
self[[fieldName]] <- m.values
}
}else{
self[[fieldName]] <- gmlElem
gmlElem <- GMLElement$new(element = fieldName)
gmlElem$decode(xml = childElement)
if(is(self[[fieldName]], "list")){
self[[fieldName]] <- c(self[[fieldName]], gmlElem)
}else{
self[[fieldName]] <- gmlElem
}
}
}else{
value <- xmlValue(child)
Expand Down

0 comments on commit 4fed6ec

Please sign in to comment.