使用 shapefile 屏蔽大栅格

masking big raster using shapefile

我有一个覆盖陆地和海洋的 0.0833 度分辨率的全球栅格。 我正在尝试仅为陆地区域提取栅格。方式 我正在做的是使用全局 shapefile 并将其用作遮罩。 然而,这需要很长时间(超过 2 小时但仍未完成)并且想知道我在做的事情是否存在根本性错误

library(raster)

# this is my raster
class      : RasterLayer 
dimensions : 4320, 10800, 46656000  (nrow, ncol, ncell)
resolution : 0.008333333, 0.008333333  (x, y)
extent     : -180, -90, -90, -54  (xmin, xmax, ymin, ymax)
crs        : +proj=longlat +datum=WGS84 +no_defs 
source     : 1_High_2050_.tif 
names      : X1_High_2050_ 
values     : 3, 3  (min, max)

# my shapefile 
library(maptools)
data('wrld_simpl')
    
# my approach 
mask_raster <- mask(temp_rast, wrld_simpl)
    

terra 包(raster 的替代品)

要快得多
library(terra)
r <- rast(res=1/120, xmax=-90, ymax=-54)
r <- init(r, "cell")

library(geodata)
w <- world(path=".")

system.time(x <- mask(r, w))
#   user  system elapsed 
#   1.36    0.53    1.89