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

时间:2015-01-23 02:26:09

标签: r raster

我正在使用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)

我还想添加一个循环范围,第二个答案显示了如何做到这一点。

2 个答案:

答案 0 :(得分:2)

简化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将问题改为想要&#34;在上图中以0.4,0.4为中心的圆圈,以及在0.3&#34;中的半径。您可以创建一个SpatialPolygon并使用它进行提取。

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)

答案 1 :(得分:1)

这是一种跟踪细胞坐标的方法:

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)

enter image description here

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列中的单元格。