GRIB API学习笔记08——GRIB API Python接口
形容为“开胃菜”。本文仅提供Python接口开启的新世界的一个小窗口,更多内容需要用户自己去缆索。
1.1. 介绍
1.1.1. 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
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
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函数在出错时会抛出下面的异常:
封装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/>