在我的示例中,我创建了一个栅格:
require(raster); require(sp)
## Raster Raster creation
r <- raster(nc=10, nr=10)
r <- setValues(r, round(runif(ncell(r))* 255))
之后,我通过选择坐标来提取像素值:
x <- c(-150)
y <- c(-80)
p <- data.frame(x,y)
pontos <- SpatialPoints(p)
p$cel <- cellFromXY(r, pontos)
p$col <- colFromCell(r, p$cel)
p$row <- rowFromCell(r, p$cel)
p
plot(r)
text(r)
points(pontos, pch = 4, col = 2)
但是,我想找到一种方法来提取我将选择一个坐标的像素的值,并且该函数将执行将光栅的整个水平线的像素提取到每两个像素给定坐标。例如,我选择xy(-150,-80)坐标但我的函数下面仅返回第一行的值,并且还需要第4,7和10行。
require(plyr)
vals2cols <- ldply(1:nrow(p),
function(ir){
getValuesBlock(r,
col = p$col[ir],
ncols = 10,
row = p$row[ir],
nrows = 1)
}# end fun
)
df <- data.frame(p, vals2cols)
df
这可能吗?