如何组合两个(或多个)具有不同级别的栅格?

How to combine two (or more) rasters that have different levels?

我想做的是将几个不同的作物收获栅格文件(例如大豆和玉米)合并到一张地图中。图例应显示作物的两种不同颜色。我将使用的数据是这个作物地图数据: http://www.earthstat.org/harvested-area-yield-175-crops/

但我首先尝试在示例数据集上执行此操作:

library(raster)

r1 <- raster(nrow=10, ncol=10)
r1[] = sample(c(0,1), 100, replace = TRUE)
r1 <- ratify(r1)

rat <- levels(r1)[[1]]
rat$landcover <- c('NA', 'Maize')
rat$class <- c('A1', 'B2')
levels(r1) <- rat

r2 <- raster(nrow=10, ncol=10)
r2[] = sample(c(0,2), 100, replace = TRUE)
r2 <- ratify(r2)

rat <- levels(r2)[[1]]
rat$landcover <- c('NA', "Soybean")
rat$class <- c('A1', 'C3')
levels(r2) <- rat

如果我对这两个进行 levelplot 看起来不错

levelplot(r1, col.regions = c('white', 'blue'))
levelplot(r2, col.regions = c('white', 'green'))

但后来我尝试将它们组合起来,结果却很奇怪

rm = merge(r1,r2)

levelplot(rm, col.regions=c('white', 'blue', 'green'))

有什么地方做错了吗?

不清楚您希望如何组合这些,但将它们转换为数据帧以在 ggplot 中绘制会很简单:

df <- rbind(cbind(as.data.frame(rasterToPoints(r1)), raster = "r1"),
            cbind(as.data.frame(rasterToPoints(r2)), raster = "r2"))

df$layer[df$layer == 0] <- NA 
df$layer <- factor(c("Maize", "Soybean")[df$layer])

library(ggplot2)

ggplot(df, aes(x, y, fill = layer)) + 
  geom_tile(na.rm = TRUE, alpha = 0.3) +
  scale_fill_manual(values = c("red", "forestgreen"), na.value = NA) +
  theme_bw()