R语言中如何用一个stars对象的范围提取另一个stars对象的数值
R语言stars包栅格对齐与掩膜处理方案
你需要实现的是将低分辨率气温栅格重采样匹配高分辨率土地覆盖栅格的空间属性,同时保留气温数值,可通过stars包内置的st_warp函数实现,具体操作步骤如下:
前置准备
首先加载依赖包,读入目标数据:
# 加载stars包 library(stars) # 读入气温栅格对象A A <- read_stars("CRU.SpringT.2009.2018_EU.tif") # 读入落叶阔叶林栅格对象B,大文件可添加proxy = TRUE参数延迟加载 B <- read_stars("EU Dec Broadleaf.tif", proxy = FALSE)
核心操作:栅格对齐
调用st_warp函数直接以B为模板重采样A,输出结果的范围、分辨率、坐标系将和B完全一致:
# 连续型气温数据推荐使用双线性插值法重采样 C <- st_warp(A, dest = B, method = "bilinear")
参数说明:
method = "bilinear"适用于气温等连续变量,输出结果更平滑;若需严格保留A的原始单元格数值,可替换为method = "near"使用邻近法重采样- 若B为stars_proxy对象可直接传入
dest参数,无需提前读入内存,适合处理大体积栅格文件
可选操作:掩膜提取
如果需要仅保留落叶阔叶林分布区域的气温数值,可新增掩膜步骤:
# 假设B中落叶阔叶林的有效值为1,将非林区气温设为NA C[B != 1] <- NA
内容的提问来源于stack exchange,提问作者Ben Lee
相关产品推荐
相关产品推荐

