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

如何在rayshader的plot_3d上叠加raster栅格层并解决add_overlay报错

问题原因

你遇到的报错是三个核心问题导致的:

  • 变量名笔误:plot_3d的第一个输入参数是高程矩阵,你代码中写的mat_tx_reduced是未定义变量,实际你生成的降采样高程矩阵是mat_reduced
  • 入参类型错误:add_overlay的overlay参数不支持直接传入RasterLayer对象,需要先将栅格转换为RGB数组或rayshader支持的覆盖层格式,且要和高程矩阵的尺寸完全匹配
  • 调用逻辑错误:plot_3d没有返回值,直接渲染到rgl绘图设备,使用管道符将其输出传递给add_overlay不符合逻辑,add_overlay会自动识别当前激活的3D绘图设备,不需要传入管道传递的参数

修正步骤

  1. 读取自定义栅格后,先对齐高程数据的投影、范围,再重采样到和降采样后的高程矩阵相同的尺寸
  2. 使用rayshader自带的raster_to_overlay函数,将栅格转换为add_overlay支持的格式
  3. 单独调用add_overlay完成叠加

修正后代码

library(raster)
library(rayshader)

# 读取莫桑比克高程数据
altc <- getData('alt', country='MOZ', mask=TRUE)
elevation_matrix <- raster_to_matrix(altc)
mat_reduced <- resize_matrix(elevation_matrix, 0.7)

# 读取自定义栅格并做对齐处理
y <- raster("https://www.dropbox.com/s/zhsu204du0rgbjp/Tlim_margins_Mozambique.grd?dl=0")
# 对齐投影、范围、分辨率
y_proj <- projectRaster(y, crs = crs(altc))
y_crop <- crop(y_proj, altc)
y_resample <- resample(y_crop, raster(mat_reduced, crs = crs(altc), ext = extent(altc)))
# 转换为add_overlay支持的覆盖层格式
y_overlay <- raster_to_overlay(y_resample, alpha = 0.5)

# 生成基础着色纹理
base_shade <- mat_reduced |>
  sphere_shade(texture = create_texture(
    lightcolor = "white",
    shadowcolor = "black",
    leftcolor = "grey",
    rightcolor = "grey",
    centercolor = "grey",
    cornercolors = c(NW = "#ffc500", NE = "#387642", SW = "#d27441", SE = "#296176")
  ),
  colorintensity = 0.12,
  sunangle = 45)

# 绘制3D高程图
base_shade |>
  plot_3d(mat_reduced,
          windowsize = c(800, 600),
          zscale = 200,
          zoom = 0.65,
          phi = 80,
          theta = 0,
          fov = 0,
          shadow = TRUE,
          shadowcolor = "#5da5da",
          water = TRUE,
          watercolor = "lightblue",
          waterlinecolor = "lightblue")

# 叠加栅格层
add_overlay(overlay = y_overlay)

额外注意事项

如果你的栅格是分类栅格,可以提前指定配色方案,传入raster_to_overlay的palette参数自定义叠加层的显示颜色。

内容的提问来源于stack exchange,提问作者Agus camacho

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:06:00