Skip to content

Commit 044536b

Browse files
authored
Merge pull request #131 from njtierney/zip-tempdir
Fix missing data when `preserve_metadata = "zip"`
2 parents fe0ba8a + f6c59a8 commit 044536b

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

R/tar-terra-rast.R

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,10 @@ tar_terra_rast <- function(name,
137137
tar_rast_read <- function(preserve_metadata) {
138138
switch(preserve_metadata,
139139
zip = function(path) {
140-
tmp <- withr::local_tempdir()
140+
tmp <- tempdir()
141+
# NOTE: cannot use withr::local_tempdir() because the unzipped files need
142+
# to persist so that the resulting `SpatRaster` object doesn't have a
143+
# broken file pointer
141144
zip::unzip(zipfile = path, exdir = tmp)
142145
terra::rast(file.path(tmp, basename(path)))
143146
},

tests/testthat/test-tar-terra-rast.R

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,11 +143,13 @@ tar_test("metadata is maintained", {
143143
r
144144
}
145145
list(
146-
tar_terra_rast(r, make_rast())
146+
tar_terra_rast(r, make_rast()),
147+
tar_terra_rast(r2, make_rast(), preserve_metadata = "drop")
147148
)
148149
})
149150
tar_make()
150151
x <- tar_read(r)
151152
expect_equal(terra::units(x), rep("m", 3))
152153
expect_equal(terra::time(x), as.Date("2024-10-01") + c(0, 1, 2))
154+
expect_equal(head(terra::values(x)), head(terra::values(tar_read(r2))))
153155
})

0 commit comments

Comments
 (0)