簡體   English   中英

如何從帶有xy坐標的rasterstack中提取值?

[英]How to extract values from rasterstack with xy coordinates?

我有一個柵格堆棧(5個柵格圖層),它實際上是一個時間序列柵格。

r <- raster(nrow=20, ncol=200)
s <- stack( sapply(1:5, function(i) setValues(r, rnorm(ncell(r), i, 3) )) )
s

class       : RasterStack
dimensions  : 20, 200, 4000, 5  (nrow, ncol, ncell, nlayers)
resolution  : 1.8, 9  (x, y)
extent      : -180, 180, -90, 90  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 
names       :   layer.1,   layer.2,   layer.3,   layer.4,   layer.5
min values  : -9.012146, -9.165947, -9.707269, -7.829763, -5.332007
max values  :  11.32811,  11.97328,  15.99459,  15.66769,  16.72236

我的目標是繪制每個像素並探索其隨時間的行為。

如何提取每個像素及其x,y坐標並繪制時間序列曲線?

您可以使用extract並傳遞要提取的單元格編號向量,以在每個像素中返回值矩陣。 每行代表一個像素,列為圖層...

mat <- extract( s , 1:ncell(s) )
head( mat )
#        layer.1  layer.2  layer.3    layer.4   layer.5
#[1,] -0.2138718 3.114061 3.670945  1.2560295  2.881104
#[2,]  3.3580783 5.008205 2.315353  2.3247236 11.539837
#[3,]  3.2173875 2.958985 1.055389  3.1016730  4.064339
#[4,]  4.1113162 4.469828 3.113790  8.5329679  8.771459
#[5,] -2.4011283 4.747527 4.299707  2.2111643  9.457012
#[6,] -2.6159294 5.659211 1.926900 -0.3886837  5.661419

但是,在嘗試獲取特定像素時, extract更為有用。 要獲取具有x / y坐標的所有像素,您可以使用rasterToPoints ...

head( rasterToPoints( s ) )
#          x    y    layer.1  layer.2  layer.3    layer.4   layer.5
#[1,] -179.1 85.5 -0.2138718 3.114061 3.670945  1.2560295  2.881104
#[2,] -177.3 85.5  3.3580783 5.008205 2.315353  2.3247236 11.539837
#[3,] -175.5 85.5  3.2173875 2.958985 1.055389  3.1016730  4.064339
#[4,] -173.7 85.5  4.1113162 4.469828 3.113790  8.5329679  8.771459
#[5,] -171.9 85.5 -2.4011283 4.747527 4.299707  2.2111643  9.457012
#[6,] -170.1 85.5 -2.6159294 5.659211 1.926900 -0.3886837  5.661419

非常感謝@ SimonO101!

此代碼有效。

r <- raster(nrow=10, ncol=10)
s <- stack( sapply(1:5, function(i) setValues(r, rnorm(ncell(r), i, 3) )) )
s[1:3]<-NA

vals <- values(s)

coord <- xyFromCell(s,1:ncell(s))

combine <- cbind(coord,vals)

write.table(combine,"xyvalues.txt") 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM