0

I am loading a large number of HLS.S30 and HLS.L30 COGs from LPCLOUD as SpatRasters using the terra package. I noticed that the pixel values in some of them ended up being integers (between 0 and 1000), and others floats (between 0 and 1). Inspecting the files with terra::describe showed that some had a " Offset: 0, Scale:0.0001" field, and others didn't, which is what I assume creates this inconsistency.

Is there a way to ignore these scale/offset, or force a scale=1, offset=0 when reading date with terra::rast, perhaps in the GDAL options?

Reproducible example (requires NASA Earthdata login):

library(terra)

setGDALconfig("GDAL_HTTP_UNSAFESSL", value = "YES")
setGDALconfig("GDAL_HTTP_COOKIEFILE", value = ".rcookies")
setGDALconfig("GDAL_HTTP_COOKIEJAR", value = ".rcookies")
setGDALconfig("GDAL_DISABLE_READDIR_ON_OPEN", value = "EMPTY_DIR")
setGDALconfig("CPL_VSIL_CURL_ALLOWED_EXTENSIONS", value = "TIF")

url1 <- "https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSS30.020/HLS.S30.T32ULC.2022237T103641.v2.0/HLS.S30.T32ULC.2022237T103641.v2.0.B08.tif"
url2 <- "https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/HLSS30.020/HLS.S30.T31UGT.2022237T103641.v2.0/HLS.S30.T31UGT.2022237T103641.v2.0.B08.tif"

r1 <- rast(url1, vsi=TRUE)
r2 <- rast(url2, vsi=TRUE)
r1[1]
r2[2]
describe(url1)
describe(url2)

1 Answer 1

0

You should be able to set or remove the scale and offset with terra::scoff. For example, you can do

scoff(r1) <- NULL
scoff(r2) <- NULL

Or the equivalent

scoff(r1) <- cbind(1, 0)
scoff(r2) <- cbind(1, 0)
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.