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

如何在海洋水深世界地图叠加SST等温线与珊瑚礁分布多边形

解决ggplot2整合珊瑚礁分布、SST等温线与海洋水深的方案

以下是基于ggplot2的完整整合方案,针对你遇到的两个核心问题(珊瑚礁多边形添加、SST等温线绘制)逐一解决:

1. 加载依赖包

先确保安装并加载所需工具包:

library(ggplot2)
library(ocedata)
library(oce)
library(sf)
library(raster)

2. 处理海洋水深数据

使用ocedata::topoWorld获取全球地形数据,筛选海洋区域后转为ggplot可用的长格式:

# 获取全球地形数据
topo <- ocedata::topoWorld
# 转换为数据框(保留经纬度与海拔,海洋海拔为负值)
topo_df <- as.data.frame(topo, long = TRUE)
# 仅保留海洋区域(过滤陆地正海拔值)
topo_ocean <- subset(topo_df, z < 0)

3. 处理珊瑚礁多边形数据

将你已有的cd_polygons转换为sf空间对象(ggplot对sf支持更友好):

# 若cd_polygons是SpatialPolygonsDataFrame格式
coral_sf <- st_as_sf(cd_polygons)

# 若cd_polygons是oce的map对象,先转SpatialPolygons再转sf
# coral_sp <- as.SpatialPolygons(cd_polygons)
# coral_sf <- st_as_sf(coral_sp)

4. 处理20℃ SST等温线数据

解决geom_contour无法识别levitus数据的问题,通过栅格转换提取精准等温线:

# 提取Levitus海表温度数据
sst_data <- ocedata::levitus
# 转换为含经纬度与SST的数据框,去除缺失值
sst_df <- na.omit(as.data.frame(sst_data)[, c("longitude", "latitude", "SST")])

# 转成栅格对象,提取20℃等温线的空间线
sst_raster <- rasterFromXYZ(sst_df)
sst_contour <- rasterToContour(sst_raster, levels = 20)
# 转为sf对象供ggplot调用
sst_contour_sf <- st_as_sf(sst_contour)

5. 整合绘制最终地图

按图层叠加顺序绘制(底层水深→中层珊瑚礁→顶层等温线):

ggplot() +
  # 绘制海洋水深,用渐变蓝色区分深浅
  geom_raster(data = topo_ocean, aes(x = longitude, y = latitude, fill = z), interpolate = TRUE) +
  scale_fill_viridis_c(option = "mako", name = "水深(m)", direction = -1) +
  
  # 绘制珊瑚礁多边形,用金色填充并设置透明度
  geom_sf(data = coral_sf, fill = "#FFD700", alpha = 0.6, color = NA) +
  
  # 绘制20℃等温线,用醒目橙红色加粗显示
  geom_sf(data = sst_contour_sf, color = "#FF4500", size = 1.2) +
  
  # 统一使用WGS84投影
  coord_sf(crs = st_crs(4326)) +
  
  # 调整主题样式,简化冗余元素
  theme_bw() +
  theme(
    panel.grid = element_blank(),
    axis.title = element_text(size = 12),
    legend.title = element_text(size = 10)
  ) +
  labs(title = "全球珊瑚礁分布与20℃海表温度等温线", x = "经度", y = "纬度")

关键问题说明

  • 珊瑚礁多边形:用sf格式替代传统Spatial对象,geom_sf能完美兼容ggplot图层体系,避免map_polygon的适配问题。
  • SST等温线:通过栅格转换提取等温线的空间线对象,比直接用geom_contour更稳定,解决了levitus数据格式不兼容的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 04:57:15