我在 R 中有一个 1 公里分辨率的栅格,其 NA 值遍及各处,但位置不规则(即具有数据的单元格不连续,并且 NA 值分散在各处)。我正在尝试使用用户定义的用于平均圆角的函数(如下所示)以 5 公里分辨率(因子 = 5)聚合此栅格(使用 {raster} 包中的 aggregate() 命令)。截至目前,除非栅格具有连续的 5x5 像元区域,否则我无法弄清楚如何让 aggregate() (或我的函数,如果这是问题所在)提供结果值。换句话说,如果聚合窗口命中一个 5x5 的单元格区域,其中只有 5 个具有数据值的单元格(20 个 NA 单元格),我仍然希望它返回这 2 个单元格的平均值。我尝试修改函数和 aggregate() 命令的 na.action 选项,但没有成功。
抱歉没有工作示例,但不确定如何在 R 中生成类似的示例栅格图层。
这是我的循环平均函数:
library(circular)
avg.ang <- function(x,...){
mean.circular(circular(x, units="degrees", rotation="clock", zero=pi/2, modulo="2pi"))
}
这是我正在使用的聚合代码(其中“角度”是一个 1 公里的栅格,NA 值分散在各处):
library(raster)
angle5k <- aggregate(angle, fact=5, fun=avg.ang, expand=T)
但这会返回一个栅格图层,其值仅在 5x5 窗口的每个像元都包含一个值的聚合位置处。