如何使用搜索 window select R 中光栅的一部分?
How to select a section of a raster in R using a search window?
我想 select 来自光栅的一组像素。
用户应为 select 列数和行数(或 window 大小)输入 n 值。
A window 将获取定义的像素数。
会 return 具有这些值的光栅。
下面是一个可重现的例子:
library(terra)
r <- terra::set.ext(rast(volcano), terra::ext(0, nrow(volcano), 0, ncol(volcano)))
plot(r)
想法是从 upper/left 尺寸开始,使用 10 像素的行和列(总共 100 像素)作为框 window 搜索。
为此我想获取最小和最大范围(使用 terra 包)如下代码:
w_10 <- c(xmin(terra::ext(r)),xmin(terra::ext(r))+10,ymin(terra::ext(r)),ymin(terra::ext(r))+10)
在我想象一些迭代之后,window 搜索将遍历所有光栅长度并且应该 return 个光栅。
毕竟objective是为了得到不同组块的光栅尺寸,如下图:
您可以使用标准索引
library(terra)
f <- system.file("ex/elev.tif", package="terra")
r <- rast(f)
w10 <- r[1:10, 1:10, drop=FALSE]
或使用crop
xmin <- xmin(r)
ymax <- ymax(r)
rs <- res(r)
n <- 10
xmax <- xmin + n * rs[1]
ymin <- ymax - n * rs[2]
x <- crop(r, c(xmin, xmax, ymin, ymax))
我想 select 来自光栅的一组像素。
用户应为 select 列数和行数(或 window 大小)输入 n 值。
A window 将获取定义的像素数。
会 return 具有这些值的光栅。
下面是一个可重现的例子:
library(terra)
r <- terra::set.ext(rast(volcano), terra::ext(0, nrow(volcano), 0, ncol(volcano)))
plot(r)
想法是从 upper/left 尺寸开始,使用 10 像素的行和列(总共 100 像素)作为框 window 搜索。
为此我想获取最小和最大范围(使用 terra 包)如下代码:
w_10 <- c(xmin(terra::ext(r)),xmin(terra::ext(r))+10,ymin(terra::ext(r)),ymin(terra::ext(r))+10)
在我想象一些迭代之后,window 搜索将遍历所有光栅长度并且应该 return 个光栅。
毕竟objective是为了得到不同组块的光栅尺寸,如下图:
您可以使用标准索引
library(terra)
f <- system.file("ex/elev.tif", package="terra")
r <- rast(f)
w10 <- r[1:10, 1:10, drop=FALSE]
或使用crop
xmin <- xmin(r)
ymax <- ymax(r)
rs <- res(r)
n <- 10
xmax <- xmin + n * rs[1]
ymin <- ymax - n * rs[2]
x <- crop(r, c(xmin, xmax, ymin, ymax))