使用 raster::getValues() 获取局部图像的值

using raster::getValues() to get values for a partial image

我正在使用 raster,如下所示。最后一行提供了整个图像的值。我应该如何修改我的命令以获取图像的一部分的值,即 xlim=c(0, 299)ylim=c(0, 199)?

library(raster)
library(rgdal)
f <- "pictures/image1-1421787394.jpeg"
f
r <- raster(f)
plot(r);
r
plot(r,xlim=c(0,299),ylim=c(0,199))
getValues(r)

我也想添加一个圆形范围,第二个答案已经显示了如何做。

这是一种跟踪单元格坐标的方法:

library(raster)
r <- raster(matrix(runif(100), 10))
e <- extent(0.2, 0.45, 0.1, 0.68)

plot(r)
plot(e, add=TRUE, lwd=2)

cbind(xyFromCell(r, cellsFromExtent(r, e)),
      z=extract(r, cellsFromExtent(r, e)))      

#         x    y         z
# [1,] 0.25 0.65 0.9605758
# [2,] 0.35 0.65 0.9654382
# [3,] 0.25 0.55 0.6888101
# [4,] 0.35 0.55 0.1091108
# [5,] 0.25 0.45 0.7774158
# [6,] 0.35 0.45 0.1773767
# [7,] 0.25 0.35 0.2323325
# [8,] 0.35 0.35 0.2982672
# [9,] 0.25 0.25 0.0191205
# [10,] 0.35 0.25 0.5675381
# [11,] 0.25 0.15 0.9414032
# [12,] 0.35 0.15 0.7272289

中心位于范围内或中心恰好位于范围左侧或下边界的像元将被包括在内。请注意,尽管 xmax 的范围为 0.45,但不包括第 5 列中的单元格。

简化 jbaums 代码:

library(raster)
set.seed(1)
r <- raster(matrix(runif(100), 10))
e <- extent(0.2, 0.45, 0.1, 0.68)
extract(r, e)

user2543622 将问题更改为想要 "a circle that is centered at 0.4,0.4 in the above image and it's radius in 0.3"。您可以创建一个空间多边形并用它提取。

library(dismo)
cr <- circles(cbind(0.4, 0.4), d=0.3, lonlat=F)
p <- polygons(cr)
plot(r)
plot(p, add=TRUE)
extract(r, p)