6

我需要从栅格层计算窗台、范围和金块。我已经探索了 gstat、usdm 包,可以在其中创建变异函数,但是我找不到给定栅格图层的函数将估计这些参数。在大多数函数中,必须定义这些参数,例如。克里金。

我有不同高度的栅格数据层,看起来类似于在此处输入图像描述

我想从拟合到这些数据层的半变异函数参数中获取窗台、块金和范围,以创建类似于以下的图:在此处输入图像描述

原始数据层在此处以多波段 tiff 的形式提供。这是本文中的一个图进一步说明了这个概念。

在此处输入图像描述

4

2 回答 2

3

使用 gstat,下面是一个示例:

library(raster)
library(gstat)
demo(meuse, ask = FALSE, echo = FALSE)
set.seed(131) # make random numbers reproducible
# add some noise with .1 variance
meuse.grid$dist = meuse.grid$dist + rnorm(nrow(meuse.grid), sd=sqrt(.1))
r = raster(meuse.grid["dist"])
v = variogram(dist~1, as(r, "SpatialPixelsDataFrame"))

(f = fit.variogram(v, vgm("Sph")))
#   model      psill    range
# 1   Nug 0.09035948    0.000
# 2   Sph 0.06709838 1216.737

f$psill[2] # sill
# [1] 0.06709838

f$range[2] # range
# [1] 1216.737

f$psill[1] # nugget
# [1] 0.09035948

插入您自己的栅格r,它应该可以工作。更改Sph以适合另一个变异函数模型,尝试plot(v,f)验证该图。

于 2016-03-25T10:41:32.410 回答
1

这只是一个猜测。这就是我估计半方差的方式

其中n是其均值小于总均值的层数。m是所有层的总平均值。r是低于总平均值的每一层的平均值。

s <- stack("old_gap_.tif")
m <- cellStats(mean(s), stat="mean", na.rm=T) # 0.5620522
r <- m[m < 0.5620522]
sem <- 1/53 * (0.5620522 - r)^2
plot(sem, r)
于 2016-03-18T14:28:51.073 回答