Earth2Studio数据获取技能Skill earth2studio-data-fetch

该技能用于通过Earth2Studio数据源API获取天气/气候数据,支持变量词汇表验证并生成可运行的数据获取脚本,输出xarray DataArray。关键词:Earth2Studio、气候数据、天气数据、数据源、数据获取、xarray、再分析、预报、词汇表、NetCDF、Zarr。

气候预测 0 次安装 0 次浏览 更新于 9/6/2026
名称 earth2studio-data-fetch
版本 0.16.0
开源协议 Apache-2.0 metadata:
作者 NVIDIA Earth-2 Team tags: - earth2studio - earth2 - python - data-fetch - weather-data - xarray
描述 > 通过Earth2Studio数据源获取特定变量和时间的天气/气候数据。不要用于推理流水线、模型发现或安装。

Earth2Studio 数据获取技能

目的

引导用户通过Earth2Studio数据源API下载天气/气候数据。通过检查词汇表识别兼容的数据源,验证变量支持,并生成输出xarray DataArray的可运行获取脚本。

先决条件

  • 已安装 Earth2Studio(uv pip install earth2studio 或同等方式)
  • 可访问远程数据存储(GCS、S3、CDS API 等)的网络
  • 对于基于CDS的数据源:已配置有效的CDS API密钥(~/.cdsapirc
  • Python 3.10+

说明

你正在帮助用户使用Earth2Studio的数据源API下载特定的天气/气候数据。你的工作是确定哪个(些)数据源能够提供所请求的变量,通过词汇表系统验证兼容性,并生成可用的获取脚本。

核心原则:实时文档和词汇表是真相来源

不同版本之间,数据源API、可用变量和词汇表会发生变化。在推荐数据源或编写获取脚本之前:

  1. 获取相关数据源文档页面,确认API签名和构造参数。
  2. 检查词汇表,验证请求的变量是否被该数据源支持。

实时文档参考(仅获取用户请求所需的内容):

交互协议

第1步:理解用户请求

从用户所述内容中提取(如有需要可追问,最多3个问题):

  • 变量 — 他们想要什么?使用Earth2Studio变量名(例如 t2mu500z850tpmsl)。如果用户使用通俗语言(“500 hPa位势高度”),通过检查实时 base.py 的 E2STUDIO_VOCAB 映射到E2Studio名称。
  • 时间 — 什么日期/时间范围?单个时间戳、范围或多个离散时间?
  • 数据类型 — 分析/再分析(历史状态)还是预报(基于提前时间)?
  • 提前时间(仅预报)— 预测多远?哪个初始化时间?
  • 区域 — 全球区域还是区域(例如HRRR的北美)?
  • 输出格式 — xarray DataArray(默认)、保存到文件(NetCDF/Zarr)?

第2步:识别候选数据源

根据请求类型缩小候选范围:

分析/再分析(特定时间的历史状态):

  • 使用分析数据源页面识别选项
  • 常见选择:GFS(业务运行,近期)、HRRR(北美,逐小时)、IFS/IFS_ENS(ECMWF)、ARCO/CDS/WB2ERA5/NCAR_ERA5(ERA5再分析)、GOES/MRMS/JPSS(观测)

预报(从初始化时间开始的预测,包含提前时间):

  • 使用预报数据源页面识别选项
  • 常见选择:GFS_FX、GEFS_FX、HRRR_FX、IFS_FX、IFS_ENS_FX、AIFS_FX、CFS_FX

需要突出的关键差异:

  • 时间覆盖 — 业务运行来源(GFS、HRRR)历史有限;再分析(通过ARCO/CDS/WB2的ERA5)可追溯到几十年前
  • 空间分辨率 — HRRR是仅覆盖北美的3公里分辨率;GFS是0.25°全球;WB2ERA5_32x64是5.625°全球
  • 更新频率 — 有些是实时的,有些有多天延迟

第3步:通过词汇表验证变量支持

这很关键。每个数据源都有一个词汇表文件,定义它能提供哪些E2Studio变量。

验证方法:

  1. https://github.com/NVIDIA/earth2studio/blob/main/earth2studio/lexicon/<source>.py(例如 gfs.pyhrrr.pycds.pyarco.pywb2.py)获取数据源的词汇表文件
  2. 检查请求的变量是否出现在该数据源 VOCAB 字典的键中
  3. 如果变量不在数据源的词汇表中,该数据源无法提供它 — 尝试其他数据源

词汇表VOCAB将Earth2Studio变量名映射到数据源特定的标识符。如果变量键存在于VOCAB中,则该数据源支持它。

清晰呈现结果:“GFS支持 t2mu500z850。HRRR也支持这些变量,但仅限于北美。ARCO(ERA5)支持所有三个变量,并且数据可追溯到1959年。”

第4步:与用户确认数据源选择

展示可行选项及其权衡:

数据源 变量 覆盖范围 分辨率 时间范围

让用户选择。如果存在一个明显选择,推荐它并请求确认。

第5步:生成获取脚本

编写一个Python脚本,使用所选数据源获取请求的数据。脚本结构取决于它是分析数据源还是预报数据源。

分析数据源模式:

import datetime
from earth2studio.data import <SourceClass>

# 初始化数据源
ds = <SourceClass>()

# 获取数据
# 分析数据源使用:ds(time, variable) -> xr.DataArray
time = [datetime.datetime(YYYY, M, D, H)]  # 或时间数组
variable = ["var1", "var2"]  # E2Studio变量名

data = ds(time, variable)

预报数据源模式:

import datetime
from earth2studio.data import <SourceClass>

# 初始化数据源
ds = <SourceClass>()

# 预报数据源使用:ds(time, lead_time, variable) -> xr.DataArray
time = [datetime.datetime(YYYY, M, D, H)]  # 初始化时间
lead_time = [datetime.timedelta(hours=H)]   # 或提前时间数组
variable = ["var1", "var2"]

data = ds(time, lead_time, variable)

编写脚本前务必获取特定数据源的API文档页面,确认确切的构造参数和调用签名 — 它们各不相同(有些需要认证令牌、缓存路径、特定参数)。

在脚本中包含:

  • 适当的导入
  • 清晰注释每一步
  • 如何检查结果(print(data)data.shapedata.coords
  • 可选:如果用户要求则保存到文件

第6步:提供后续步骤

交付脚本后,提及:

  • 如何在不重写整个脚本的情况下修改变量/时间
  • 如果他们可能想将其输入模型,请指向发现技能
  • 缓存行为(首次获取后数据通过 EARTH2STUDIO_CACHE 在本地缓存)

所有权和范围外

拥有: 识别满足用户变量/时间请求的数据源、通过词汇表验证变量支持、生成数据获取脚本、解释分析与预报数据源之间的差异。

不拥有: 安装(earth2studio-install)、模型选择(earth2studio-discover)、推理流水线、自定义数据源创建(指向扩展示例)、超出文档描述的数据源认证设置。

示例

典型调用:

“我需要ERA5的500 hPa位势高度和2米温度,时间为2020年1月1日00时。”

该技能将:

  1. 将通俗语言映射到 z500t2m
  2. 检查ARCO/CDS/WB2ERA5词汇表是否支持
  3. 推荐ARCO(免费,无需API密钥)或CDS(官方,需要密钥)
  4. 使用所选数据源生成获取脚本

限制

  • 需要网络 — 所有数据源都从远程存储获取(GCS、S3、CDS API)
  • 不支持本地文件加载 — 对于本地NetCDF/Zarr,请直接使用 DataArrayFile/DataSetFile
  • 每个脚本仅支持一种数据类型 — 不能在单个调用中混合分析与预报数据源
  • 变量可用性各不相同 — 并非所有数据源都提供所有变量;务必通过词汇表验证
  • 速率限制 — CDS API有基于队列的节流;GCS/S3源通常更快

故障排查

错误 原因 解决方案
KeyError: '<var>' 不在词汇表中 检查词汇表;尝试其他数据源
FileNotFoundError / 404 时间不可用 验证时间覆盖范围
CDS API timeout 队列拥塞 重试或使用ARCO获取ERA5
ModuleNotFoundError 未安装 uv pip install earth2studio
空DataArray 时间/变量不匹配 检查日期时间和变量名称