我开始使用 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/