如何通过行列索引对Raster对象进行子集化?
对Raster对象进行行列索引式子集化的简单方法
当然可以!在R里操作Raster对象的行列子集化其实和数据框、矩阵的方式几乎一致,语法非常直观,完全不用纠结rasterFromCells()的复杂逻辑~
针对你给出的示例栅格:
r <- raster(ncols = 50, nrow = 50) r[] <- 1:ncell(r)
直接用方括号索引就能轻松实现行列子集化:
- 如果你只想提取第500至700行(注意:Raster对象的行是从上到下计数的),保留所有列,代码如下:
r_subset <- r[500:700, ] - 如果同时需要限定列范围,比如提取第10至20列,只需补充列索引:
r_subset <- r[500:700, 10:20]
补充说明
你之前用rasterFromCells()没得到预期结果,大概率是因为Raster的单元格编号是列优先(从左到右、从上到下依次计数),和行列索引的逻辑差异较大,而直接用方括号的索引方式完全贴合你熟悉的矩阵/数据框子集化习惯,更易理解和控制。
你可以用nrow(r_subset)验证结果,提取后的栅格行数应该是700-500+1=201,完全符合预期。
内容的提问来源于stack exchange,提问作者gvan
相关产品推荐
相关产品推荐

