![](/img/trans.png)
[英]RASTER TO VECTOR : WriteVector from terra package leads to fatal error
[英]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.