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

在R中使用ggplot2绘制栅格地图的基础方法及相关问题

解决方案:栅格与SF对象投影匹配及ggplot叠加绘制

(a) 提取CRS并统一投影

提取CRS

  • 提取SF对象的CRS,使用st_crs()函数:
sf_crs <- st_crs(distVDS_betas)
print(sf_crs)
  • 提取栅格数据的CRS(raster包),使用crs()函数:
raster_crs <- crs(GAEZstack)
print(raster_crs)

统一投影

若两者CRS不一致,选择一种统一方式:

  1. 转换栅格到SF对象的CRS(推荐,适配ggplot的SF绘制逻辑):
GAEZstack_proj <- projectRaster(GAEZstack, crs = sf_crs$wkt)
  1. 转换SF对象到栅格的CRS:
distVDS_betas_proj <- st_transform(distVDS_betas, crs = raster_crs)
states_proj <- st_transform(states, crs = raster_crs)

(b) ggplot2叠加栅格与州级矢量图层

geom_raster需要数据框格式的栅格数据,先转换格式再叠加:

# 将投影后的栅格转换为带坐标的数据框
raster_df <- as.data.frame(GAEZstack_proj[[1]], xy = TRUE)
# 重命名栅格列(便于后续映射,原列名是对应tif的文件名)
colnames(raster_df)[3] <- "raster_value"

# 绘制叠加图
ggplot() +
  # 绘制栅格图层
  geom_raster(data = raster_df, aes(x = x, y = y, fill = raster_value)) +
  # 自定义栅格颜色刻度(可根据需求替换调色板)
  scale_fill_viridis_c(name = "栅格值") +
  # 叠加州级边界
  geom_sf(data = states, lwd = 0.5, color = "#000000", fill = NA) +
  # 设置标题和主题
  ggtitle("栅格数据与州边界叠加图") +
  theme_minimal()

内容的提问来源于stack exchange,提问作者Leah Bevis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 05:53:18