R/dimensions.R

# Author: Babak Naimi, naimi.b@gmail.com
# Date :  Feb. 2024
# Last Update :  Feb. 2024
# Version 1.0
# Licence GPL v3
#---------------------

if (!isGeneric("nrow")) { setGeneric("nrow", function(x) standardGeneric("nrow")) }
if (!isGeneric("ncol")) { setGeneric("nrow", function(x) standardGeneric("nrow")) }
if (!isGeneric("ncell")) { setGeneric("ncell", function(x) standardGeneric("ncell")) }
if (!isGeneric("res")) { setGeneric("res", function(x) standardGeneric("res")) }
if (!isGeneric("xres")) { setGeneric("xres", function(x) standardGeneric("xres")) }
if (!isGeneric("yres")) { setGeneric("yres", function(x) standardGeneric("yres")) }
if (!isGeneric("nlyr")) { setGeneric("nlyr", function(x) standardGeneric("nlyr")) }

setMethod("dim", signature(x="stcube"),
          function(x){ 
            if (x@format == 'tseq') {
              c(nrow(x@cube), ncol(x@cube), nlyr(x@cube[[1]]),length(names(x)))
            } else {
              c(nrow(x@cube), ncol(x@cube), length(x@cube),length(names(x)))
            }
          }
          
)



setMethod("nrow", signature(x="stcube"),
          function(x) {
            nrow(x@cube)
          }
)

setMethod("ncol", signature(x="stcube"),
          function(x) {
            ncol(x@cube)
          }
)

setMethod("nlyr", signature(x="stcube"),
          function(x) {
            
            if (x@format == 'tseq') {
              return(nlyr(x@cube[1]) * length(names(x)))
            } else {
              return( length(x@cube)*length(names(x)))
            }
          }
)




setMethod("ncell", signature(x="stcube"),
          function(x) {
            return(as.numeric(ncol(x)) * nrow(x))
          }
)




setMethod("res", signature(x="stcube"),
          function(x) {
            res(x@cube)
          }
)

setMethod("xres", signature(x="stcube"),
          function(x) {
            res(x)[1]
          }
)

setMethod("yres", signature(x="stcube"),
          function(x) {
            res(x)[2]
          }
)
babaknaimi/rts documentation built on June 18, 2024, 11:31 p.m.