用rasterVis在R中的每一层上绘制特定点数据

3

我有2个栅格图像叠加在一起:

library(rasterVis)
r1 <- raster(system.file("external/test.grd", package="raster")) 
r2 <- r1 / 2
r.stack <- stack(r1, r2)

为了在每个特定层中突出显示一些区域,我基于栅格数值创建了两个点数据集:

pts1 <- rasterToPoints(r1, spatial=T)
idx <- which(as.data.frame(pts1)[, 1] >= 400)
pts1 <- pts1[idx, 1]

pts2 <- rasterToPoints(r2, spatial=T)
idx <- which(as.data.frame(pts2)[, 1] >= 400)
pts2 <- pts2[idx, 1]

现在,我想使用R中的rasterVis中的levelplot为栅格堆叠绘制图表。我还想用pts1叠加r1和用pts2叠加r2。

但是,一旦我添加一个点数据集,它就会被用于两个层:

levelplot(r.stack) + layer(sp.points(pts1, pch=20, cex=0.1, col="black"))

如何在使用栅格堆叠的同时使用特定点数据集和特定图层?

我想避免通过将每个图层与其特定的点数据集单独绘制来创建自己的子图,然后使用print.trellis。我尝试过,但结果与使用栅格堆叠的levelplot相比仍有所不足。

有什么好的方法可以实现这一点吗?

1个回答

4

通过 panel.number 函数,您可以根据所在的面板对数据进行子集划分:

pts <- list(pts1, pts2)

levelplot(r.stack) +
    layer(sp.points(pts[[panel.number()]],
                    pch=20, cex=0.1, col="black"))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接