library(raster)
tmpfiles <- list.files(tempdir()) # any pre-existing temp files
test_that("tile works on different inputs", {
skip_on_cran()
files <- list.files(system.file("maps", package = "tiler"), full.names = TRUE)
files <- files[!grepl("gri$", files)]
tiles <- file.path(tempdir(), gsub("[.]", "_", basename(files)))
crs <- paste(
"+proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=37.5 +lon_0=-96",
"+x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs +towgs84=0,0,0")
clrs <- colorRampPalette(c("blue", "#FFFFFF", "#FF0000"))(30)
nacol <- "#FFFF00"
# A non-problematic warning is thrown only when running some testthat tests
# non-interactively. "no non-missing arguments to" min and max. The tests
# pass but the extra warning needs to be suppressed.
# Test RGB/RGBA multi-band rasters
idx <- grep("rgb", files)
idx <- grep("albers_rgb", files) ## TODO: wgs84 RGB/RGBA files fail; see raster#315
suppressWarnings(for(i in idx)
expect_is(tile(files[i], tiles[i], "0"), "NULL"))
files <- files[-idx]
tiles <- tiles[-idx]
# Test rejection of file with number of layers other than 1, 3 or 4
r <- raster(files[basename(files) == "map_albers.grd"])
r <- stack(r, r)
tmp <- tmprst()
writeRaster(r, tmp)
err <- "`file` is multi-band but does not appear to be RGB or RGBA layers."
expect_error(tile(tmp, "tmp_raster", "0"), err)
unlink(c(tmp, "tmp_raster"), recursive = TRUE, force = TRUE)
# test png (jpg and bmp tested elsewhere)
idx <- which(basename(files) == "map.png")
expect_is(tile(files[idx], tiles[idx], "4"), "NULL")
files <- files[-idx]
tiles <- tiles[-idx]
# missing CRS
# Change needed: These files used to read in with raster as having NA for crs,
# but no longer do. It looks like wgs84 is assumed on read.
# See data-raw/data.R for context.
warn <- paste(
"Projection expected but is missing. Continuing as non-geographic image.",
"input and ouput crs are the same", # this line is not intended to be applicable
sep = "|"
)
idx <- grep("NA.grd|NA.tif", files)[-4] # dropping last file; only one that doesn't throw warning
for(i in idx) expect_warning(tile(files[i], tiles[i], "0"), warn)
# These used to all produce the first warning above based on an NA-valued CRS for the prepared files.
# force CRS
suppressWarnings(for(i in idx[1:2])
expect_is(tile(files[i], tiles[i], "0", crs), "NULL"))
# test remaining geographic maps
idx <- which(!grepl("\\.nc$|NA", files) == TRUE)
idx <- which(!grepl("\\.nc$|NA|wgs84_rgb", files) == TRUE) ## TODO: wgs84 RGB/RGBA files fail; see raster#315
suppressWarnings(
for(i in idx) expect_is(tile(files[i], tiles[i], "0"), "NULL") )
unlink(file.path(tempdir(), "map_*"), recursive = TRUE, force = TRUE)
idx <- which(basename(files) == "map_albers.grd")
file <- files[idx]
tiles <- tiles[idx]
# colors
suppressWarnings(expect_is(tile(file, tiles, "0", col = clrs, colNA = nacol),
"NULL"))
# resume
suppressWarnings(expect_is(tile(file, tiles, "0-1", resume = TRUE), "NULL"))
unlink(file.path(tempdir(), "map_*"), recursive = TRUE, force = TRUE)
# format, method, alpha
suppressWarnings(
expect_is(
tile(file, tiles, "0", format = "tms", method = "ngb", alpha = TRUE),
"NULL"
)
)
unlink(file.path(tempdir(), "map_*"), recursive = TRUE, force = TRUE)
unlink(file.path(tempdir(), "preview.html"), force = TRUE)
})
test_that("tile works in parallel", {
skip_on_cran()
skip_if_not_installed("tiler")
skip_if_not_installed("parallel")
files <- list.files(system.file("maps", package = "tiler"), full.names = TRUE, pattern = "[.]tif")
files <- grep("wgs84_rgb", files, value = TRUE, invert = TRUE) ## TODO: wgs84 RGB/RGBA files fail; see raster#315
tiles <- file.path(tempdir(), gsub("[.]", "_", basename(files)))
cl <- parallel::makeCluster(2, type = "PSOCK")
res <- parallel::clusterMap(cl, f = files, t = tiles, fun = function(f, t) {
testthat::expect_is(tiler::tile(f, t, "0"), "NULL")
})
parallel::stopCluster(cl)
unlink(tiles, recursive = TRUE, force = TRUE)
unlink(file.path(tempdir(), "preview.html"), force = TRUE)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.