奇怪的 R 问题:每当我使用 "raster" 包进行 运行 任何栅格计算时,互联网都会断开连接

Weird R problem: Internet keeps disconnecting whenever I run any raster calculation using the "raster" package

我 运行 研究了 R 的“光栅”包中似乎相当独特的问题。

我不确定如何为阅读本文的人提供一个可重现的示例,但总而言之,每当我执行涉及光栅对象的计算时,整个互联网都会关闭house. 虽然我无法提供光栅图像本身,因为它们太大了,但我可以提供它们的一般描述。像这样的对象每个大约 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)

有时我会使用更大的光栅堆栈(大约 10 GB)

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 个光栅的简单堆叠操作中断开互联网连接的计算类型 运行ges:

ann.cost_hp_t_stack <- stack(ann.cost_hp_t)

(ann.cost_hp_t 是一个包含 30 个栅格的列表,这些栅格看起来像上面(以前的)描述中的单个栅格层,将被堆叠起来创建 ann.cost_hp_t_stack,类似于中的栅格堆栈上面(后面)的描述),

到如下所示的操作:

for (i in c(1:30)){
  ann.cost_hp_t[[i]] <- ann.cost_t_im / ((1 + 0.05)^i)
}

其中 ann.cost_t_im 是与上述栅格图层相似的另一个栅格图层。

除了整个 router/house 的互联网中断之外,我的本地磁盘也被填满了,我必须定期重新启动 R 以释放大约 140 GB 的磁盘 space。

如果您已经读到这里,非常感谢您抽出宝贵时间。另外,如果格式混乱,请见谅。

TL;DR:当我使用 R 中的“光栅”包在千兆字节的数据上创建千兆字节时,我的互联网一直断线。

raster 包不使用您的网络进行正常计算(它仅在您使用 getData 函数时使用它来下载数据)。所以它与此直接相关。它必须与您的计算机在创建文件时所做的有关。

我能想到的就是你有一个自动将你的数据复制到云端的系统。因此,如果您创建了一堆大文件,那会降低 Internet 速度。

至于你的磁盘被填满了;那是因为您正在使用带有功能的非常大的文件,然后需要将这些文件保存到磁盘(在临时文件中)。您可以使用 calc 等其他函数来使用文件名。当然,仍然会有文件,但是你可以剪掉中间文件;如果有的话。请参阅 raster::removeTmpFiles 以在不退出 R 的情况下删除它们。