【问题标题】:How do I extract raster values from polygon data then join into spatial data frame?如何从多边形数据中提取栅格值然后加入空间数据框?
【发布时间】:2014-04-15 12:32:00
【问题描述】:

我想将多边形数据和栅格数据合并到一个数据框中,以便在 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 的目的,我实际上必须将多边形转换为点(使用质心方法?),所以我猜我真正想要的是加入平均栅格值加入点,而不是多边形。

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

【问题讨论】:

  • 看起来 sp=TRUE 选项应该可以满足您的需求。 p@data 中有什么?另外,为什么你有 nl=2?
  • 哎呀,对不起,在这个例子中 nl 应该是 1。我使用 nl=2 是因为我实际上有一堆我正在使用的栅格,但为了提出我的问题,我将其简化为 1。
  • class(p) 告诉我它是一个“SpatialPolygonsDataFrame”。它有 12 个变量(其中 1 个是 POLY_ID)和 6938 个观测值。所以 6938 个多边形表示 8 个物种中每一个的存在或不存在(1 或 0)。
  • 对不起,我的意思是 p@data 在您运行提取后是什么...看起来如果 sp=T 时值应该是这样
  • hmmm... 我想我需要做 writePolyShape(p,"p-output") 但它似乎没有产生任何东西,所以我的 p 最终看起来与输入相同。

标签: r extract raster spatial-data-frame


【解决方案1】:

这行得通:

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]

【讨论】:

  • 我注意到你使用这个b &lt;- brick(r, r * 2) ... "r*2" 是干什么用的?
  • 该代码创建了一个双层砖,第一层有 r,第二层有 r * 2。只是为了有一个真实的虚拟数据集。
  • 哦,我明白了...谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-11
  • 1970-01-01
  • 2019-09-01
  • 2018-12-13
  • 2013-07-19
  • 2015-09-16
相关资源
最近更新 更多