diff --git a/R/as.s2dv_cube.R b/R/as.s2dv_cube.R index c8e05365a02e02a17cee340317234c20f5134e7e..5c656a516c794837187122c1ab611abe51c1872e 100644 --- a/R/as.s2dv_cube.R +++ b/R/as.s2dv_cube.R @@ -119,14 +119,42 @@ as.s2dv_cube <- function(object) { result <- list() result$data <- as.vector(object) dim(result$data) <- dim(object) - result$lon <- attributes(object)$Variables$dat1$longitude - result$lat <- attributes(object)$Variables$dat1$latitude - vars <- which(names(attributes(object)$Variables$common) != 'time') - if (length(vars) > 1) { - warning("More than one variable has been provided and ", - "only the first one will be used.") - vars <- vars[1] - } + + dat_attr_names <- names(attributes(object)$Variables$dat1) + common_attr_names <- names(attributes(object)$Variables$common) + # $lon + known_lon_names <- s2dv:::.KnownLonNames() + if (!is.null(dat_attr_names[which(dat_attr_names %in% known_lon_names)]) & + !identical(dat_attr_names[which(dat_attr_names %in% known_lon_names)], character(0))) { + result$lon <- attributes(object)$Variables$dat1[[dat_attr_names[which(dat_attr_names %in% known_lon_names)]]] + } else if (!is.null(common_attr_names[which(common_attr_names %in% known_lon_names)]) & + !identical(common_attr_names[which(common_attr_names %in% known_lon_names)], character(0))) { + result$lon <- attributes(object)$Variables$common[[common_attr_names[which(common_attr_names %in% known_lon_names)]]] + } else { + warning("'lon' is not found in this object.") + result$lon <- NULL + } + # $lat + known_lat_names <- s2dv:::.KnownLatNames() + if (!is.null(dat_attr_names[which(dat_attr_names %in% known_lat_names)]) & + !identical(dat_attr_names[which(dat_attr_names %in% known_lat_names)], character(0))) { + result$lat <- attributes(object)$Variables$dat1[[dat_attr_names[which(dat_attr_names %in% known_lat_names)]]] + } else if (!is.null(common_attr_names[which(common_attr_names %in% known_lat_names)]) & + !identical(common_attr_names[which(common_attr_names %in% known_lat_names)], character(0))) { + result$lat <- attributes(object)$Variables$common[[common_attr_names[which(common_attr_names %in% known_lat_names)]]] + } else { + warning("'lat' is not found in this object.") + result$lat <- NULL + } + + vars <- which(!common_attr_names %in% c("time", known_lon_names, known_lat_names)) + + if (length(vars) > 1) { + warning("More than one variable has been provided and ", + "only the first one '", common_attr_names[vars[1]],"' will be used.") + vars <- vars[1] + } + Variable <- list() Variable$varName <- names(attributes(object)$Variables$common)[vars] attr(Variable, 'variable') <- attributes(object)$Variables$common[[vars]]