转载:ecCodes 学习 利用ecCodes Python API对GRIB文件进行读写
作者:chinagod
原文链接:https://www.bbsmax.com/A/QV5Z6qbe5y/
参考 https://www.ecmwf.int/assets/elearning/eccodes/eccodes2/story_html5.htmlhttps://confluence.ecmwf.int/display/ECC/GRIB+exampleshttps://confluence.ecmwf.int/download/attachments/97363968/eccodes_grib_python_2018.pdf
关于Python读取GRIB格式数据,Kallan写过一篇“基于Python的Grib数据可视化”,介绍了如何利用pygrib读取GRIB数据。但是pygrib所依赖的GRIB_API已不再更新,GRIB_API的开发者转为开发ecCodes,因此研究利用ecCodes的Python API读取GRIB数据。
此外,ecCodes自2.10.0版本以后,支持Python 3接口。可在CMake编译时,指定‘-DPYTHON_EXECUTABLE=/usr/bin/python3’选项,开启对Python3 的支持。
PS:编译完成后,还需要设置eccodes库路径(可参考此方法:设置python路径 - 一步一脚印,建议用其中第二种方法,从.pth文件中添加路径),否则可能运行时会出现"NameError: name ‘xxx’ is not defined"错误。
Python读取GRIB文件的流程和fortran类似,只是函数调用方式不一样。大致思路如下:
基本解码流程1. 指定打开方式(“读”或“写”),打开一个或多个GRIB文件;2. 根据不同加载方式,加载一个或多个GRIB messages到内存:有两种函数:codes_grib_new_from_file 和 codes_new_from_index。调用后会返回一个唯一的identifier,用于对已加载的GRIB messages进行操纵。3. 调用codes_get函数对已加载的GRIB messages进行解码; (可以解码需要的数据)4. 释放已经加载的GRIB messages:codes_release 5. 关闭打开的 GRIB 文件.
顺序访问方式:
大致思路:-> codes_open_file-> codes_grib_new_from_file -> codes_get -> codes_release…-> codes_grib_new_from_file -> codes_get-> codes_release-> codes_close_file
索引访问方式(通常比顺序访问快):注意,eccodes中的index文件(后缀为.idx)与GrADS中后缀为.idx的文件不能通用!
大致思路:-> codes_index_create(从grib文件创建index) 或 codes_index_read(读取已有index)-> codes_index_select 选取键值-> codes_new_from_index -> codes_get -> codes_release…-> codes_new_from_index -> codes_get -> codes_release-> codes_index_release——引自 ecCodes 学习 利用ecCodes fortran90 api对GRIB文件进行读写
下面是一段读取GRIB数据的示例代码
#!/usr/bin/env python
# -*- coding:utf-
from eccodes import *#打开文件
ifile = open('example.grib')
while 1:igrib = codes_grib_new_from_file(ifile)if igrib is None: break#从加载的message中解码/编码数据date = codes_get(igrib,"dataDate")levtype = codes_get(igrib,"typeOfLevel")level = codes_get(igrib,"level")values = codes_get_values(igrib)print (date,levtype,level,values[0],values[len(values)-1])#释放codes_release(igrib)
ifile.close()
注:Python版本的函数与Fortran版本类似,所有函数列表参考http://download.ecmwf.int/test-data/eccodes/html/namespaceec_codes.html
转载:ecCodes 学习 利用ecCodes Python API对GRIB文件进行读写相关推荐
- python的错误 File E:/Python 的代码大大/文件的读写操作.py, line 1 SyntaxError: Non-UTF-8 code starting with '\xcf
错误: File "E:/Python 的代码大大/文件的读写操作.py", line 1 SyntaxError: Non-UTF-8 code starting with '\ ...
- xml的学习和使用python解析读取xml文件
1. XML的介绍 XML 指可扩展标记语言(EXtensible Markup Language). 和json类似也是用于存储和传输数据,还可以用作配置文件. 类似于HTML超文本标记语言,但是H ...
- python代码写入方式_【Python 1-17】Python手把手教程之——文件的读写以及I/O操作...
作者 | 弗拉德 来源 | 弗拉德(公众号:fulade_me) 从文件中读取数据 文本文件可存储的数据量很多,每当需要分析或修改存储在文件中的信息时,读取文件都很有用,对数据分析应用程序来说尤其 如 ...
- 利用matlab和python读micaps格式文件、读写二进制文件
经常需要绘图,但常用的绘图工具还是GrADs,因此要写一份二进制文件.(后期应该会转向NCL的吧) 需要注意的是,GrADs所需的二进制文件存储循环为经度x,纬度y,高度z,变量1,变量2,-,时间t ...
- [转载] Numpy学习之矩阵、函数、二元运算及数组读写
参考链接: Numpy 二元运算 矩阵 # --*--coding:utf-8--*-- import numpy as np """ 矩阵 ""&q ...
- python中几种读取文件的方法_科学网—python中几类文件的读写 - 郗强的博文
所使用python模块为json.csv等. 一.json文件读写 1.JSON简介:其全名为JavaScript Object Notation是一种轻量级的数据交换格式.Json最广泛的应用是作为 ...
- python上传excel文件_python读写Excel python实现Excel上传
最近小编在处理各种.xlsx表格的数据处理和计算的工作,目前python用于操作表格的模块有很多,功能各有千秋.本文主要讲的是xlwt用于写,xlrt用于读. 表格写入 简单的写入功能可用xlwt模块 ...
- python本地读csv文件_python读写csv文件方法详细总结
python提供了大量的库,可以非常方便的进行各种操作,现在把python中实现读写csv文件的方法使用程序的方式呈现出来. 在编写python程序的时候需要csv模块或者pandas模块,其中csv ...
- 理解h5文件并使用python对h5格式文件进行读写操作
(一)HDF与h5 HDF(Hierarchical Data Format层次数据格式)是一种设计用于存储和组织大量数据的文件格式,最开始由美国国家超算中心研发,后来由一个非盈利组织HDF Gr ...
- python pandas csv 写文件_Pandas读写CSV文件的方法介绍(附代码)
本篇文章给大家带来的内容是关于Pandas读写CSV文件的方法介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 读csv:使用pandas读取import pandas ...
最新文章
- html5自定义属性作用,html5自定义属性:如何获取自定义属性值(附代码)
- error C2061: 语法错误: 标识符“std”
- AES CBC模式下的CBC bit flipping Attack
- 【普及组模拟赛】游戏
- [js开源组件开发]图片放大镜
- SAP UI5 Simple form rendering
- 每个程序员都该学习的5种开发语言,不可错过!
- Dirichlet过程混合模型(DPMM)的Gibbs抽样程序
- signal.h-----信号函数
- win7在计算机中虚拟光驱怎么删除,win7系统删除虚拟光驱的操作方法
- linux DSA 开发上手笔记(一)
- Java获取压缩包内文件数_java获取递归获取嵌套压缩包(zip和rar)中的所有文件
- 质量功能配置(QFD)矩阵
- 机器学习从入门到创业手记-应用与实践
- Maxwell和Simplorer联合仿真设置注意事项
- [网页设计]如何在Photoshop里画虚线?
- Windows 10操作系统配置L2TP方法
- [转]阿里云的这群疯子
- SSH连接慢问题解决
- javascript取本周星期一到星期天对应日期的通用方法