options(rgdal_show_exportToProj4_warnings = "none") suppressPackageStartupMessages(library(stars)) if (suppressPackageStartupMessages(require(sp, quietly = TRUE)) && require("raster", quietly = TRUE) && suppressPackageStartupMessages(require("terra", quietly = TRUE))) { tif = system.file("tif/L7_ETMs.tif", package = "stars") (x = read_stars(tif)) (r = as(x, "Raster")) (y = st_as_stars(r)) # single band: x = adrop(x[,,,1]) r = as(x, "Raster") (y = st_as_stars(r)) # proxy: (x = read_stars(tif, proxy = TRUE)) (r = as(x, "Raster")) (y = st_as_stars(r)) (y2 = st_as_stars(r, proxy = TRUE)) } if (require(terra, quietly = TRUE)) { ## terra ------------- stopifnot(require(terra)) (x = read_stars(tif)) (r = as(x, "SpatRaster")) (y = st_as_stars(r)) # single band: x = adrop(x[,,,1]) r = as(x, "SpatRaster") (y = st_as_stars(r)) # proxy: (x = read_stars(tif, proxy = TRUE)) (r = as(x, "SpatRaster")) (y = st_as_stars(r)) (y2 = st_as_stars(r, proxy = TRUE)) f = system.file("tif/lc.tif", package = "stars") lc = read_stars(system.file("tif/lc.tif", package = "stars")) levels(lc[[1]]) r = rast(lc) e = attr(lc[[1]], "exclude") if (packageVersion("terra") >= "1.5.48") { print(all.equal(terra::levels(r)[[1]][,2], terra::levels(rast(f))[[1]][!e,2])) print(all.equal(terra::coltab(r)[[1]][!e,], terra::coltab(rast(f))[[1]][!e,], check.attributes = FALSE)) r<- rast(nrow=10, ncol=10) set.seed(5) values(r)<- sample(1:3, size = ncell(r), replace = TRUE) levels(r) <- data.frame(ID=1:3, category = c("c1", "c2", "c3")) r2<- rast(nrow=10, ncol=10) set.seed(6) values(r2)<- sample(c(0,2,3), size = ncell(r2), replace = TRUE) levels(r2) <- data.frame(ID=c(0,2,3), category = c("x1", "x2", "x3")) r3<- c(r,r2) names(r3)<- c("lyr.1", "lyr.2") r3_stars<- st_as_stars(r3) st_redimension(r3_stars) |> print() rast(r3_stars) |> levels() |> print() m = matrix(1:121, 11, 11) bb = st_bbox(c(xmin=0, xmax=11, ymin=0, ymax=11)) s = st_as_stars(bb, values = m) r = rast(s) aggregate(r, 2) |> st_as_stars() -> r.s stopifnot(isTRUE(all.equal(r.s[,1:5,1:5], st_downsample(s, 1, FUN = mean)))) } }