Это зависит от размера растра и объема оперативной памяти, которую имеет компьютер. Небольшие наборы данных хранятся в памяти, большие наборы данных хранятся на диске.
Решение о том, является ли x
маленьким или большим, делается с помощью canProcessInMemory
с использованием "rasterOptions", maxmemory
и memfrac
library(raster)
x <- raster(res=1/12)
values(x) <- 1
rasterOptions()
#maxmemory : 1e+09
#memfrac : 0.6
canProcessInMemory(x, verbose=TRUE)
#memory stats in GB
#mem available: 50.07
# 60% : 30.04
#mem needed : 0.28
#max allowed : 0.93 (if available)
#[1] TRUE
В приведенном выше примере доступно 50 ГБ ОЗУ. Максимальная доля, которая может быть использована, в 0,6 раза больше доступной оперативной памяти (0.6*50=30 GB
) или maxmemoy
, в зависимости от того, что меньше. maxmemory
выражается в байтах, то есть 1e+09 / 1073741824 = 0.93 GB
.
Чтобы избежать записи данных на диск (что замедляет процесс), вы можете установить maxmemory
на большее число или даже Inf
.
rasterOptions(maxmemory=Inf)
Значение по умолчанию для maxmemory увеличится в будущих версиях.
В версии 2.8 (в разработке) есть третий критерий. Если число ячеек растра * больше, чем (2 ^ 31 - 1; наибольшее целое число в R), canProcessInMemory
возвращает FALSE
.
Чтобы определить, использует ли объект Raster * x
файл, вы можете сделать
filename(x)
#[1] ""
Если is возвращает пустую строку, файла нет. Вы можете принудительно записать в файл с помощью опции todisk
(предназначенной только для тестирования)
y <- x * 1
filename(y)
#[1] ""
rasterOptions(todisk=TRUE)
y <- x * 1
filename(y)
#"/temp/RtmpQN2nYn/raster/r_tmp_2019-01-27_120723_22156_26708.grd"
Если вам нужен файл, лучше использовать аргумент filename
, который есть у большинства методов.
Временные файлы удаляются по окончании сеанса (если вы не используете rasterOptions
, чтобы установить временную папку в другом месте (не рекомендуется))