Растеризация локального вывода Spdep - PullRequest
0 голосов
/ 21 января 2020

Я довольно плохо знаком с R и пытаюсь растеризовать вывод функции localde spdep. Этот код:

neigh2<-dnearneigh(profcurvPts, 0, 2)
list<-nb2listw(neigh2)
gistar<-localG(profcurvPts$layer, list)
girast<-rasterize(gistar, profcurv)

выдает ошибку unable to find an inherited method for function 'rasterize' for signature '"localG", "RasterLayer"'

Я попытался изменить класс localG на data.frame, но он создает матрицу из 1 столбца, которая по-прежнему не растеризуется .

Подводя итог: что я должен сделать, чтобы получить растр вывода localG?

Заранее спасибо!

1 Ответ

0 голосов
/ 21 января 2020

Вы пытаетесь вызвать объект класса localG, у которого нет связанного метода для классов SP или растра. Вот рабочий процесс для растрирования локального результата G.

Сначала добавьте пакеты и данные. Объект meuse имеет значение SpatialPointsDataFrame, а meuse.grid начинается как SpatialGridDataFrame, но преобразуется в объект rasterLayer для растеризации данных точек.

library(spdep)
library(raster)

data(meuse)
  coordinates(meuse) <- ~x+y
  proj4string(meuse) <- CRS("+init=epsg:28992")  

data(meuse.grid)
  coordinates(meuse.grid) = ~x+y
  proj4string(meuse.grid) <- CRS("+init=epsg:28992")
  gridded(meuse.grid) = TRUE
  meuse.grid <- raster(meuse.grid)

Здесь мы проводим локальный анализ G.

nb <- dnearneigh(coordinates(meuse), 0, 500)
G <- localG(meuse$cadmium, nb2listw(nb, style="B"))

Здесь мы можем привести результаты localG, соединить их с точечными данными и растеризовать результаты. Вы можете использовать as.numeric для принуждения от объекта localG (в основном, объекта списка). Пожалуйста, прочитайте справку для raster::rasterize. Для аргумента x требуются SpatialPoints или матрица координат, y - это объект rasterLayer для предоставления размеров растра, а field представляет атрибут, который растеризуется. Если вам нужно фоновое значение для растра, отличного от NA, используйте аргумент background.

meuse$G <- as.numeric(G)
spplot(meuse, "G")

Gr <- rasterize(coordinates(meuse), meuse.grid, field = meuse$G, background = NA)  
...