次の最小作業例のように、デカルト座標(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
ラスターパッケージを使用してラスターを作成したいのですが、ドキュメントを読んでも、ラスターセルにある形式でデータを読み込む簡単な方法がわかりません。私はforループを使用してそれを行う方法をいくつか考え出しましたが、私が見逃しているもっと直接的なアプローチがあると思います。
SpatialPixelsDataFrame
を使用した1つのアプローチを次に示します
_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')
は、異なるクラスのオブジェクトからラスターを作成するためのいくつかのメソッドについて説明します。
より簡単な解決策は
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文字列を指定できます。詳細な議論が可能です こちら