python - 如何使用 pygrib 从 lat, lon 值中检索

标签 python grib pygrib

我开始使用 python 编程,我想制作一个小脚本来显示“地势以上 2 米处诊断的局部温度”、“10 米处诊断的东西向水平风的纬向分量”的数据height”和“10 m高度诊断水平风的子午线分量”作为经度和纬度的函数。

为此,我从 Meteofrance 的开放数据站点下载了一个文件 OPEN DATA通过选择:

域:“France - 0.01 °”,子包:“SP1 - 当前表面参数”,截止日期组“0h”和运行日期“2020-02-10 00 UTC”

所以我有一个 grib2 格式的文件,我试图用 pygrib 库处理它

为了简单起见,我只是想获取给定点(经度 = 0.25,纬度 = 49.21)的温度

我创建了一个索引来读取文件(好像是最快的)

indx = pygrib.index('./AROME_0.01_SP1_00H_2020021000.grib2', 'typeOfLevel', 'level', 'name')

我选择与温度对应的记录并恢复值:

msg = indx.select(level=2, typeOfLevel="heightAboveGround", name="2 metre temperature")
temp2m = msg[0].values

问题是,从那里开始,我摸索着找不到如何从这个变量 (numpy.ma.core.MaskedArray) 中检索对应于我的经度 = 0.25 和纬度 = 49.21 的值

如果有人有想法,我很感兴趣

import pygrib
indx = pygrib.index('./AROME_0.01_SP1_00H_2020021000.grib2', 'typeOfLevel', 'level', 'name') 
msg = indx.select(level=2, typeOfLevel="heightAboveGround", name="2 metre temperature")
temp2m = msg[0].values

最佳答案

您可以使用 pygrib.data() 方法在纬度/经度周围创建一个边界框,然后取该框内值的平均值。只需调整公差即可控制框的大小。

lat, lon, tolerence = 49.21, 0.25, 0.1
data, lats, lons = grb.data(lat1=lat-tolerence,lat2=lat+tolerence,
                            lon1=lon-tolerence,lon2=lon+tolerence)
data.mean()

关于python - 如何使用 pygrib 从 lat, lon 值中检索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60164875/

相关文章:

python-xarray - 将 grib2 文件转换为 csv

python - Strptime 周错误

Python 日志记录模块发出错误的时区信息

python - 如何使用 Google App Engine 管理第三方 Python 库? (虚拟环境? pip ?)

python - 在函数中编辑列表是如何工作的

netcdf - 将 Grib 转换为 netcdf4

Java GRIB 文件打开器

python - 安装 pygrip 和 conda forge