JCra
JCra

Reputation: 51

How to extract the values from a raster in R

I want to use R to extract values from a raster. Basically, my raster has values from 0-6 and I want to extract for every single pixel the corresponding value. So that I have at the end a data table containing those two variables.

Thank you for your help, I hope my explanations are precisely enough.

Upvotes: 3

Views: 15080

Answers (3)

Hammao
Hammao

Reputation: 879

How about simply doing

as.data.frame(s, xy=TRUE) # s is your raster file 

Upvotes: 0

Robert Hijmans
Robert Hijmans

Reputation: 47061

Example data

library(raster)
r <- raster(ncol=5, nrow=5, vals=1:25)

To get all values, you can do

values(r)
# [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
#as.matrix(r)
#     [,1] [,2] [,3] [,4] [,5]
#[1,]    1    2    3    4    5
#[2,]    6    7    8    9   10
#[3,]   11   12   13   14   15
#[4,]   16   17   18   19   20
#[5,]   21   22   23   24   25

Also see ?getValues

You can also use indexing

r[2,2] 
#7 
r[7:8]
#[1] 7 8

For more complex extractions using points, lines or polygons, see ?extract

Upvotes: 6

ppp
ppp

Reputation: 11

x is the raster object you are trying to extract values from; y is may be a SpatialPoints, SpatialPolygons,SpatialLines, Extent or a vector representing cell numbers (take a look at ?extract). Your code values_raster <- extract(x = values, df=TRUE) will not work because you're feeding the function with any y object/vector. You could try to build a vector with all cell numbers of your raster. Imagine your raster have 200 cells. If your do values_raster <- extract(x = values,y=seq(1,200,1), df=TRUE) you'll get a dataframe with values for each cell.

Upvotes: 1

Related Questions