Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to create a raster from a data frame in r?

Tags:

r

raster

I have a data frame in which values (l) are specified for Cartesian coordinates (x, y) as in the following minimal working example.

set.seed(2013) df <- data.frame( x = rep( 0:1, each=2 ),                   y = rep( 0:1,  2),                   l = rnorm( 4 ))  df #   x y           l # 1 0 0 -0.09202453 # 2 0 1  0.78901912 # 3 1 0 -0.66744232 # 4 1 1  1.36061149 

I want to create a raster using the raster package, but my reading of the documentation has not revealed a simple method for loading data in the form that I have it into the raster cells. I've come up with a couple ways to do it using for loops, but I suspect that there's a much more direct approach that I'm missing.

like image 343
Gregory Avatar asked Oct 28 '13 04:10

Gregory


1 Answers

An easier solution exists as

 library(raster)  dfr <- rasterFromXYZ(df)  #Convert first two columns as lon-lat and third as value                  plot(dfr)  dfr                    class       : RasterLayer   dimensions  : 2, 2, 4  (nrow, ncol, ncell)  resolution  : 1, 1  (x, y)  extent      : -0.5, 1.5, -0.5, 1.5  (xmin, xmax, ymin, ymax)  coord. ref. : NA   data source : in memory  names       : l   values      : -2.311813, 0.921186  (min, max) 

Plot

Further, you may specify the CRS string. Detailed discussion is available here.

like image 189
Pankaj Avatar answered Oct 05 '22 22:10

Pankaj