如何从r中的数据框创建栅格?

Gre*_*ory 14 r raster

我有一个数据框,其中为笛卡尔坐标(x,y)指定值(l),如下面的最小工作示例所示.

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
Run Code Online (Sandbox Code Playgroud)

我想使用光栅包创建一个栅格,但是我对文档的阅读并没有透露一种简单的方法,用于将数据加载到栅格单元格中.我想出了几种方法来使用for循环,但我怀疑有一种更直接的方法,我缺少.

Pan*_*kaj 35

存在更简单的解决方案

 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)
Run Code Online (Sandbox Code Playgroud)

情节

此外,您可以指定CRS字符串.详细讨论可在此处获得.

  • 如果出现错误:``rasterFromXYZ() 中的错误:x 像元大小不规则``,该怎么办?我相信它的到来是因为我必须改变点的随机分布,并且我不知道如何继续 (4认同)

mne*_*nel 20

这是一种方法,通过 SpatialPixelsDataFrame

library(raster)
# create spatial points data frame
spg <- df
coordinates(spg) <- ~ x + y
# coerce to SpatialPixelsDataFrame
gridded(spg) <- TRUE
# coerce to raster
rasterDF <- raster(spg)
rasterDF
# 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      : -0.6674423, 1.360611  (min, max)
Run Code Online (Sandbox Code Playgroud)

help('raster') 描述了许多从不同类的对象创建栅格的方法.