2016-10-27 6 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]]) 
} 

방법 dataframe : 더 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