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

能否利用南极ERA5地位势数据制作极坐标径向填充等高线地图

可以实现,核心是将ERA5位势高度数据转换为与ggOceanMaps底图匹配的投影格式,再通过ggplot2图层逻辑叠加即可,完整实现步骤和代码如下:

1. 依赖包安装与加载

需要额外用到metR包实现等高线填充,tidyr、dplyr做数据格式转换:

# 已安装过的包可跳过安装步骤
install.packages(c("ncdf4", "tidyverse", "metR"))
install.packages(c("ggOceanMapsData", "ggOceanMaps"), 
                 repos = c("https://cloud.r-project.org",
                           "https://mikkovihtakari.github.io/drat"))

library(ncdf4)
library(tidyverse)
library(metR)
library(ggOceanMapsData)
library(ggOceanMaps)

2. 数据读取与预处理

# 读取NC数据
datos_geo <- nc_open("geopotential_antartida.nc")
geo <- ncvar_get(datos_geo, "z")
lon <- ncvar_get(datos_geo, "longitude")
lat <- ncvar_get(datos_geo, "latitude")
nc_close(datos_geo)

# 调整纬度顺序、计算多年气候态平均
lat <- rev(lat)
geo <- geo[, length(lat):1, ]
media_geo <- apply(geo, c(1,2), mean)

# 二维矩阵转为长格式数据框
geo_df <- expand.grid(lon = lon, lat = lat) %>%
  mutate(z = as.vector(media_geo))

# 转换为与ggOceanMaps南极底图匹配的投影坐标
geo_df <- transform_coord(geo_df, lon = "lon", lat = "lat", bind = TRUE, proj = "antarctic")

3. 图层叠加绘图

basemap(limits = -50, glaciers = TRUE, bathymetry = FALSE) +
  # 叠加位势高度填色等高线
  geom_contour_fill(data = geo_df, aes(x = lon.proj, y = lat.proj, z = z),
                    na.rm = TRUE) +
  # 匹配原有配色方案
  scale_fill_gradientn(colours = c("darkblue", "palegreen", "yellow", "red")) +
  # 调整坐标轴、图例样式
  labs(x = NULL, y = NULL, fill = "500hPa位势高度") +
  theme(
    axis.text = element_blank(),
    axis.ticks = element_blank()
  )

注意事项

  • 如果出现0°/360°经度连接处的断层,可提前将经度转换为-180°~180°范围:geo_df$lon <- ifelse(geo_df$lon > 180, geo_df$lon - 360, geo_df$lon)后再做坐标转换
  • 等高线间隔可通过geom_contour_fill的breaks参数自定义调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:06:05