栅格化 Spdep 的 localG 输出

Rasterizing Spdep's localG output

我是 R 的新手,我正在尝试光栅化 spdep 的 localG 函数的输出。 此代码:

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 class 更改为 data.frame,但它创建了一个仍然不会光栅化的 1 列矩阵。

总结一下:我应该怎么做才能得到 localG 输出的栅格?

提前致谢!

您正在尝试调用 class localG 的对象,该对象没有用于 sp 或 raster classes 的关联方法。这是一个用于光栅化本地 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)