Как создать фильтр с движущимся окном выходных данных вариограммы в R, используя функцию фокальной области?

Я пытаюсь создать растр, заполненный выходными данными вариограммы, такими как порог и диапазон области, которая описывает пространственную автокорреляцию. Я хотел попробовать использовать фокальную функцию в 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»».

Я был бы признателен за любую помощь в этом, или если есть другой способ потенциального создания этих новых растров, пожалуйста, дайте мне знать.

Спасибо.


person Melinda Martinez    schedule 31.07.2019    source источник
comment
Ошибка возникает из-за того, что var.sill ожидает объект Spatial, тогда как focus предоставляет вектор чисел. Нет прямого способа использовать фокус для ваших нужд, и я не знаю функции, которая обеспечивает движущееся окно, которое поддерживало бы то, что вам нужно. Было бы интересно написать один, но я не могу сделать это сейчас. Вы можете зациклиться на ячейках и использовать смежные, чтобы получить соседние ячейки, а затем получить координаты из этих ячеек... Это было бы медленно, но возможно.   -  person Robert Hijmans    schedule 31.07.2019
comment
Спасибо за ваш вклад в любом случае! Я думаю, что, возможно, нашел другой подход, разделив растр на множество более мелких сеток и собрав их вместе с выходными значениями.   -  person Melinda Martinez    schedule 01.08.2019
comment
Если кому-то в будущем будет интересно, я позаимствовал код из: изображение на несколько частей"> stackoverflow.com/questions/29784829/   -  person Melinda Martinez    schedule 01.08.2019