如何将两个栅格结果合并为单图并添加非数值变量图例
合并两个作物产量栅格并按最大值来源着色的实现方案
需求说明
我们需要将两个作物产量栅格合并为单个可视化结果:
- 每个单元格保留两个数据源中的最大值
- 按最大值的来源分配不同颜色,并添加对应图例
- 最终结果需保持栅格类型
1. 环境准备与数据加载
首先加载处理栅格所需的包,导入你的原始栅格数据(替换为实际路径或已有栅格对象):
# 加载依赖包 library(terra) # 替代旧版raster包,处理栅格更高效 library(RColorBrewer) # 用于生成配色方案 # 导入原始栅格数据(示例路径,替换为你的实际数据) yield_raster1 <- rast("your_first_yield_raster.tif") yield_raster2 <- rast("your_second_yield_raster.tif")
2. 计算最大值并标记数据源
先计算每个单元格的最大值,再创建一个标记栅格记录该最大值的来源(1代表第一个数据源,2代表第二个),最后将两者合并为多层栅格以保持栅格类型:
# 计算每个单元格的最大值 max_yield <- max(yield_raster1, yield_raster2) # 生成来源标记栅格:若栅格1值≥栅格2则标记为1,否则为2 source_raster <- ifel(yield_raster1 >= yield_raster2, 1, 2) # 合并为多层栅格,同时保留最大值和来源信息 combined_raster <- c(max_yield, source_raster) names(combined_raster) <- c("Max_Yield", "Source")
3. 按来源着色并可视化
为两个数据源分配专属颜色,基于来源标记栅格绘制可视化结果,并添加自定义图例:
# 定义配色:为两个数据源设置不同颜色 color_pal <- brewer.pal(3, "Set1")[1:2] # 从Set1配色中取前2种 names(color_pal) <- c("数据源1", "数据源2") # 绘制来源标记栅格(按数据源着色) plot(combined_raster$Source, col = color_pal, legend = FALSE, # 关闭默认图例,改用自定义图例 main = "作物产量最大值数据源分布") # 添加自定义图例 legend("bottomright", legend = names(color_pal), fill = color_pal, title = "数据源来源", bty = "n") # 去掉图例边框 # 可选:单独查看最大值的数值分布 # plot(combined_raster$Max_Yield, main = "作物产量最大值分布")
4. 保存合并后的栅格
如果需要将结果保存到本地文件:
# 保存多层栅格(包含最大值和来源标记) writeRaster(combined_raster, "combined_yield_result.tif", overwrite = TRUE)
内容的提问来源于stack exchange,提问作者Nightowl
相关产品推荐
相关产品推荐

