2016-10-27 9 views
1

私は同じ場所のラスタのリストを複数年保存しています。経時的な画素値の変化は、画素の時系列を表す。どのデータフレームraster.listから縦方向のピクセル値を抽出し、データフレームに保存します。

library(raster) 

# create raster data from scratch 
# create empty raster 
y1<-raster(ncol = 3, nrow = 3) 

values(y1)<-1:9 

projection(y1)<-CRS("+init=epsg:4326") 

# create and diversify the rasters 
y2<-y1+10 
y3<-y1+20 
y4<-y1+30 

# make list of rasters 
y.list<-list(y1, y2,y3,y4) 

# plot all rasters at once 
par(mfrow = c(2,2)) 

for(i in 1:length(y.list)) { 
    plot(y.list[[i]]) 
} 

:さらなる分析に は、私は、すべてのピクセルあたりの時間をかけて値を抽出し、データフレームに格納する行= #pixel、カラム=年

ダミーデータを必要とします次のようになります。


  y1 y2 y3 y4 
pixel1 1 10 20 30 
pixel2 
... 
pixel9 9 19 29 39 

どのように時間をかけて独自のピクセル値を抽出し、データフレームに、個々のピクセルデータを変換するために?

答えて

0

私はここですばらしい答えを見つけました。 How to extract values from rasterstack with xy coordinates?

ラスタのリストにラスタを入れる必要はありません。ラスタスタックを作成するだけです。

単に、raster :: extractを使用して、各ピクセル値の時系列を作成してください。

スクリプト全体:

library(raster) 

# create raster data from scratch 
# create empty raster 
y1<-raster(ncol = 3, nrow = 3) 

values(y1)<-1:9 

projection(y1)<-CRS("+init=epsg:4326") 

# recreate and diversify the rasters 
y2<-y1+10 
y3<-y1+20 
y4<-y1+30 

# create raster stack 
# create raster stack 
s<-stack(y1, y2, y3, y4) 

# plot rasters 
plot(s) 

# extract raster values - return a matrix of values in each pixel 
# row = pixel, column = layer (year) 
mat <- raster::extract(s , 1:ncell(s)) 

tadaaaa !!!!

> mat 
    layer.1 layer.2 layer.3 layer.4 
[1,]  1  11  21  31 
[2,]  2  12  22  32 
[3,]  3  13  23  33 
[4,]  4  14  24  34 
[5,]  5  15  25  35 
[6,]  6  16  26  36 
[7,]  7  17  27  37 
[8,]  8  18  28  38 
[9,]  9  19  29  39 
関連する問題