各位,我正试图用rayshader包获取一个3D地图,但显然这个文件太大了,无法由RStudio处理。下面是代码的一部分:
(...)
elevation = raster::merge(srtm,srtm2) #works fine
height_shade(raster_to_matrix(elevation)) %>% plot_map() #works fine
piecergb <- raster::stack(piece) #works fine
setValues(piecergb, scales::rescale(values(piecergb), to = c(0, 255)))
Error: cannot allocate vector of size 11.9 Gb因此,我首先检查了我的RStudio的容量:
memory.size()
[1] 27720.21
memory.limit()
[1] 2e+05 ###this I have previously changed with memory.limit(size=200000)并调用gc()来清理我的会话。
gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 2766617 147.8 4954078 264.6 4954078 264.6
Vcells 404719527 3087.8 3551300168 27094.3 3774733748 28799.0然后我重新启动我的RStudio,重新定义内存限制,然后再试一次。但我仍然收到同样的错误信息。有人知道该怎么解决这个问题吗?到目前为止,我还没有找到另一个解决方案,无法继续绘制地图。
我的系统信息是:
Sys.info()
sysname release version nodename machine login user effective_user
"Windows" "10 x64" "build 18363" "NSF85" "x86-64" "install" "install" "install" 提前谢谢你
阿德里亚纳
发布于 2020-12-10 18:12:58
在这一行中,使用values将Raster* object piecergb中的所有单元格值读入内存,然后使用setValues将它们再次分配给Raster*。
x <- setValues(piecergb, scales::rescale(values(piecergb), to = c(0, 255)))如果您的数据集很大,这会导致问题。相反,使用光栅包中的方法(这些方法可以避免这个问题)。我认为你所做的相当于
x <- clamp(piecergb, 0, 255)还请参见?reclassify
发布于 2022-05-15 13:38:25
使用以下代码最大限度地提高内存
library(raster)
rasterOptions(maxmemory = 1e+09)
rasterOptions(tmpdir="temp_files")祝好运!
https://stackoverflow.com/questions/65237600
复制相似问题