我是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输出的栅格?
提前感谢!
发布于 2020-01-22 00:16:10
您正在尝试调用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) https://stackoverflow.com/questions/59844468
复制相似问题