【问题标题】:How to retrieve from lat, lon value using pygrib如何使用 pygrib 从 lat、lon 值中检索
【发布时间】:2020-05-26 15:01:10
【问题描述】:

我开始使用python编程,我想制作一个小脚本,显示“在浮雕上方2m高度诊断的局部温度”,“在10m诊断的东西向水平风的纬向分量高度”和“在 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

【问题讨论】:

  • 也许this 有帮助:即temp2m.data 的输出是什么?
  • 使用cfgrib。它是最先进的,并且更易于使用。

标签: python grib pygrib


【解决方案1】:

您可以使用 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()

【讨论】:

    【解决方案2】:

    您应该能够使用您选择的变量(而不是值)中的.latlons() 来获取您的纬度和经度。从那里您可以获得与您的观点相对应的索引。

    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")
    
    lat,lon = msg.latlons()
    
    temp2m = msg[0].values
    

    【讨论】:

      猜你喜欢
      • 2011-09-15
      • 2018-09-05
      • 2021-11-15
      • 1970-01-01
      • 2021-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多