How to extract values from rasterstack with xy coordinates?

前端 未结 2 1099
终归单人心
终归单人心 2020-12-16 05:23

I have a rasterstack (5 raster layers) that actually is a time series raster.

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


        
相关标签:
2条回答
  • 2020-12-16 06:12

    Thanks a lot @SimonO101 !

    This code works.

    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") 
    
    0 讨论(0)
  • 2020-12-16 06:17

    You can use extract and pass a vector of cell numbers you wish to extract to return a matrix of values in each pixel. Each row represents a pixel, the columns are layers...

    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
    

    However extract is more useful when trying to get particular pixels. To get all pixels with the x / y coordinates you can just use 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
    
    0 讨论(0)
提交回复
热议问题