簡體   English   中英

如何從R中的數據幀創建柵格?

[英]How to create a raster from a data frame in r?

我有一個數據框,其中為笛卡爾坐標(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

我想使用raster包創建一個raster,但是我對文檔的閱讀並沒有揭示一種簡單的方法將數據以我擁有的形式加載到raster像元中。 我想出了幾種使用for循環的方法,但是我懷疑我缺少一種更直接的方法。

存在一個更簡單的解決方案

 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)

情節

此外,您可以指定CRS字符串。 此處有詳細討論

這是一種通過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)

help('raster')描述了許多從不同類的對象創建柵格的方法。

暫無
暫無

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

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