问题描述
我在 R 中工作 - 我有一个 60 厘米分辨率的光栅 (.tif) 图块目录,从 Google Earth Engine (NAIP 2018 NDVI) 下载。 (由于我的多边形数据对人类主体的要求,我在 pc 上而不是在 Google Earth Engine 上运行我的分析。)这 52 个图块的大小各为 1.2-3.8GB。我也有 982 个多边形,我正在尝试根据这些栅格计算区域均值。我的代码(如下)使用了 terra 包,我选择创建一个 VRT(虚拟光栅)文件,而不是将图块拼接成一个非常大的单一光栅。
我在 Xeon Gold 6134 @ 3.2GHZ 上运行此代码,并拥有 128GB 内存。无论我将 terraOptions() 设置为什么,R 甚至都没有接近使用我的处理器或内存潜力的很大一部分。
使用此代码,所有 982 个多边形将需要 11.8 天才能运行。如果有人能指出我可能尚未尝试过的特定技巧/工具,我将不胜感激(例如,我尝试过使用所有 terraOptions,我尝试过 raster 包和exact_extract 包。exact_extract()命令对我不起作用,因为我使用 SpatRaster/VRT 和 Sf 多边形对象作为输入 - 再次避免镶嵌非常大的单一栅格。)
谢谢。 (很抱歉我无法共享数据,因为数据太大或与人类主题相关...)这是未循环的代码:
编辑:52 个图块,每个图块 1.2-3.8GB。我最初引用的 150GB 总目录大小不正确,因为这是 ArcGIS 中的压缩大小。
library(terra)
c <- "path/to directory of raster tiles"
v <- "path/new.vrt" # name of virtual raster
ras_lst <- list.files(c,full.names=T,pattern=".tif$")
terra::vrt(ras_lst,v,overwrite = T)
ras <- rast(v)
w <- vect("path to polygon shapefile")
w2 <- terra::project(w,terra::crs(ras)) # transform proj to same as raster tiles
e2 <- terra::extract(ras,w2,fun="mean")
e2 # zonal mean value for 1 polygon (of 982)
show(ras) 产生:
class : SpatRaster
dimensions : 212556,247793,1 (nrow,ncol,nlyr)
resolution : 5.389892e-06,5.389892e-06 (x,y)
extent : -118.964,-117.6284,33.68984,34.8355 (xmin,xmax,ymin,ymax)
coord. ref. : +proj=longlat +datum=wgs84 +no_defs
source : naip2018mos.vrt
name : naip2018mos
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)