expect_maps_equal <- function(m1, m2) {
attr(m1$x, "leafletData") <- NULL
attr(m2$x, "leafletData") <- NULL
expect_equal(m1, m2, ignore_function_env = TRUE, ignore_formula_env = TRUE)
}
# Some proj4string values differ only by one having whole numbers represented as
# x while others have x.0. So, strip each trailing .0 value.
normalize_zero_values <- function(str) {
gsub("=(\\d+).0( |$)", "=\\1\\2", str)
}
test_that("rasters", {
skip_if_not_installed("terra")
library(terra)
library(raster)
lux <- rast(system.file("ex/elev.tif", package="terra"))
pmerc <- "+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs"
plux <- projectRasterForLeaflet(lux, "bilinear")
expect_equal(normalize_zero_values(crs(plux, proj=TRUE)), pmerc)
test <- projectRasterForLeaflet(raster(lux), "bilinear")
expect_equal(normalize_zero_values(proj4string(test)), pmerc)
# terra and raster have different projection algorithms, and while
# their outputs are very similar, they are not identical. Hence we need
# to use pre-projected rasters and project=FALSE
rtest <- function(x) {
leaflet() %>% addTiles() %>% addRasterImage(x, project=FALSE)
}
(r1 <- rtest(plux))
(r2 <- rtest(raster(plux)))
expect_maps_equal(r1, r2)
# test with color map
r <- rast(ncols=10, nrows=10, vals=rep_len(10:15, length.out=100), xmin=0, xmax=10^6, ymin=0, ymax=10^6, crs=pmerc)
r[5,] <- NA
coltab(r) <- c(rep("#FFFFFF", 10), rainbow(6, end=.9))
(r3 <- rtest(r))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.