Terra库cover函数第三个参数解析及栅格维度不匹配报错解决
Terra库栅格局部值替换问题解决与
cover函数参数详解 报错原因与解决方法
出现[cover] raster dimensions do not match错误,核心原因是ndvi_small是经裁剪后的小范围栅格,与原栅格ndvi的空间范围、行列数、分辨率不匹配——cover要求所有输入栅格必须空间完全对齐(同范围、同分辨率、同坐标系)。
修正代码如下:
library(terra) # 读取原始数据 ndvi <- rast(file.path(file_path,'ndvi.tif')) vect <- vect(file.path(file_path,'plot.gpkg')) # 裁剪并计算局部值 ndvi_cropped <- crop(ndvi, vect, mask = TRUE) ndvi_small <- 0.57 * exp(2.33 * ndvi_cropped) # 将小栅格扩展至原栅格的空间范围(空白区域填充NA) ndvi_small_extended <- extend(ndvi_small, ndvi) # 替换原栅格对应位置的值 ndvi_updated <- cover(ndvi, ndvi_small_extended)
cover函数第三个参数z的说明
Terra中cover函数的完整签名为:
cover(x, y, z, filename = "", ...)
第三个参数z的作用是补充填充多层NA值:
- 函数优先级逻辑:优先保留
x的非NA值;若x为NA,则使用y的非NA值;若x和y均为NA,则使用z的非NA值进行填充。 - 注意:
z同样需要与x、y空间对齐,否则会触发维度不匹配错误。
内容的提问来源于stack exchange,提问作者pepe
相关产品推荐
相关产品推荐

