tests/testthat/test-ee_image.R

context("rgee: sf_as_stars test")

library(rgee)
ee_Initialize(drive = TRUE, gcs = TRUE)
# -------------------------------------------------------------------------

img <- ee$Image("LANDSAT/LC08/C01/T1_SR/LC08_038029_20180810")$
  select(c("B4", "B3", "B2"))$
  divide(10000)

geometry <- ee$Geometry$Rectangle(
  coords = c(-110.8, 44.6, -110.6, 44.7),
  proj = "EPSG:4326",
  geodesic = FALSE
)
tif <- system.file("tif/L7_ETMs.tif", package = "stars")
stars_x <- stars::read_stars(tif)
starsproxy_x <- stars::read_stars(tif, proxy = TRUE)
assetId <- sprintf("%s/%s",ee_get_assethome(),'stars_l7')
image_srtm <- ee$Image("CGIAR/SRTM90_V4")


# ee_as_stars lazy ---------------------------------------------------
test_that('image lazy', {
  img_stars_01 <- ee_as_stars(
    image = img,
    region = geometry,
    scale = 250,
    via = "drive",
    lazy = TRUE
  )

  img_stars_02 <- ee_as_stars(
    image = img,
    region = geometry,
    scale = 250,
    via = "gcs",
    container = "rgeedev2",
    lazy = TRUE
  )
  expect_s3_class(img_stars_01, "Future")
  expect_s3_class(img_stars_02, "Future")
})

# getInfo geometry ---------------------------------------------------
test_that('Geometry consideration for "getInfo"', {
  rect_01 <- ee$Geometry$Rectangle(-3, -3, 3, 3)
  test_image_01 <- ee$Image(0)$add(1)

  # test01: base case
  img_01 <- ee_as_raster(image = test_image_01, region = rect_01,
                               quiet = TRUE)
  expect_s4_class(raster::extent(img_01), "Extent")

  # test02: even a small increase will add a new pixel
  nominalscale <- test_image_01$projection()$nominalScale()$getInfo()
  test_image_02 <- test_image_01$reproject(
    crs = "EPSG:4326",
    scale = round(nominalscale)
  )
  img_02 <- ee_as_raster(image = test_image_02, region = rect_01,
                               quiet = TRUE)
  expect_s4_class(raster::extent(img_02), "Extent")
})

# ee_Image_local ---------------------------------------------------
test_that("ee_as_proxystars ", {
  proxy_01 <- rgee:::ee_as_proxystars(tif)
  proxy_02 <- rgee:::ee_as_proxystars(stars_x)
  proxy_03 <- rgee:::ee_as_proxystars(starsproxy_x)
  expect_s3_class(proxy_01, 'stars_proxy')
  expect_s3_class(proxy_02, 'stars_proxy')
  expect_s3_class(proxy_03, 'stars_proxy')
})

test_that("ee_as_stars - simple ", {
  #drive
  img_stars_02 <- ee_as_stars(
    image = img,
    region = geometry,
    scale = 250,
    via = "drive"
  )
  expect_s3_class(img_stars_02, 'stars')

  img_raster_03 <- ee_as_raster(
    image = img,
    region = geometry,
    scale = 250,
    via = "gcs",
    container = 'rgeedev2'
  )
  expect_s4_class(img_raster_03, 'RasterStack')

  gcs <- mean(raster::getValues(img_raster_03))
  drive <- mean(raster::getValues(raster::stack(img_stars_02[[1]])),na.rm = TRUE)
  # Equal value but some problems in the bounds
  expect_equal(gcs, drive, tolerance = 0.1)
})


# world image thumbnail -----------------------------------------------
region <- ee$Geometry$Rectangle(
  coords = c(-180,-60,180,60),
  proj =  "EPSG:4326",
  geodesic = FALSE
)

test_that("ee_as_thumbnail world", {
  world_dem <- ee_as_thumbnail(image = image_srtm, region = region)
  expect_s3_class(world_dem, 'stars')
})

# clean containers  ---------------------------------------------------
test_that("ee_clean_container", {
  drive <- ee_clean_container()
  gcs <- ee_clean_container(name = 'rgeedev2',type = 'gcs')
  expect_true(gcs)
  expect_true(drive)
})

# errors  ------------------------------------------------------------
test_that("ee_image_local error 1", {
  expect_error(
    rgee:::ee_image_local(
      image = "ee$Image",
      region = geometry,
      scale = 100,
      via = "getInfo"
      )
    )
  }
)

test_that("ee_image_local error 2", {
  expect_error(
    rgee:::ee_image_local(
      image = image_srtm,
      region = image_srtm,
      scale = 100,
      via = "getInfo"
      )
    )
  }
)

test_that("ee_image_local error 4", {
  expect_error(
    rgee:::ee_image_local(
      image = image_srtm,
      region = geometry,
      scale = "100",
      via = "getInfo"
    )
  )
}
)

test_that("ee_image_local error 5", {
  expect_error(
    rgee:::ee_image_local(
      image = image_srtm,
      region = geometry,
      scale = c(100, 120),
      via = "getInfo"
    )
  )
}
)

test_that("ee_image_local error 6", {
  expect_error(
    rgee:::ee_image_local(
      image = image_srtm,
      region = geometry,
      via = "testing"
    )
  )
}
)


test_that("ee_image_local error 7", {
  expect_error(
    rgee:::ee_image_local(
      image = image_srtm,
      region = geometry,
      scale = 0.1,
      via = "getInfo"
    )
  )
}
)

test_that("ee_image_local error 8", {
  expect_error(
  ee_as_raster(
    image = image_srtm,
    region = geometry,
    scale = 20000,
    via = "getInfo"
  )
  )
})

test_that("ee_image_local error 9", {
  GEOtransform <- image_srtm$projection()$getInfo()$transform
  GEOtransform[[2]] <- 10
  GEOtransform[[4]] <- 10
  expect_error(
    ee_as_raster(
      image = image_srtm$reproject(crs = "EPSG:4326",
                                   crsTransform = GEOtransform),
      region = geometry,
      scale = 20000,
      via = "getInfo"
    )
  )
 }
)


# ee_image_info test
test_that("ee_image_info", {
  # World SRTM
  srtm <- ee$Image("CGIAR/SRTM90_V4")
  srtm_list <- ee_image_info(srtm)

  austria_dem <- ee$Image("users/csaybar/austria_dem")
  image_id <- ee_utils_py_to_r(austria_dem$get("system:id")$getInfo())
  austria_dem_info <- ee_image_info(austria_dem)
  expect_is(austria_dem_info, "list")
})
r-spatial/rgee documentation built on July 4, 2024, 9:33 a.m.