Python处理气象信息grib,grib2文件
写这篇博客源于博友的提问,
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文件相关推荐
- 气象数据grib/grib2的处理方法汇总
目录 0.前言 1.wgrib软件 2.matlab中的nctoolbox工具箱 3.使用python中的pygrib模块 4.使用python中的xarray.cfgrib模块 5.使用cdo工 ...
- python批量读取grib_python读取grib2文件
一.安装pygrib库 linux安装conda后执行命令:conda install -c conda-forge pygrib -y 二.读取文件操作 1.获得属性列表 import pygrib ...
- 用NCL将GRIB/GRIB2文件转成nc文件(批量转),JRA-55再分析为例
背景: 答主最近需要用到JRA-55再分析数据,但在面对GRIB数据格式时犯难了,便想把GRIB格式转成nc文件再做分析.因为nc文件很容易用python或Matlab处理 尝试了好些方法,发现先安装 ...
- python 读取grib \grib2
python 读取grib \grib2 一.环境准备 (1).python3环境 (2).wgirb工具(用于读取grib1文件),下载地址: ftp://ftp.cpc.ncep.noaa.go ...
- Windows上python读取grib2文件(不用Linux)
最近在网上下载的NCEP的fnl数据,发现只有grib2文件格式.因为现在处理数据使用的更多的是python,matlab一类的.网上一搜python读取grib文件需要依赖pygrib库,pygri ...
- python批量读取grib_python 读取grib \grib2
一.环境准备 (1).python3环境 (2).wgirb工具(用于读取grib1文件),下载地址: ftp://ftp.cpc.ncep.noaa.gov/wd51we/wgrib (3).wg ...
- windows下气象grib/grib2数据转Tiff格式输出
材料:Win10+Python3.8+wgrib/wgrib2 目录 ①Grib/Grib2数据转为CSV/NC格式数据 ②NC格式数据转为GeoTiff格式数据 ①Grib/Grib2数据转为CSV ...
- 使用MatLab读取grib(grb)和grib2文件的方法
在开始读取之前,有必要先了解一下grib文件是什么.以下内容摘自百度百科: GRIB 码是与计算机无关的压缩的二进制编码,主要用来表示数值天气预报的产品资料.现行的GRIB 码版本有GRIB1 和GR ...
- python读取grib2数据_python2 解析 Grib/Grib2数据
python2 解析 Grib/Grib2数据 sudoapt-get installgfortran cmake zlib1g-dev libpng-dev jasper libjpeg-dev l ...
最新文章
- 华为如何打造智能终端的有趣灵魂?(下)
- sgi 之heap, priority_queue
- Jenkins+ant+Jenkins接口持续集成测试配置
- vimrc常用配置项
- 数据结构实验之二叉树四:还原二叉树
- 游戏编程精粹学习 - 使用定点颜色插值模拟实时光照
- web service 学习 2 -- 什么时候应该使用web service
- monkey测试介绍
- c++结构体学习笔记!
- 智力题解题报告 No.4 9个点10个线
- 两根硬铜线并线接插座_两根硬铜线正确接法
- 2021年电工(初级)考试资料及电工(初级)考试技巧
- Eclipse2020下载安装教程详细
- 免费软件不比付费软件逊色半分之94款免费软件
- 自我实现tcmalloc的项目简化版本
- 扣扣浏览器mini java_WebQQ Mini各种浏览器试用
- Python+Vue计算机毕业设计安达驾校管理系统62e2u(源码+程序+LW+部署)
- 华为OJ(MP3光标移动)
- vue 实现前端excel导出表格携带token的两种方法
- 孙思邈的养生十三法[转]