2013-03-07 38 views
3

A的特異性條帶具有4個頻帶一個RasterLayer:的R - 獲得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個有1個樂隊的RasterLayers。我如何用R來做到這一點?

回答

-1

你應該能夠做到:

f <- "/media/karimdion/Passport/Essais/po_3804017_bgrn_0000000 tif" 
rx<-raster(f) 
for(i in 1:[email protected]@nbands){ 
    assign(paste("rx" , i , sep = "." , raster(f, band=i) 
} 

這應該給你四個文件,rx.1rx.2rx.3rx.4,一個光柵文件的每個波段。我確信有這樣做的更好(更高效,更正確的'光柵')方式,但我現在還記不起我的頭頂。

+0

謝謝!如果你還記得你的絕招,讓我知道! – 2013-03-07 14:13:50

+0

@KarimGhariani我會盡力!您是否也看到了關於柵格化多邊形邊緣的其他問題的答案? – 2013-03-07 14:41:19

+0

是的,我喜歡它! – 2013-03-07 21:56:50

6

文件名爲F(這裏使用的可重複性的示例文件)

f <- system.file("external/rlogo.grd", package="raster") 

對於特定的頻段,你可以做

r <- raster(f, band=2) 

或所有帶

b <- brick(f) 

或者(效率較低):

s <- stack(f)