如何在R中将INT2U类型栅格的65535值设为NA并还原原始数据
解决方案
你可以通过手动指定栅格的NA识别值来解决该问题,完整操作流程如下:
- 第一步:重置栅格NA标识
当前你设置的NA值-Inf不在INT2U的有效值域(0~65535)内,导致65535被识别为有效值,先将NA值修改为地理校正软件设定的缺省值:
操作完成后,栅格中所有值为65535的像素会被自动标记为R的标准NA值。NAvalue(r) <- 65535 - 第二步:还原原始浮点数据
直接做除法运算即可,raster/terra包都会自动跳过NA值参与计算:
此时你再查询r_original <- r / 100maxValue(r_original),返回的就是剔除无效值后的真实最大值,不会出现655.35的错误结果。 - 可选:叠加自定义无效值校验
如果你已有排除四角无效值的校验逻辑,可以在上述操作完成后叠加掩码,进一步剔除其余无效值:# valid_mask为你的校验逻辑生成的有效区域掩码,有效值对应TRUE r_original[!valid_mask] <- NA
完整示例代码
# 读取目标栅格 r <- rasters[[1]] # 配置正确的NA识别值 NAvalue(r) <- 65535 # 还原原始数值 r_original <- r / 100 # (可选)执行自定义四角无效值剔除 # valid_mask <- 你的自定义校验函数(r) # r_original[!valid_mask] <- NA # 校验结果 maxValue(r_original) NAvalue(r_original)
内容的提问来源于stack exchange,提问作者Nate Lockwood
相关产品推荐
相关产品推荐

