写这篇博客源于博友的提问,

1. 效果图如下:

2. 安装

pip install pygrib
pip install gributils

GRIB 是世界气象组织 (World Meterological Organization WMO) 用于分发网格数据的标准。该模块包含一个python程序员接口,用于使用ECWMF GRIB API C库读取和写入GRIB网格(版本1和2)。

# 导入包
import pygrib# 打开grib文件,并创建grib消息迭代器
grbs = pygrib.open('sampledata/flux.grb')# 有seek, tell, read, readline and close方法,不同于文件的区别是,文件以字节码跳跃,而这里以grib消息跳跃
grbs.seek(2)grbs.tell()# 返回一个list有接下来的 N条消息,这里是N=1条
grb = grbs.read(1)[0]  # read returns a list with the next N (N=1 in this case) messages.# 打印grib对象消息的概括信息
print(grb)grbs.tell()# 打印文件清单
grbs.seek(0)for grb in grbs:print(grb)
# 1:Precipitation rate:kg m**-2 s**-1 (avg):regular_gg:surface:level 0:fcst time 108-120 hrs (avg):from 200402291200
# 2:Surface pressure:Pa (instant):regular_gg:surface:level 0:fcst time 120 hrs:from 200402291200
# 3:Maximum temperature:K (instant):regular_gg:heightAboveGround:level 2 m:fcst time 108-120 hrs:from 200402291200
# 4:Minimum temperature:K (instant):regular_gg:heightAboveGround:level 2 m:fcst time 108-120 hrs:from 200402291200# 查找具有匹配名称的第一条 grib 消息:
grb = grbs.select(name='Maximum temperature')[0]# 使用提取数据值values,(grb.keys() 将返回可用键的列表):
maxt = grb.values  # same as grb['values']# The data is returned as a numpy array, or if missing values or a bitmap
# are present, a numpy masked array.  Reduced lat/lon or gaussian grid
# data is automatically expanded to a regular grid. Details of the internal
# representation of the grib data (such as the scanning mode) are handled
# automatically.
# 数据以numpy array格式返回,如果缺少值或位图,则返回一个 numpy masked array。
# 缺少lat纬度/lon经度或高斯网格数据自动扩展为常规网格。grib数据的内部细节的表示(如扫描模式)会自动处理。
print(maxt.shape, maxt.min(), maxt.max())
# (94, 192) 223.7 319.9# 获取网格的经纬度
lats, lons = grb.latlons()print(lats.shape, lats.min(), lats.max(), lons.shape, lons.min(), lons.max())
# (94, 192) -88.5419501373 88.5419501373  0.0 358.125# 获取第2条grib信息
grb = grbs.message(2)  # same as grbs.seek(1); grb=grbs.readline()print(grb)
# 2:Surface pressure:Pa (instant):regular_gg:surface:level 0:fcst time 120 hrs:from 200402291200# 提取经纬度子集,如北美范围的经纬度
data, lats, lons = grb.data(lat1=20, lat2=70, lon1=220, lon2=320)print(data.shape, lats.min(), lats.max(), lons.min(), lons.max())
# (26, 53) 21.904439458 69.5216630593 221.25 318.75# 根据key重赋值
grb['forecastTime'] = 240
grb.dataDate = 20100101# 获取与编码消息关联的二进制字符串:
msg = grb.tostring()# 关闭grib文件
grbs.close()# 写入新的grib文件
grbout = open('test.grb', 'wb')
grbout.write(msg)
grbout.close()print(pygrib.open('test.grb').readline())
# 1:Surface pressure:Pa (instant):regular_gg:surface:level 0:fcst time 240 hrs:from 201001011200

参考

  • https://github.com/seminar2012/pygrib
  • https://jswhit.github.io/pygrib/api.html#example-usage
  • https://www.heywhale.com/mw/project/61d8592d9d17520017a8d815
  • https://cloud.tencent.com/developer/article/1618335
  • https://www.bilibili.com/read/cv17061670

Python处理气象信息grib,grib2文件相关推荐

  1. 气象数据grib/grib2的处理方法汇总

    目录 0.前言 1.wgrib软件 2.matlab中的nctoolbox工具箱 ​ 3.使用python中的pygrib模块 4.使用python中的xarray.cfgrib模块 5.使用cdo工 ...

  2. python批量读取grib_python读取grib2文件

    一.安装pygrib库 linux安装conda后执行命令:conda install -c conda-forge pygrib -y 二.读取文件操作 1.获得属性列表 import pygrib ...

  3. 用NCL将GRIB/GRIB2文件转成nc文件(批量转),JRA-55再分析为例

    背景: 答主最近需要用到JRA-55再分析数据,但在面对GRIB数据格式时犯难了,便想把GRIB格式转成nc文件再做分析.因为nc文件很容易用python或Matlab处理 尝试了好些方法,发现先安装 ...

  4. python 读取grib \grib2

    python 读取grib \grib2 一.环境准备 (1).python3环境 (2).wgirb工具(用于读取grib1文件),下载地址:  ftp://ftp.cpc.ncep.noaa.go ...

  5. Windows上python读取grib2文件(不用Linux)

    最近在网上下载的NCEP的fnl数据,发现只有grib2文件格式.因为现在处理数据使用的更多的是python,matlab一类的.网上一搜python读取grib文件需要依赖pygrib库,pygri ...

  6. python批量读取grib_python 读取grib \grib2

    一.环境准备 (1).python3环境 (2).wgirb工具(用于读取grib1文件),下载地址:  ftp://ftp.cpc.ncep.noaa.gov/wd51we/wgrib (3).wg ...

  7. windows下气象grib/grib2数据转Tiff格式输出

    材料:Win10+Python3.8+wgrib/wgrib2 目录 ①Grib/Grib2数据转为CSV/NC格式数据 ②NC格式数据转为GeoTiff格式数据 ①Grib/Grib2数据转为CSV ...

  8. 使用MatLab读取grib(grb)和grib2文件的方法

    在开始读取之前,有必要先了解一下grib文件是什么.以下内容摘自百度百科: GRIB 码是与计算机无关的压缩的二进制编码,主要用来表示数值天气预报的产品资料.现行的GRIB 码版本有GRIB1 和GR ...

  9. python读取grib2数据_python2 解析 Grib/Grib2数据

    python2 解析 Grib/Grib2数据 sudoapt-get installgfortran cmake zlib1g-dev libpng-dev jasper libjpeg-dev l ...

最新文章

  1. 华为如何打造智能终端的有趣灵魂?(下)
  2. sgi 之heap, priority_queue
  3. Jenkins+ant+Jenkins接口持续集成测试配置
  4. vimrc常用配置项
  5. 数据结构实验之二叉树四:还原二叉树
  6. 游戏编程精粹学习 - 使用定点颜色插值模拟实时光照
  7. web service 学习 2 -- 什么时候应该使用web service
  8. monkey测试介绍
  9. c++结构体学习笔记!
  10. 智力题解题报告 No.4 9个点10个线
  11. 两根硬铜线并线接插座_两根硬铜线正确接法
  12. 2021年电工(初级)考试资料及电工(初级)考试技巧
  13. Eclipse2020下载安装教程详细
  14. 免费软件不比付费软件逊色半分之94款免费软件
  15. 自我实现tcmalloc的项目简化版本
  16. 扣扣浏览器mini java_WebQQ Mini各种浏览器试用
  17. Python+Vue计算机毕业设计安达驾校管理系统62e2u(源码+程序+LW+部署)
  18. 华为OJ(MP3光标移动)
  19. vue 实现前端excel导出表格携带token的两种方法
  20. 孙思邈的养生十三法[转]

热门文章

  1. 防范IFEO映像劫持
  2. Pikachu的渗透测试
  3. 获取VM中win10虚拟机映像
  4. 转换 如 # x4E0A; # x 6D77; 的编码为中文
  5. 22种设计模式——原型模型
  6. 安装QQ的时候显示创建文件夹失败,无法正常安装,请尝试选择新的安装目录的解决办法
  7. 解决QQ显示“无法访问个人文件夹”方法
  8. Python KPM算法
  9. 浪潮存储:基于系统级可靠性设计,为数据存储保驾护航
  10. 天才少年!他们的内心世界你懂吗?道翰天琼认知智能机器人平台API接口为您揭秘。