我在R上遇到了一个似乎相当独特的问题"光栅";包裹
我不知道如何为阅读本文的人提供一个可复制的例子,但长话短说,每当我进行涉及光栅对象的计算时,整个房子的互联网都会关闭虽然我不能提供光栅图像本身,因为它们太大了,但我可以提供它们的一般描述。像这样的对象每个大约有1 GB。
class : RasterLayer
dimensions : 15336, 19016, 291629376 (nrow, ncol, ncell)
resolution : 30.85642, 30.85642 (x, y)
extent : 610995.9, 1197762, 9526801, 10000015 (xmin, xmax, ymin, ymax)
crs : +proj=utm +zone=52 +south +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0
source : C:/Users/tug74077/AppData/Local/Temp/RtmpcVf7pt/raster/r_tmp_2020-07-21_082952_22832_46671.grd
names : layer
values : 6378.035, 2016403 (min, max)
有时我使用光栅堆栈,它要大得多(大约10GB(
class : RasterStack
dimensions : 15336, 19016, 291629376, 30 (nrow, ncol, ncell, nlayers)
resolution : 30.85642, 30.85642 (x, y)
extent : 610995.9, 1197762, 9526801, 10000015 (xmin, xmax, ymin, ymax)
crs : +proj=utm +zone=52 +south +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0
names : ap_hp_stack.1, ap_hp_stack.2, ap_hp_stack.3, ap_hp_stack.4, ap_hp_stack.5, ap_hp_stack.6, ap_hp_stack.7, ap_hp_stack.8, ap_hp_stack.9, ap_hp_stack.10, ap_hp_stack.11, ap_hp_stack.12, ap_hp_stack.13, ap_hp_stack.14, ap_hp_stack.15, ...
min values : 426.50653, 403.31589, 381.38617, 360.64886, 341.03912, 322.49561, 304.96039, 288.37863, 272.69846, 257.87088, 243.84953, 230.59058, 218.05255, 206.19627, 194.98465, ...
max values : 134839.22, 127507.53, 120574.50, 114018.44, 107818.85, 101956.36, 96412.63, 91170.34, 86213.09, 81525.38, 77092.55, 72900.77, 68936.89, 65188.55, 61644.02, ...
断开互联网连接的计算类型包括30个光栅的简单堆叠操作:
ann.cost_hp_t_stack <- stack(ann.cost_hp_t)
(ann.cost_hp_t是上面(前一个(描述中看起来像单个光栅层的30个光栅的列表,这些光栅将被堆叠以创建ann.cost_hp_tstack,其类似于上面(后一个(中的光栅堆叠(,
到一个看起来像这样的操作:
for (i in c(1:30)){
ann.cost_hp_t[[i]] <- ann.cost_t_im / ((1 + 0.05)^i)
}
其中ann.cost_ im是类似于上述光栅层的另一光栅层。
除了整个路由器/房子的互联网被切断外,我的本地磁盘也被填满了,我必须定期重新启动R以释放大约140 GB的磁盘空间。
如果你读到这里,非常感谢你抽出时间。此外,如果格式令人困惑,也很抱歉。
TL;DR:当我使用";光栅";以R封装,以创建一个又一个千兆字节的数据。
raster
包不使用您的网络进行正常计算(它只用于在使用getData函数时下载数据(。因此,它与此直接相关。它必须与您的计算机在创建文件时所做的操作相关。
我所能想到的就是你有一个系统,可以自动将你的数据复制到云端。因此,如果你创建了一堆大文件,就会减慢互联网的速度。
至于磁盘的填充;这是因为您使用的是非常大的文件和函数,然后需要将这些文件保存到磁盘(在临时文件中(。您可以使用calc
等其他函数来使用文件名。当然,仍然会有文件,但你可以删掉中间文件;如果有的话。参见raster::removeTmpFiles
,了解在不退出R 的情况下移除它们