如何从Grib1 / .grb文件转储值

时间:2014-07-11 15:36:42

标签: python file weather grib

我想知道,有没有办法从grib1文件中转储值?我的最终目标是在纬度和经度或至少一个网格点找到单个消息的值。我正在使用Linux系统。除了阅读有关消息的元数据或重建消息外,Wgrib似乎什么都不做。

我知道一点python,所以我可以使用pygrib,但我不知道如何将值拉出特定的纬度和经度。

这里有一些.grb文件供大家玩。 http://nomads.ncdc.noaa.gov/data/gfs-avn-hi/201402/20140218/

感谢您的回答,

2 个答案:

答案 0 :(得分:3)

如果您对来自NOMADS的数据感兴趣,我建议您浏览他们的THREDDS数据服务器,这将允许您通过指定纬度/经度来访问数据,并且您可以将该数据作为csv文件返回,如果您希望。为此,请先访问NOMADS TDS网站:

http://nomads.ncdc.noaa.gov/thredds/catalog/catalog.html

您链接到的示例数据文件可在此处找到:

http://nomads.ncdc.noaa.gov/thredds/catalog/gfs-003/201402/20140218/catalog.html

找到您感兴趣的网格,比如18Z运行分析字段:

http://nomads.ncdc.noaa.gov/thredds/catalog/gfs-003/201402/20140218/catalog.html?dataset=gfs-003/201402/20140218/gfs_3_20140218_1800_000.grb

点击“NetcdfService”链接:

http://nomads.ncdc.noaa.gov/thredds/ncss/grid/gfs-003/201402/20140218/gfs_3_20140218_1800_000.grb/dataset.html

在该页面顶部附近,点击“As Point Dataset”:

http://nomads.ncdc.noaa.gov/thredds/ncss/grid/gfs-003/201402/20140218/gfs_3_20140218_1800_000.grb/pointDataset.html

然后检查您感兴趣的参数,纬度/经度(将选择最接近该纬度/经度的网格点)和输出格式类型。

这个网页界面基本上会生成一个访问网址,如果我想要温度超过Boulder,CO,在csv中返回,这就是它的样子:

http://nomads.ncdc.noaa.gov/thredds/ncss/grid/gfs-003/201402/20140218/gfs_3_20140218_1800_000.grb?var=Temperature_surface&latitude=40&longitude=-105&temporal=all&accept=csv&point=true

从上面的网址中可以看出,您可以非常轻松地生成这些内容并发出请求,而无需执行上述所有步骤。

这种访问方法(NetcdfSubsetService)可以轻松地与Python结合使用。例如,看看这个ipython笔记本:

http://nbviewer.ipython.org/github/Unidata/tds-python-workshop/blob/master/ncss.ipynb

具体来说,笔记本中的第一个和第二个单元格。

请注意,您可以获取最近的GFS数据,其中整个模型运行包含在一个grib文件中,位于:

http://thredds.ucar.edu/thredds/idd/modelsNcep.html

这将允许您发出请求,如上所述,但多次使用一个请求。

干杯,

肖恩

答案 1 :(得分:0)

您可以使用grib工具,特别是grib_ls和grib_get来获取最接近指定纬度和经度的1个网格点或4个网格点的值。因此,您可以使用最近邻居或双线性插值或任何您喜欢的东西来获得价值。 阅读此演示文稿,grib_ls从第31页开始:

http://nwmstest.ecmwf.int/services/computing/training/material/grib_api/grib_api_tools.pdf

安装grib工具时,您将获得几个工具来帮助您使用GRIB文件。