繁体   English   中英

初始化 terra package 的 function 产生致命错误

[英]intialize function of terra package produces fatal error

我在 terra package 中使用初始化 function 在 RStudio 中创建栅格。 根据文档,这个 function 应该适用于大型栅格,但是当我尝试为所有单元格创建一个 10,000 x 10,000 栅格时,我在 RStudio 中遇到了一个致命错误。

使用示例代码按预期工作

r <- rast(ncols=10, nrows=5, xmin=0, xmax=10, ymin=0, ymax=5)
z <- init(r, fun=8) # works

但是,当我将尺寸增加到 10k x 10k 时,会发生致命错误。

r <- rast(ncols=10000, nrows=10000, xmin=0, xmax=10000, ymin=0, ymax=10000)
z <- init(r, fun=8) # crashes

在我的 Macbook Pro 上观看活动监视器显示,当运行 RStudio 进程超过 80GB RAM 的代码时,memory 压力峰值。 我的电脑上有 16GB 的 RAM,所以我认为问题可能与某些 memory 问题有关?

我不确定 function 是否没有按预期工作,或者问题是否出在 RStudio 上。 还是我做错了什么?

任何帮助将不胜感激。

我的规格:
操作系统:蒙特雷 12.0.1
芯片:苹果 M1 Pro。
R 版本:4.1.2 (2021-11-01)
RStudio版本:2021.9.1.372《鬼兰》

编辑:

大地版本:1.4.22

我在@FKneip 的链接中尝试了 rhijmans 推荐的两种解决方案,但都导致了与以前相同的致命错误。

r <- rast(ncols=10000, nrows=10000) # works

values(r) <- 1 # crashes
z <- init(r, 1, filename="test.tif", datatype="INT1U") # crashes

这不是问题的真正解决方案,但它是我刚刚找到的临时解决方法。 使用 terra 中的分类 function 对空栅格进行重新分类(见下文)。 这也有助于对已经填充了值的现有 10k x 10k 栅格进行重新分类。 有关如何根据栅格值输入rcl=参数的矩阵的详细信息,请参见?classify

r <- rast(ncols=10000, nrows=10000)
r
class       : SpatRaster 
dimensions  : 10000, 10000, 1  (nrow, ncol, nlyr)
resolution  : 0.036, 0.018  (x, y)
extent      : -180, 180, -90, 90  (xmin, xmax, ymin, ymax)
coord. ref. : lon/lat WGS 84 

x <- classify(r, rcl = matrix(c(NA,1), 1, 2, byrow = TRUE), right=NA) # does not crash
x
class       : SpatRaster 
dimensions  : 10000, 10000, 1  (nrow, ncol, nlyr)
resolution  : 0.036, 0.018  (x, y)
extent      : -180, 180, -90, 90  (xmin, xmax, ymin, ymax)
coord. ref. : lon/lat WGS 84 
source      : memory 
name        : lyr.1 
min value   :     1 
max value   :     1 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM