R - 将SpatialLines转换为栅格

Ric*_*loo 16 r raster r-raster r-sp

在R中,我们可以将a raster转换为SpatialLinesDataFrame具有以下功能rasterToCountour:

library(raster)
f <- system.file("external/test.grd", package="raster")
r <- raster(f)
x <- rasterToContour(r)
class(x)

[1] "SpatialLinesDataFrame"
attr(,"package")
[1] "sp"

spplot(x)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

在R中,有没有办法做相反的事情?有点像contourToRaster

我们可以简单地获取与沿着线的每个点相关联的字段值,但是我正在寻找在线之间插值并在定义的域上产生完整栅格的更通用的东西.

Rob*_*ans 7

library(raster)
f <- system.file("external/test.grd", package="raster")
r <- raster(f)
x <- rasterToContour(r)
Run Code Online (Sandbox Code Playgroud)

您可以栅格化值.在这种情况下,首先从因子标签中提取它们.

x$value <- as.numeric(as.character(x$level))
rr <- rasterize(x, r, "value")
Run Code Online (Sandbox Code Playgroud)

然后提取单元格值并插入这些值

xyz <- rasterToPoints(rr)
Run Code Online (Sandbox Code Playgroud)

(如果你想跳过rasterize和rasterToPoints(正如mikoontz建议的那样)你可以改为

#g <- geom(x) 
#xyz = cbind(g[, c("x", "y")], x$value[g[,1]])
Run Code Online (Sandbox Code Playgroud)

以更复杂的模型为代价)

现在插值,例如使用Tps

library(fields) 
tps <- Tps(xyz[,1:2], xyz[,3])
p <- raster(r)
p <- interpolate(p, tps)

m <- mask(p, r)
plot(m)
Run Code Online (Sandbox Code Playgroud)