繁体   English   中英

如何从多边形数据中提取栅格值然后加入空间数据框?

[英]How do I extract raster values from polygon data then join into 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 <- 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

输出是一个矩阵,我可以写入数据帧。 但它没有空间坐标或原始多边形ID,所以我不知道如何将输出连接到同一个数据库。我认为sp = TRUE参数会这样做,但它似乎不起作用。

请注意,为了RandomForests的目的,我实际上必须将多边形转换为点(使用质心方法?),因此我可以猜测我真正想要的是加入连接到点而不是多边形的平均栅格值。

任何建议将不胜感激。 谢谢!!

这有效:

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)

您也可以手动执行此操作,查看使用聚合函数的提取如何提供单个列向量:

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]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM