You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将两个栅格结果合并为单图并添加非数值变量图例

合并两个作物产量栅格并按最大值来源着色的实现方案

需求说明

我们需要将两个作物产量栅格合并为单个可视化结果:

  • 每个单元格保留两个数据源中的最大值
  • 按最大值的来源分配不同颜色,并添加对应图例
  • 最终结果需保持栅格类型

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 15:12:33