我有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
(例如列表)。
非常感谢您的想法和帮助!这有什么功能吗?
答案 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)