Векторная память исчерпана с помощью функции projectRaster в R

Я использую функцию пакета raster projectRaster для сопоставления растра с высоким разрешением (~ 700 МБ) с растром с более низким разрешением (~ 1 МБ). К сожалению, я сталкиваюсь с этой ошибкой;

Error: vector memory exhausted (limit reached?)

Судя по этой теме, похоже, можно расширить память R. Тем не менее, я хотел бы избежать возиться с этим, если это возможно. Мне было интересно, можно ли разделить растр с более высоким разрешением на более мелкие компоненты и выполнить перепроецирование по частям? Или это больше хлопот, чем оно того стоит, и я должен изучить вариант увеличения памяти? Или, что еще лучше, есть ли обходной путь, который полностью избегает этой проблемы? Я не могу быть единственным человеком, работающим с растровыми файлами среднего размера...


person EcologyTom    schedule 12.05.2019    source источник


Ответы (1)


Вы должны указать raster использовать меньше памяти. Возможно, установите memfrac на более низкое значение с помощью rasterOptions

rasterOptions()
rasterOptions(memfrac=.3)

Кроме того, возможно, будет хорошей идеей сначала aggregate растр высокого разрешения, чтобы размер ячейки был примерно вдвое меньше, чем у растра низкого разрешения, прежде чем использовать projectRaster

person Robert Hijmans    schedule 12.05.2019
comment
Спасибо! Я не знал о rasterOptions. Просто уменьшить memfrac было достаточно, чтобы заставить его работать. Что касается вашего второго предложения; потеряю ли я точность, выполнив два шага повторной выборки? (т.е. как шаг aggregate, так и шаг projectRaster) - person EcologyTom; 12.05.2019
comment
Я думаю, что это было бы более точным, если вы не перегружаете. Это связано с тем, что projectRaster будет запрашивать старый растр с центром новых ячеек; старые ячейки могут быть плохим представлением, если разница в разрешении велика. - person Robert Hijmans; 13.05.2019