GRIB API学习笔记08——GRIB API Python接口

目录

形容为“开胃菜”。本文仅提供Python接口开启的新世界的一个小窗口,更多内容需要用户自己去缆索。

一个有用的获取帮助的方式:
[python]
>>>help(gribapi.grib_get_elements)
Help on function grib_get_elements in module gribapi:
grib_get_elements(gribid, key, indexes)
@brief Retrieve the elements of the key array for the indexes specified in the input.
@param gribid id of the grib loaded in memory
@param key the key to be searched
@param indexes single index or a list of indexes
@return numpy.ndarray or array containing the values of key for the given indexes
@exception GribInternalError
[/python]

1.1.  介绍

1.1.1.   Python

罗列Python的有点,此处省略。

1.1.2.   NumPy

用于科学计算的Python包。
核心是ndarray对象,同种类型的多维数组。
数组的操作:
-Mathematical and logical
-Shape manipulation
-Selection
-I/O
-Discrete Fourier transforms
-Basic linear algebra
-Basic statistical functions
-Random simulation

想起OpenCV 2提供的cv::Mat类型

1.1.3.   SciPy

科学算法和数学工具的开源库
提供许多NumPy函数的升级版本
基于C扩展模块实现,速度非常快。
提供高层科学和工程模块:
-statistics
-optimization
-numerical integration
-linear algebra
-Fourier transforms
-signal processing
-image processing
-ODE solvers
-special functions

1.1.4.   matplotlib

绘图库,扩展Python和Numpy
仿照MATLAB绘图命令,但独立于MATLAB
重度依赖NumPy
设计哲学:
l  简单创建图形
l  图形美观
l  用尽可能少的命令绘图
l  代码易于理解
l  便于扩展
支持2D和3D绘图
底图模块:projections, coastlines, political boundaries

据说matplotlib有大量扩展模块,不容易学

1.2.  Python at ECMWF

两个库有Python接口:
GRIB API
Magics++
ecCharts——WREP
新的网络绘图(GRIB API,magics++)
检验(GRIB API,magics++)
EcFLow(替代SMS)——服务器配置和客户端通信
MACC项目(GRIB API)
EFAS(EcFlow)
科研
计划开发未来插值函数库的python接口

1.2.1.   Magics++

ECMWF使用的气象绘图软件,超过25年的历史。
支持contours, wind fields, observations, satellite images, symbols, text, axis and graphs。
两种绘图方式:
直接可以绘图的格式:GRIB1, GRIB2, BUFR, ODB, NetCDF and NumPy
使用GRIB API可以读取的数据,再传递给Magics++。
多种保存格式,例如PS, EPS, PDF, GIF, PNG, KML and SVG
提供过程式和高层Python编程接口。

1.3.  Python API

从GRIB API 1.9.5版本起可用,需要Python 2.5或以上版本,暂不支持Python 3.X版本。
低层,函数式
提供大部分C API函数的对应函数。
使用NumPy模块操控数据
编译GRIB API的Python接口:
使用如下编译选项
./configure –enable-python
可以禁用NumPy,使用Python原生数组对象,不推荐:
./configure –enable-python –disable-numpy
make install是,Python API相关文件会被安装在
{prefix}/lib/pythonX.X/site-packages/grib_api
设置PYTHONPATH获知将这些文件链接到使用的Python中,参见第五章第六节的提示。
可以使用import gribapi开始工作。

1.4.  加载/释放GRIB消息

参见第五章相关部分。

1.5.  解码

参见第五章相关部分。

1.6.  实用函数1

参见第五章相关内容。

1.7.  索引

参见第七章第四节相关内容。

1.8.  编码

参见第七章第四节相关内容。

1.9.  克隆

参见第七章第四节相关内容。

1.10.     实用函数2

参见第七章第四节相关内容。

1.11.     异常处理

所有的GRIB API函数在出错时会抛出下面的异常:

GribInternalError

封装C API的错误信息。

1.12.     参考

Python specifics:
<//www.python.org/>
NumPy
<//numpy.scipy.org/>
//www.scipy.org/Numpy_Functions_by_Category
<//docs.scipy.org/numpy/docs/numpy/>
//www.scipy.org/NumPy_for_Matlab_Users
Langtangen, Hans Petter, ”Python scripting for computational science”
SciPy
<//www.scipy.org/>
Matplotlib
<//matplotlib.sourceforge.net/>
GRIB API
<//wedit.ecmwf.int/publications/manuals/grib_api/>