You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用R语言terra包读取COG时如何忽略/强制设置缩放与偏移

问题描述

我正在使用terra包从LPCLOUD加载大量HLS.S30和HLS.L30格式的COG作为SpatRaster。发现部分影像像素值为0-1000的整数,另一部分是0-1的浮点数。通过terra::describe检查文件后确认,部分文件带有“Offset: 0, Scale:0.0001”字段,部分没有,这是数据不一致的原因。

请问是否可以忽略这些缩放/偏移参数,或者在使用terra::rast读取数据时强制设置scale=1、offset=0?是否可通过GDAL选项实现?

可复现示例(需NASA Earthdata登录):

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:读取后手动重置scale和offset

直接用terra::setScale和terra::setOffset覆盖原有参数,将scale设为1、offset设为0:

# 读取影像
r1 <- rast(url1, vsi=TRUE)
r2 <- rast(url2, vsi=TRUE)

# 重置缩放偏移参数
r1 <- setScale(r1, 1) |> setOffset(0)
r2 <- setScale(r2, 1) |> setOffset(0)

# 验证结果
r1[1]
r2[2]

方法2:读取时通过GDAL选项强制忽略缩放偏移

通过GDAL的GDAL_DISABLE_SCALING配置项,在读取阶段直接跳过缩放偏移的应用:

# 设置全局GDAL配置,强制忽略缩放偏移
setGDALconfig("GDAL_DISABLE_SCALING", "TRUE")

# 读取影像,此时自动跳过scale/offset应用
r1 <- rast(url1, vsi=TRUE)
r2 <- rast(url2, vsi=TRUE)

# 验证结果
r1[1]
r2[2]

注意:该配置是全局生效的,若后续需要恢复正常读取,需重置配置:

setGDALconfig("GDAL_DISABLE_SCALING", "FALSE")

方法3:读取时指定raw=TRUE参数

terra::rast的raw参数可控制是否读取原始像素值(不应用scale和offset),设置为TRUE即可直接获取0-1000的整数:

r1 <- rast(url1, vsi=TRUE, raw=TRUE)
r2 <- rast(url2, vsi=TRUE, raw=TRUE)

# 验证结果
r1[1]
r2[2]

内容的提问来源于stack exchange,提问作者j.vandoninck

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 19:23:23