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

使用xarray处理NDFD GRIB2数据时出现镜像问题该如何修复

问题原因

  • 首先存在两处代码笔误:请求返回对象命名为resp,写文件时调用了未定义的resp1会触发NameError;缺少matplotlib导入,绘图代码无法运行。
  • 核心的隔行东西向镜像问题,来自该GRIB2文件的网格扫描配置:文件头的扫描模式标识(scanMode)设置了相邻行反向扫描,旧版本cfgrib读取时未自动识别该配置,导致每隔一行的经度方向数据被倒序读取。

修复方案

方案1:手动校正数据(兼容所有cfgrib版本)

直接对读取到的风场数据做隔行翻转处理,修复代码如下:

import pandas as pd
import numpy as np
import requests
import cfgrib
import xarray as xr
import matplotlib.pyplot as plt

# 下载GRIB2文件,修正变量名笔误
resp = requests.get('https://tgftp.nws.noaa.gov/SL.us008001/ST.opnl/DF.gr2/DC.ndfd/AR.neast/VP.001-003/ds.wspd.bin', stream=True)
with open('..\\001_003wspd.grib2', 'wb') as f:
    f.write(resp.content)

# 读取GRIB2文件
xr_set = xr.load_dataset('..\\001_003wspd.grib2', engine='cfgrib')

# 修复隔行镜像:翻转所有奇数索引行的经度维度
fixed_si10 = xr_set.si10.copy()
fixed_si10[:, 1::2, :] = fixed_si10[:, 1::2, :, ::-1]

# 绘图
fixed_si10[0].plot(cmap=plt.cm.coolwarm)
plt.show()

方案2:升级依赖自动处理

将cfgrib升级到0.9.10及以上版本,新版已经内置了对反向扫描标识的自动识别逻辑,读取时无需额外手动处理即可得到正确的网格数据。
升级命令:

pip install --upgrade cfgrib

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 11:15:03