У меня есть растровый (1300 на 1400 ячеек) с 3 слоями, и я хотел бы сделать фокальные вычисления, используя данные из всех 3 слоев. Например, один из слоев - это карта земного покрова, и я бы хотел использовать в расчетах только эти пиксели в фокальном окне, которые имеют тот же тип растительного покрова, что и центральный пиксель окна. Я полагаю, что это невозможно с помощью функции «фокального» в растровом пакете, поэтому я попытался извлечь данные из трех слоев для каждой области движущегося окна с помощью «getValuesFocal». После этого моя идея состояла в том, чтобы перебрать строки массива, полученные из «getValuesFocal». Однако массив очень большой и не подходят к памяти, так что я получаю сообщение об ошибке:R растровый пакет: нехватка памяти при использовании функции «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)
Я знаю, что пакеты, как и далее, и bigmemory позволяют для обработки больших массивов данных, но как я могу использовать их, когда мой набор данных не может быть изначально создано. Я использую 64-бит R и имею 8 ГБ оперативной памяти. Есть ли способ записать результат «getValuesFocal» в файле? Буду благодарен за любую помощь.