У меня есть растр (1300 на 1400 ячеек) с 3 слоями, и я хотел бы сделать фокусные расчеты, используя данные всех 3 слоев. Например, одним из слоев является карта земного покрова, и я хотел бы использовать в расчетах только те пиксели в фокальном окне, которые имеют тот же тип земного покрова, что и центральный пиксель окна. Я предполагаю, что это невозможно с функцией «focal» в растровом пакете, поэтому я попытался извлечь данные из 3 слоев для каждого экстента движущегося окна с помощью «getValuesFocal». После этого моя идея заключалась в том, чтобы перебрать строки массива, полученные в результате «getValuesFocal». Однако массив очень большой и не помещается в память, поэтому я получаю сообщение об ошибке:
dataraster <- stack(classification, layer2, layer3)
data <- getValuesFocal(dataraster, ngb=11, names=TRUE, padValue=NA, array=TRUE)
Error: cannot allocate vector of size 1.7 Gb
In addition: Warning messages:
1: In `rownames<-`(`*tmp*`, value = 1:1879200) :
Reached total allocation of 8008Mb: see help(memory.size)
Я знаю, что такие пакеты, как ff и bigmemory, позволяют обрабатывать большие наборы данных, но как я могу их использовать, если мой набор данных не может быть изначально создан. Я использую 64-битную R и имею 8 ГБ ОЗУ. Есть ли способ записать результат «getValuesFocal» в файл? Буду признателен за любую помощь.