2016-10-27 7 views
1

У меня есть список растров того же места в течение нескольких лет. Изменение значения пикселя во времени представляет собой временной ряд пикселя. Для дальнейшего анализа, мне нужно, чтобы извлечь значения с течением времени на каждый пиксель, и хранить его в кадре данных, где строка = #pixel, колонка = годИзвлечь значения продольных пикселей из растра.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 должен выглядеть следующим образом:


  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?

Не нужно помещать растры в список растров - просто создайте растровый стек!

Than, просто используйте растр :: 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