2013-10-28 8 views
8

次の最小作業例のようにデカルト座標(x、y)に値(l)を指定したデータフレームがあります。rのデータフレームからラスタを作成する方法は?

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 

私はラスタパッケージを使用してラスタを作成したいのですが、ドキュメントの私の読書は、私は、ラスタのセルにそれを持っている形式のデータをロードするための簡単な方法を明らかにしていません。私はforループを使用してそれを行ういくつかの方法を思いついたが、私が欠けているより直接的なアプローチがあると思う。ここ

答えて

14

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')を介して、異なるクラスのオブジェクトからラスタを作成するために多数の方法を記述し、1つのアプローチです。

+0

以下の回答は、より簡潔で、おそらく計算上より効率的です。 @グレゴリーplsは正しい答えを再考する! – RobinLovelace

16

簡単に解決策をさらに

Plot

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の文字列を指定することも存在します。詳細な説明はありません here.

関連する問題