如何有效地请求R中的部分rasterstack

时间:2018-05-28 19:34:31

标签: r raster

当我在非常大的tiff文件中读取如下

 r = stack( 'tiffile.tif')

然后我想通过

请求它的一小部分
r_part = r[1:100, 1:100, ]

我希望找到r_part成为3D rasterstack。然而,事实证明它是一个矩阵,其高度为widht * height和通道数。

如何以这种方式提取3D rasterstack?

2 个答案:

答案 0 :(得分:1)

您可以使用 extent(rasterObject, rowstart, rowend, colstart, colend) 根据行和列创建范围对象。因此,在处理大文件时,您不必首先将整个栅格转换为矩阵(与[,]一样),这可能会超出您的内存。

library(raster)
r <- stack("tiffile.tif")
r_part <- crop(r, extent(r, 1, 100, 1, 100))

答案 1 :(得分:0)

请提供示例数据(此处来自?stack!)

library(raster)
s <- stack(system.file("external/rlogo.grd", package="raster")) 

您可以使用drop=FALSE

s1 <- s[20:25, 20:25, drop=FALSE]

或者(正如loki建议的那样)创建Extent,然后使用crop

e <- extent(s, 20, 25, 20, 25)
s2 <- crop(s, e)