3 つのレイヤーを持つラスター (1300 x 1400 セル) があり、3 つのレイヤーすべてのデータを使用して焦点計算を行いたいと考えています。たとえば、レイヤーの 1 つは土地被覆マップであり、ウィンドウの中央ピクセルと同じ土地被覆タイプを持つ焦点ウィンドウ内のこれらのピクセルのみを計算に使用したいと考えています。これは、ラスター パッケージの「focal」関数では不可能だと思われるため、「getValuesFocal」を使用して、移動するウィンドウの範囲ごとに 3 つのレイヤーからデータを抽出しようとしました。これを行った後、私の考えは、「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 を使用しており、8GB の RAM を搭載しています。「getValuesFocal」の結果をファイルに書き込む方法はありますか? どんな助けにも感謝します。