R 如何从多边形数据中提取光栅值,然后连接到空间数据帧中?

R 如何从多边形数据中提取光栅值,然后连接到空间数据帧中?,r,extract,raster,spatial-data-frame,R,Extract,Raster,Spatial Data Frame,我想将多边形数据和光栅数据合并到一个数据框中,以便在R中使用randomForests包。 这包括首先提取每个多边形的平均光栅值 到目前为止,我有以下几点: #load libraries library(raster) library(rgdal) library(sp) library(maptools) #import raster data r <- raster("myRasterdata.tif") #import polygon data p <- readSh

我想将多边形数据和光栅数据合并到一个数据框中,以便在R中使用randomForests包。
这包括首先提取每个多边形的平均光栅值

到目前为止,我有以下几点:

#load libraries
library(raster)
library(rgdal)
library(sp)
library(maptools)

#import raster data 
r <- raster("myRasterdata.tif")

#import polygon data 
p <- readShapePoly("myPolydata.shp")

#extract mean raster value for each polygon
ExtractMyData <- extract(r, p, small=TRUE, fun=mean, na.rm=TRUE, df=FALSE,  nl=1, sp=TRUE)
# note I have also tried this with df=TRUE and sp=FALSE
#加载库
图书馆(光栅)
图书馆(rgdal)
图书馆(sp)
图书馆(地图工具)
#导入光栅数据
r这是有效的:

library(raster)
library(sp)
library(maptools)


#import polygon data 
data(wrld_simpl)
p <- wrld_simpl

#create raster data 
r <- raster(extent(p))
r[] <- seq_len(ncell(r))


## this does it directly, adding columns "names(r)" to "p" 
p <- extract(brick(r, r * 2), p, fun = mean, na.rm = TRUE, sp = TRUE)
库(光栅)
图书馆(sp)
图书馆(地图工具)
#导入多边形数据
数据(wrld_siml)

p看起来sp=TRUE选项应该满足您的需要。里面有什么p@data? 还有,为什么nl=2?哦,对不起,在这个例子中nl应该是1。我之所以使用nl=2,是因为我实际上使用了一堆光栅,但为了提问,将其简化为1。类(p)告诉我它是一个“空间多边形数据帧”。它有12个变量(其中1个是POLY_ID)和6938个观测值。所以6938个多边形表示8个物种中每一个的存在或不存在(1或0)p@data运行提取后…如果sp=Thmmm,则该值应该位于该位置。。。我想我需要做writePolyShape(p,“p-output”),但它似乎没有产生任何结果,所以我的p最终看起来和输入一样。我注意到你使用了这个
b,代码创建了一个两层砖块,第一层有r,第二层有r*2。只有这样才有一个真实的虚拟数据集。哦,我明白了。。。非常感谢。
p$ExtractData <- extract(r, p, fun = mean, na.rm = TRUE)
b <- brick(r, r * 2)
extr <- extract(b, p, fun = mean, na.rm = TRUE)
for (i in seq_len(ncol(extr))) p[[colnames(extr)[i]]] <- extr[,i]