我有一个非负值的栅格矩阵(每个像素都有一个高度值),并希望使用5x5移动窗口计算一些自定义高度指标,使用矩阵边缘周围的对称填充。
我在QGIS中使用pktools(空间滤波器)进行了一些基本的计算(平均值,标准偏差,最大值),这使我能够做到这一点(使用零填充,重复或对称填充)。
现在我想使用自定义函数(即高度系数,偏度和峰度)计算其他一些指标,我不能使用pktools。我一直在尝试使用focal()
中的raster
函数,但padValue需要是数字。有没有解决方法,所以我可以有对称的边框?我尝试了以下方法:
> f.CoH <- function(x) {sd(x)/mean(x)}
>
> CoH <- focal(raster, w=matrix(1,nrow=5,ncol=5), fun=f.CoH, pad=TRUE,
> padValue="symmetric")
但是得到以下错误:
> Warning message: In .local(x, ...) : NAs introduced by coercion
谢谢
答案 0 :(得分:1)
您可以尝试padValue = NA
。
您还需要修改处理NAs的功能:
f.CoH <- function(x) {sd(x, na.rm = TRUE)/mean(x, na.rm = TRUE)}
然而,考虑到这会产生稍微不同的结果,因为对称填充&#34;,因为通过用NA填充和通过复制值获得的标准偏差和平均值将是不同的。
HTH