Skip to content

Commit

Permalink
Handle SpatRaster class rasters
Browse files Browse the repository at this point in the history
Handle SpatRaster class rasters from terra package.
  • Loading branch information
saraya209 authored Feb 10, 2022
1 parent 4e88026 commit 9d58543
Showing 1 changed file with 30 additions and 15 deletions.
45 changes: 30 additions & 15 deletions R/gplot_data.R
Original file line number Diff line number Diff line change
Expand Up @@ -15,21 +15,36 @@
#' @export

gplot_data <- function(x, maxpixels = 50000) {
x <- raster::sampleRegular(x, maxpixels, asRaster = TRUE)
coords <- raster::xyFromCell(x, seq_len(raster::ncell(x)))
## Extract values
dat <- utils::stack(as.data.frame(raster::getValues(x)))
names(dat) <- c('value', 'variable')
# If only one variable
if (dat$variable[1] == "raster::getValues(x)") {
dat$variable <- names(x)
}

dat <- dplyr::as_tibble(data.frame(coords, dat))

if (!is.null(levels(x))) {
dat <- dplyr::left_join(dat, levels(x)[[1]],
by = c("value" = "ID"))
if (class(x) == "SpatRaster"){ # work with terra package rasters
x <- terra::spatSample(x, maxpixels, as.raster = TRUE)

This comment has been minimized.

Copy link
@saraya209

saraya209 Feb 10, 2022

Author

x <- terra::spatSample(x, maxpixels, method = 'regular', as.raster = TRUE)

coords <- terra::xyFromCell(x, seq_len(terra::ncell(x)))
## Extract values
dat <- utils::stack(as.data.frame(terra::values(x)))
names(dat) <- c('value', 'variable')
# If only one variable
if (dat$variable[1] == "terra::values(x)") {
dat$variable <- names(x)
}

dat <- dplyr::as_tibble(data.frame(coords, dat))
## OLD `gplot_data` FUNCTION
}else{ # work with raster package rasters
x <- raster::sampleRegular(x, maxpixels, asRaster = TRUE)
coords <- raster::xyFromCell(x, seq_len(raster::ncell(x)))
## Extract values
dat <- utils::stack(as.data.frame(raster::getValues(x)))
names(dat) <- c('value', 'variable')
# If only one variable
if (dat$variable[1] == "raster::getValues(x)") {
dat$variable <- names(x)
}

dat <- dplyr::as_tibble(data.frame(coords, dat))

if (!is.null(levels(x))) {
dat <- dplyr::left_join(dat, levels(x)[[1]],
by = c("value" = "ID"))
}
}
dat
}

0 comments on commit 9d58543

Please sign in to comment.