Nothing
skip_if(gdal_version_num() < gdal_compute_version(3, 2, 0))
skip_if(nrow(gdal_formats("netCDF")) == 0 ||
isFALSE(gdal_formats("netCDF")$multidim_raster))
test_that("mdim_as_classic works", {
f <- system.file("extdata/byte.nc", package="gdalraster")
ds <- mdim_as_classic(f, "Band1", 1, 0)
expect_false(is.null(ds))
expect_equal(ds$dim(), c(20, 20, 1))
expect_equal(ds$getGeoTransform(),
c(440720.0, 60.0, 0.0, 3750120.0, 0.0, 60.0))
# matches checksum from GDAL autotest:
# autotest/gdrivers/data/vrt/arraysource_array.vrt on byte.nc
# https://github.com/OSGeo/gdal/blob/a8f0531cc90bc1fb554da9f6a94d059dbb995f81/autotest/gdrivers/vrtmultidim.py#L1417
# ds = gdal.Open("data/vrt/arraysource_array.vrt")
# assert ds.GetRasterBand(1).Checksum() == 4855
# and Python:
# from osgeo import gdal
# f = 'byte.nc'
# ds = gdal.OpenEx(f, gdal.OF_MULTIDIM_RASTER)
# rg = ds.GetRootGroup()
# ar = rg.OpenMDArray("Band1")
# classic_ds = ar.AsClassicDataset(1, 0)
# classic_ds.GetRasterBand(1).Checksum()
# # 4855
expect_equal(ds$getChecksum(1, 0, 0, 20, 20), 4855)
ds$close()
# filename is not set / driver-less dataset:
expect_error(ds$open(read_only = TRUE))
# view expressions
f2 <- tempfile(fileext = ".nc")
on.exit(unlink(f2), add = TRUE)
file.copy(f, f2, overwrite = TRUE)
ds <- mdim_as_classic(f2, "Band1", 1, 0, read_only = FALSE,
view_expr = "[0:10,...]")
# https://github.com/OSGeo/gdal/blob/2b1c4d1fdb9377b62d821d70d022e7426940aec6/autotest/gdrivers/netcdf_multidim.py#L4036
expect_equal(ds$getStatistics(1, FALSE, TRUE),
c(74.0, 255.0, 126.82, 26.729713803182),
tolerance = 0.01)
ds$close()
ds <- mdim_as_classic(f2, "Band1", 1, 0, read_only = FALSE,
view_expr = "[10:20,...]")
# https://github.com/OSGeo/gdal/blob/2b1c4d1fdb9377b62d821d70d022e7426940aec6/autotest/gdrivers/netcdf_multidim.py#L4042
expect_equal(ds$getStatistics(1, FALSE, TRUE),
c(99.0, 206.0, 126.71, 18.356086184152),
tolerance = 0.01)
ds$close()
})
test_that("mdim_info works", {
f <- system.file("extdata/byte.nc", package="gdalraster")
expect_output(mdim_info(f))
expect_silent(mdim_info(f, cout = FALSE))
expect_no_error(info <- mdim_info(f, array_options = "SHOW_ALL=YES"))
expect_vector(info, ptype = character(), size = 1)
expect_true(startsWith(info, "{"))
expect_true(nchar(info) > 1000)
expect_no_error(
info <- mdim_info(f, "Band1", pretty = FALSE, detailed = TRUE,
limit = 5, allowed_drivers = "netCDF",
open_options = "HONOUR_VALID_RANGE=NO"))
expect_vector(info, ptype = character(), size = 1)
expect_true(startsWith(info, "{"))
expect_true(nchar(info) > 1000)
})
test_that("mdim_translate works", {
skip_if(gdal_version_num() < gdal_compute_version(3, 8, 0))
f <- system.file("extdata/byte.nc", package="gdalraster")
f2 <- tempfile(fileext = ".nc")
on.exit(deleteDataset(f2), add = TRUE)
opt <- NULL
if (isTRUE(gdal_get_driver_md("netCDF")$NETCDF_HAS_HDF4 == "YES"))
opt <- "ARRAY:IF(NAME=Band1):COMPRESS=DEFLATE"
ar <- "name=Band1,view=[10:20,...]"
expect_true(res <- mdim_translate(f, f2,
creation_options = opt,
array_specs = ar,
allowed_drivers = c("HDF5", "netCDF"),
open_options = "HONOUR_VALID_RANGE=NO",
quiet = TRUE))
ds <- mdim_as_classic(f2, "Band1", 1, 0, read_only = FALSE)
expect_equal(ds$dim(), c(20, 10, 1))
ds$close()
f3 <- tempfile(fileext = ".nc")
on.exit(deleteDataset(f3), add = TRUE)
expect_true(mdim_translate(f, f3, group_specs = "name=/"))
ds <- mdim_as_classic(f3, "Band1", 1, 0)
expect_equal(ds$dim(), c(20, 20, 1))
ds$close()
f4 <- tempfile(fileext = ".nc")
on.exit(deleteDataset(f4), add = TRUE)
subsets <- c("x(441000,441800)", "y(3750400,3751000)")
expect_true(mdim_translate(f, f4, subset_specs = subsets))
ds <- mdim_as_classic(f4, "Band1", 1, 0)
expect_equal(ds$dim(), c(13, 10, 1))
ds$close()
f5 <- tempfile(fileext = ".nc")
on.exit(deleteDataset(f5), add = TRUE)
expect_true(mdim_translate(f, f5, scaleaxes_specs = "x(2),y(2)"))
ds <- mdim_as_classic(f5, "Band1", 1, 0)
expect_equal(ds$dim(), c(10, 10, 1))
ds$close()
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.