Я пытаюсь создать растр, заполненный выходными данными вариограммы, такими как порог и диапазон области, которая описывает пространственную автокорреляцию. Я хотел попробовать использовать фокальную функцию в R как способ сканирования области и функцию вариограммы из пакета gstat для расчета порога и диапазона.
Я пробовал следующий код, но есть проблемы с функцией.
library(raster)
library(gstat)
r <- raster()
r[] <- 1:ncell(r)
ra <- aggregate(r, 5)
plot(ra)
v<-variogram(layer~1,as(ra,"SpatialPixelsDataFrame"))
plot(v)
f = fit.variogram(v, vgm("Sph"))
f$psill[2]
f$range
var.sill<-function(x){
names(x)<-c("layer")
v<-variogram(layer~1,as(x,"SpatialPixelsDataFrame"))
f = fit.variogram(v, vgm("Sph"))
f$psill[2]
}
var.sill(ra)
# 374758092
## in a window surrounding each focal cell
rpsill <- focal(ra, w=matrix(1/225, ncol=15, nrow=15), fun=var.sill)
plot(rpsill)
Ошибка гласит: «Ошибка в as(x, «SpatialPixelsDataFrame»): нет метода или значения по умолчанию для приведения «числового» к «SpatialPixelsDataFrame»».
Я был бы признателен за любую помощь в этом, или если есть другой способ потенциального создания этих новых растров, пожалуйста, дайте мне знать.
Спасибо.
var.sill
ожидает объект Spatial, тогда как focus предоставляет вектор чисел. Нет прямого способа использовать фокус для ваших нужд, и я не знаю функции, которая обеспечивает движущееся окно, которое поддерживало бы то, что вам нужно. Было бы интересно написать один, но я не могу сделать это сейчас. Вы можете зациклиться на ячейках и использовать смежные, чтобы получить соседние ячейки, а затем получить координаты из этих ячеек... Это было бы медленно, но возможно. - person Robert Hijmans   schedule 31.07.2019