当我在非常大的tiff文件中读取如下
r = stack( 'tiffile.tif')
然后我想通过
请求它的一小部分r_part = r[1:100, 1:100, ]
我希望找到r_part成为3D rasterstack。然而,事实证明它是一个矩阵,其高度为widht * height和通道数。
如何以这种方式提取3D rasterstack?
答案 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)