You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 01:48:14