0

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

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

提前致谢!

4

1 回答 1

0

您正在尝试调用一个localG没有与 sp 或 raster 类关联的方法的类对象。这是栅格化本地 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)  
于 2020-01-21T16:16:10.340 回答