如何在降低栅格图像分辨率时保留聚合像素的最大值?
解决栅格聚合时保留最大值的问题
看起来你可能笔误啦——应该是原栅格的分辨率更高(比如是4倍精细度的栅格),想要将其聚合为4×4的粗分辨率像素,并且每个新像素保留对应原像素块里的最大值对吧?毕竟1×1的栅格没法再降低分辨率到4×4(那其实是提升分辨率了)。
直接用raster包的aggregate函数就能搞定,你之前的代码没指定聚合函数,所以默认用了平均值,只需要加上fun = max参数就行:
# 正确的聚合代码,保留每个4x4块的最大值 chm4 <- aggregate(chm, fact = 4, fun = max)
补充说明:
fact = 4表示在x和y两个方向上,都将栅格的分辨率降低4倍——也就是每个新的粗像素对应原栅格中4×4的像素块。- 如果你的栅格是多波段的,这个方法同样适用,
fun = max会对每个波段分别计算对应块的最大值。
如果你已经把栅格转成了矩阵,也可以用分块取最大值的方式实现,但显然直接用aggregate函数更简洁高效,不需要额外的矩阵转换步骤。
内容的提问来源于stack exchange,提问作者chrischandler
相关产品推荐
相关产品推荐

