Rにおけるraster*オブジェクトの違い


Raster
1バンドのみで構成されるメッシュデータ
r=raster("パス/◯◯.tif")


Raster stack
複数バンドで構成されるメッシュデータ。brickと違い、データがすべてメモリ上に格納されるわけではないので、大規模データはstackを利用するほうがパンクしない。
s1=stack("パス/◯◯.tif")
or
s2=stack(r1,r2) #r1,r2はrasterオブジェクト

Raster brick
複数バンドで構成されるメッシュデータ。stackと違い、データはすべてメモリ上に格納されるため計算が早い。
b1=brick("パス/◯◯.tif")
b2=brick(r1,r2) #r1,r2はrasterオブジェクト
b3=brick(s)

brickはデータがメモリ上にあるため、brick内データ演算ができる。
library(raster)
#b1というbrickオブジェクトを作成
b1=brick("パス/◯◯.tif")

#b1@data@valuesはb1の値。matrix。nはb1の値からNAを取り除いたもの。integer
n <- which(! is.na(b1@data@values))

#例としてkmeansを実行。b1@data@values[n]でNAを取り除いたデータを用いている。
clus=kmeans(b1@data@values[n],3)
ans=b1

#結果をbrickに返す。
ans@data@values[n]=clus$cluster
spplot(ans)