使用行/列索引子集栅格

时间:2018-03-22 16:06:18

标签: r gis raster

在对矩阵或DF进行子集化时,可以引用行列,例如df1[1:5, 3:10]df3[2:4, ]

有没有办法用光栅做到这一点?也就是说,我可以仅剪切行500:700,例如从光栅对象中剪切吗?

我尝试过使用rasterFromCells(),但它没有给我我想要的结果(看起来应该有一个更简单的解决方案,给出R的其他光滑的子集方法)。

示例:

r <- raster(ncols = 50, nrow = 50)
r[] <- 1:ncell(r)

# I would like to subset the bottom 50 rows of cells, but keep it as a raster.
# However, this returns a numeric object.
rSub <- r[30:50, 1:50]  

谢谢!

2 个答案:

答案 0 :(得分:2)

我不明白这个问题。

然而,这是你在找什么?

subR <- crop(r, extent(r, 30, 50, 1, 50))

plot(subR)

crop()包的函数raster可以解决问题,因为您可以使用行和列对栅格对象进行子集化。

答案 1 :(得分:1)

我更喜欢使用Seymour所示的作物。还有另一种方法,使用drop=FALSE

library(raster)
r <- raster(ncols = 10, nrow = 10)
r[] <- 1:ncell(r)

rSub <- r[3:5, 2:3, drop=FALSE] 
rSub
#class       : RasterLayer 
#dimensions  : 3, 2, 6  (nrow, ncol, ncell)
#resolution  : 36, 18  (x, y)
#extent      : -144, -72, 0, 54  (xmin, xmax, ymin, ymax)
#coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 

但正如你所看到的那样,实际上会降低价值 - 所以它并不好。这是我要解决的错误。