如何通过terra::extract的fun参数统计网格内的像元数量?
使用terra::extract统计网格单元内的像元数量
我正在用terra::extract函数基于网格从影像中提取各类统计量。只要像元与网格单元相交就会被纳入计算,每个网格单元包含X个像元,我想知道每次计算时用到的像元数量,需要确定能传给fun参数的函数,用来返回统计计算所用的对象数量。我试过这些代码:
ZM <- terra::extract(imagery, GRID, fun= ?) ZM <- terra::extract(imagery, GRID, fun= n) ZM <- terra::extract(imagery, GRID, fun= count)
解决方法
- 用基础R的
length函数:它可以直接返回每个网格单元内被纳入计算的像元总数,代码如下:
ZM <- terra::extract(imagery, GRID, fun = length)
- 如果影像存在NA缺失值,想要统计非NA像元的数量,可以用带
na.omit()的匿名函数:
ZM <- terra::extract(imagery, GRID, fun = function(x) length(na.omit(x)))
说明
你之前尝试的n和count并不是R中可直接用于该场景的函数,所以会执行失败。length是基础R的内置函数,完全适配terra::extract的fun参数要求;如果需要排除缺失值,只需要在匿名函数里先过滤NA再统计长度即可。
内容的提问来源于stack exchange,提问作者Richard Johansen
相关产品推荐
相关产品推荐

