【发布时间】:2020-05-01 16:59:28
【问题描述】:
我有一个非常大的rasterbrick 和一些坐标保存在不同的对象中。我希望将这些点用作掩码,为我的点所在的所有单元格除了返回 NA(对于我的特定应用程序,我需要保留输入 rasterbrick 的范围、分辨率和原点) .
我可以通过以下方式做到这一点:
library(raster)
library(tidyverse)
library(sf)
# Load a rasterbrick
b <- brick(system.file("external/rlogo.grd", package="raster"))
# Create some random points as test points for masking
pts<-as_tibble(rasterToPoints(b[[1]])) %>%
select(x, y) %>%
sample_n(15, replace = TRUE)
plot(b[[1]])
points(pts)
# Convert points to SpatialPoints so they can be passed to `mask`
pts <- st_as_sf(x = pts, coords = c("x", "y"),
crs = crs(b))
# Mask stack using pts
xx<-raster::mask(b, pts)
plot(xx)
在此示例中,代码执行速度非常快,但如果按比例放大,则可能需要很长时间才能运行。对于大型多层rasterbrick,执行此操作的更有效方法是什么?对于规模感,我的 rasterbrick's are360, 720, 259200, 3653 (nrow, ncol, ncell, nlayers)` 所以加快速度会很棒。
【问题讨论】: