获取data.frame的所有(多个)值落入每个栅格单元格

时间:2017-05-19 15:35:26

标签: r raster sp

我有lat / long(x / y)的空间数据,并希望在其上放置一个栅格。我希望得到各个点所适合的每个栅格单元格内的所有值。这些点的分布不均匀,因此一个栅格单元不包含与相邻栅格单元相同数量的点。我知道有一个函数rasterize使用均值将该单元格内的所有值平均为一个新值,但我不想在单元格内插入均值,我想提取所有值(这里values的点在那个牢房内。)

我怎样才能有效地做到这一点?

考虑一下:

library(raster)
library(sp)

我的数据:

x <- runif(n) * 360 - 180
y <- runif(n) * 180 - 90
n <- 1000
values=runif(n)
xy <- cbind(x,y)

我的光栅

r <- raster(ncols=10, nrows=10)

现在我不想平均所有值,例如使用栅格化,而是提取属于该单元格的所有values(例如列表)。

非常感谢您的想法和帮助!这有什么功能吗?

1 个答案:

答案 0 :(得分:0)

首先,您必须在要采样的栅格中包含值。在您的示例中,您只是尝试对空栅格进行采样。 (我在原件编辑中将其误认为是您的样本量;问题在于您的示例,而不是问题)

回答你的问题...... extract()是您正在寻找的功能:

library(raster)
library(sp)

r <- raster(ncols=10, nrows=10)
n <- 1000
x <- runif(n) * 360 - 180
y <- runif(n) * 180 - 90
values=runif(n)
r[]<-values

xy <- SpatialPointsDataFrame(data=data.frame(cbind(x,y)),coords=cbind(x,y))


r0 <- extract(r, xy)

plot(r0)