A有一个带4个波段的RasterLayer:
>rx<-raster("/media/karimdion/Passport/Essais/po_3804017_bgrn_0000000 tif")
> str(rx)
Formal class 'RasterLayer' [package "raster"] with 12 slots
@ file :Formal class '.RasterFile' [package "raster"] with 12 slots
@ nbands : int 4
@ bandorder : chr "BIL"
@ data :Formal class '.SingleLayerData' [package "raster"] with 13 slots
@ min : num 0
@ max : num 65535
@ band : int 1
@ history : list()
@ title : chr(0)
@ extent :Formal class 'Extent' [package "raster"] with 4 slots
@ xmin: num 655781
@ xmax: num 666701
@ ymin: num 4071522
@ ymax: num 4084598
@ rotated : logi FALSE
@ rotation:Formal class '.Rotation' [package "raster"] with 2 slots
@ geotrans: num(0)
@ transfun:function ()
@ ncols : int 5460
@ nrows : int 6538
@ crs :Formal class 'CRS' [package "sp"] with 1 slots
@ projargs: chr "+proj=utm +zone=32 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0"
@ z : list()
我希望将每个乐队作为RasterLayer放在一个变量中。因此,我将得到4个RasterLayers有1个乐队。我怎么能用R?
这样做答案 0 :(得分:6)
使用文件名f(此处使用示例文件进行再现)
f <- system.file("external/rlogo.grd", package="raster")
对于特定乐队,您可以
r <- raster(f, band=2)
或所有乐队
b <- brick(f)
或(效率较低):
s <- stack(f)
答案 1 :(得分:-1)
你应该可以这样做:
f <- "/media/karimdion/Passport/Essais/po_3804017_bgrn_0000000 tif"
rx<-raster(f)
for( i in 1:rx@file@nbands ){
assign( paste("rx" , i , sep = "." , raster(f, band=i)
}
这应该为您提供四个文件rx.1
,rx.2
,rx.3
,rx.4
,每个文件对应一个光栅文件。我确信有更好的(更有效和更正确的'光栅')方式,但我现在不记得了。