複数のスタックされたラスターイメージをRにインポートしますか?


9

指定されたフォルダーからすべての複数のモザイクラスタ(各モザイクは7つのレイヤで構成されています)をR にインポートします。次に、それらを単一のマルチレイヤラスタとしてアクセスします。

ここに画像の説明を入力してください

だから私はしました:

# read all mosaics named "mos....img" in R    
raster_data<-list.files(path=getwd(), pattern="mos.*.img$") 
# read files as rasters
s <- stack(raster_data)
# check my imported rasters p.ex. raster n°8 from "s" raster stack
s[[8]]         

また、ラスターs [[8]]には1つのレイヤーしか含まれていないため、モザイク全体がインポートされていません。

nlayers(s[[8]])
[[1]]

各モザイクを個別に読んだ場合、それは機能します:

# read 1 mosaic (composed by 7 bands)
mosaic1<-brick("mosaic1.img")
# extract one band
band4<-subset(mosaic1, 4)

「スタック」ツールがモザイク全体をインポートせず、モザイクのバンドを1つだけインポートするのはなぜですか。

回答:


11

見てくださいnlayers(s)。返されるレイヤーの数は28になります-少なくとも上記の例では、それぞれ7つのレイヤーを含む4つのマルチレイヤーオブジェクトがあります。stack複数のマルチレイヤーファイルに適用すると、1つの巨大な「RasterStack」オブジェクトが生成されます。つまり、すべての単一のマルチレイヤーオブジェクトが互いに追加されます。

ファイルごとに個別のスタックが必要な場合は、

s <- lapply(raster_data, stack)

これにより、「RasterStack」オブジェクトのリストが生成され、それぞれに1つの巨大なスタックではなく7つのレイヤーが含まれます。次に、特定のレイヤー、たとえば3番目の「RasterStack」オブジェクトの2番目のレイヤーにアクセスできます。

s[[3]][[2]]
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.