R语言Raster栅格数据50米分辨率转30米分辨率问题求助
50米栅格调整为30米分辨率的解决方案
错误原因
disaggregate 函数的fact参数仅支持传入大于等于1的正整数,作用是将单个原始栅格单元拆分为fact个等大的更小单元,仅适用于整数倍的精度提升场景。你传入的30/50=0.6为小于1的小数,不符合参数要求,因此无法生效。
非整数倍的分辨率调整需要通过重采样实现,可行方案如下:
方案1:使用raster包resample函数
library(raster) # 读取原始50米栅格 orig_rst <- raster("file.tif") # 构建与原始栅格同范围、同投影,分辨率为30米的参考栅格 target_rst <- raster(extent(orig_rst), res = 30, crs = crs(orig_rst)) # 重采样:连续值数据用bilinear双线性插值,分类数据请改用method = "ngb"邻近法 resampled_rst <- resample(orig_rst, target_rst, method = "bilinear") # 导出结果 writeRaster(resampled_rst, "output_30m.tif", overwrite = TRUE)
方案2:使用terra包实现(官方推荐替代raster包,性能更优)
library(terra) # 读取原始栅格 orig_rst <- rast("file.tif") # 直接指定目标分辨率完成重采样 resampled_rst <- resample(orig_rst, res = 30, method = "bilinear") # 导出结果 writeRaster(resampled_rst, "output_30m.tif", overwrite = TRUE)
内容的提问来源于stack exchange,提问作者Ankit Sagar
相关产品推荐
相关产品推荐

