J'ai un cadre de données dans lequel les valeurs (l) sont spécifiées pour les coordonnées cartésiennes (x, y) comme dans l'exemple de travail minimal suivant.
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
Je veux créer un raster à l'aide du package raster, mais ma lecture de la documentation n'a pas révélé de méthode simple pour charger les données sous la forme que je les ai dans les cellules raster. J'ai trouvé quelques façons de le faire en utilisant des boucles, mais je soupçonne qu'il y a une approche beaucoup plus directe qui me manque.
Voici une approche, via 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')
décrit un certain nombre de méthodes pour créer un raster à partir d'objets de différentes classes.
Une solution plus simple existe
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)
De plus, vous pouvez spécifier la chaîne CRS. Une discussion détaillée est disponible ici.