利用Python语言实现Grib数据可视化主要依靠三个库——pygrib、numpy和matplotlib。pygrib是欧洲中期天气预报中心(ECMWF)的GRIG API C库的Python接口,通过这个库可以将Grib数据读取出来;numpy是Python的一种开源的数值计算扩展,这种工具可用来存储和处理大型矩阵;matplotlib是python著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图;在数据可视化过程中,我们常需要将数据在地图上画出来,所以还需要matplotlib的一个子包basemap,负责地图绘制。

一、库的安装

(一)matplotlib安装

  • matplotlib依赖
    1. nose

    2. numpy

    3. pyparsing

    4. python-dateutil

    5. cycler

    6. pkg-config

    7. freetype

    8. libpng

  • 安装过程

这里我都是通过源码包安装的,大家也可以再终端里通过pip install 命令来安装

1、安装nose

解压缩后,进入命令提示符 运行

1 python3 setup.py install

2、安装numpy

解压缩后,进入命令提示符 运行

1 python3 setup.py install

3、安装pyparsing

解压缩后,进入命令提示符 运行

1 python3 setup.py install

4、安装python-dateutil

解压缩后,进入命令提示符 运行

1 python3 setup.py install

5、安装cycler

解压缩后,进入命令提示符 运行

1 python3 setup.py install

6、安装pkg-config

1 ./configure --with-intermal-glib
2 make && date
3 sudo make install && date

7、安装freetype

1  ./configure
2  make && date
3  sudo make install && date

8、安装libpng

1  ./configure
2  make && date
3  sudo make install && date

9、安装matplotlib-1.5.0

解压缩后,进入命令提示符 运行

1 python3 setup.py install

(二)basemap安装

  • basemap依赖
    1. geos

    2. pyproj

  • 安装过程

1、安装GEOS

1  ./configure
2  make && date
3  sudo make install && date

2、安装pyproj

1 python3 setup.py install

3、安装basemap

1 python3 setup.py install

(三)pygrib安装

  • pygrib依赖
    1. Jasper

    2. GRIB API

    3. numpy

    4. pyproj

  • 安装过程

由于之前已经安装了numpy和pyproj,这里只需安装Jasper和GRIB API即可安装pygrib

1、安装Jasper

1 ./configure
2 make && date
3 sudo make install && date

2、安装GRIB API

1 ./configure --with-jasper='/usr/local/'
2 make && date
3 sudo make install && date

3、安装pygrib

安装pygrib之前首先要根据自己的实际情况修改文件目录下的setup.cfg文件,最主要的就是修改grib_api_dir和jasper_dir,这两个是刚刚安装的Jasper和GRIB API的路径,如果这两个地址不正确安装会报错

 1 # Rename this file to setup.cfg to set pygrib's
 2 # build options.
 3 # Follow instructions below for editing.
 4 [directories]
 5 # uncomment and set to grib_api install location.
 6 # Include files should be located in grib_api_dir/include and
 7 # the library should be located in grib_api_dir/lib.
 8 # If the libraries and include files are installed in separate locations,
 9 # use grib_api_libdir and grib_api_incdir to specify the locations
10 # separately.
11 grib_api_dir = /usr/local
12 # if grib_api was built with jasper support for JPEG200,
13 # uncomment and set to jasper lib install location.
14 # If the libraries and include files are installed in separate locations,
15 # use jasper_libdir and jasper_incdir.
16 jasper_dir = /usr/local
17 # if grib_api was built with openjpeg support for JPEG200,
18 # uncomment and set to openjpeg lib install location.
19 # If the libraries and include files are installed in separate locations,
20 # use openjpeg_libdir and openjpeg_incdir.
21 #openjpeg_dir = /opt/local
22 # if grib_api was built with png support,
23 # uncomment and set to png lib install location.
24 # If the libraries and include files are installed in separate locations,
25 # use png_libdir and png_incdir.
26 png_dir = /usr
27 # if grib_api was built with png support,
28 # uncomment and set to zlib install location.
29 zlib_dir = /usr
30 # install man pages for command line utilities here
31 #man_dir = /usr/local/man

View Code

修改好就可以正常安装了

1 python3 setup.py install

二、grib数据读取

虽然我做的东西和气象沾边,但是我本身并不是气象专业出身,所有这些东西都是我慢慢研究琢磨出来的,所以有些方面可能讲的比较外行,有不对的地方欢迎大家留言指正。

(一)导入pygrib模块

1 >>> import pygrib

(二)打开Grib文件

1 >>> grbs = pygrib.open('/Users/Kallan/Documents/data/echhae50.082')

(三)提取文件信息

1 >>> grbs.seek(0)
2 >>> for grb in grbs:
3 grb
4 1:Geopotential Height:gpm (instant):regular_ll:isobaricInhPa:level 500:fcst time 24 :from 201507081200

信息解读

        1 :数据列表的行号,有的文件可能包括多个数据

        Geopotential Height:数据的名称

        gpm (instant):数据的单位

        regular_ll:常规数据,其实这个字段我也不清楚

        isobaricInhPa:这个字段表示的是数据属性,此处表示是以hPa为单位的等压面

        level 500:这个字段表示的是高度层

        fcst time 24 :预报时效

        from 201507081200 :起报时间

综合上面的信息可以得出,这个文件是从2015年7月8日12时开始的24小时后500hPa等压面高度场数据

(四)导出文件数据

 1 >>> grb = grbs.select(name='Geopotential Height')[0]
 2 >>> data = grb.values
 3 >>> print(data.shape,data.min(),data.max())
 4 (37, 37) 5368.6796875 5941.0390625
 5 >>> lat,lon=grb.latlons()
 6 >>> print(lat,'\n',lon)
 7 [[  0.    0.    0.  ...,   0.    0.    0. ]
 8 [  2.5   2.5   2.5 ...,   2.5   2.5   2.5]
 9 [  5.    5.    5.  ...,   5.    5.    5. ]
10 ...,
11 [ 85.   85.   85.  ...,  85.   85.   85. ]
12 [ 87.5  87.5  87.5 ...,  87.5  87.5  87.5]
13 [ 90.   90.   90.  ...,  90.   90.   90. ]]
14 [[-90.  -87.5 -85.  ...,  -5.   -2.5   0. ]
15 [-90.  -87.5 -85.  ...,  -5.   -2.5   0. ]
16 [-90.  -87.5 -85.  ...,  -5.   -2.5   0. ]
17 ...,
18 [-90.  -87.5 -85.  ...,  -5.   -2.5   0. ]
19 [-90.  -87.5 -85.  ...,  -5.   -2.5   0. ]
20 [-90.  -87.5 -85.  ...,  -5.   -2.5   0. ]]

三、grib数据可视化

(一)导入需要的模块

1 >>> import matplotlib.pyplot as plt
2 >>> from mpl_toolkits.basemap import Basemap
3 >>> import numpy as np

(二)创建一个figure

1 >>> plt.figure()
2 <matplotlib.figure.Figure object at 0x107e65198>

(三)创建一个basemap实例

 1 >>> m=Basemap(projection='mill',lat_ts=10,llcrnrlon=lon.min(), \
 2  urcrnrlon=lon.max(),llcrnrlat=lat.min(),urcrnrlat=lat.max(), \
 3  resolution='c')
 4 >>> m.drawcoastlines(linewidth=0.25)
 5 <matplotlib.collections.LineCollection object at 0x1091c1f28>
 6 >>> m.drawcountries(linewidth=0.25)
 7 <matplotlib.collections.LineCollection object at 0x10621d0f0>
 8 >>> m.fillcontinents(color='coral',lake_color='aqua')
 9 >>> m.drawmapboundary(fill_color='aqua')
10 <matplotlib.patches.Rectangle object at 0x10918b3c8>
11 >>> m.drawmeridians(np.arange(0,360,30))
12 >>> m.drawparallels(np.arange(-90,90,30))

(四)将lat,lon的数据格式转换成投影需要的格式存入x,y

1 >>> x, y = m(lon,lat)

(五)绘制等值线

1 >>> cs = m.contour(x,y,data,15,linewidths=1.5)

(六)命名并显示图像

1 >>> plt.title('Geopotential Height Contour from Grib')
2 <matplotlib.text.Text object at 0x10918bda0>
3 >>> plt.show()

(七)图像展示


本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。


想观看Matplotlib教学视频,了解更多Matplotlib实用技巧可关注

微信公众账号: MatplotlibClass

今日头条号:Matplotlib小讲堂

转载于:https://www.cnblogs.com/kallan/p/5160017.html

基于Python的Grib数据可视化相关推荐

  1. grib1文件解析 python_基于Python的Grib数据可视化

    利用Python语言实现Grib数据可视化主要依靠三个库--pygrib.numpy和matplotlib.pygrib是欧洲中期天气预报中心(ECMWF)的GRIG API C库的Python接口, ...

  2. 基于python的电影数据可视化分析与推荐系统

    温馨提示:文末有 CSDN 平台官方提供的博主 Wechat / QQ 名片 :) 1. 项目简介 本项目利用网络爬虫技术从国外某电影网站和国内某电影评论网站采集电影数据,并对电影数据进行可视化分析, ...

  3. python基于web可视化_独家 | 基于Python实现交互式数据可视化的工具(用于Web)

    转自:数据派ID:datapi 作者:Alark Joshi 翻译:陈雨琳 校对:吴金笛 本文2200字,建议阅读8分钟. 本文将介绍实现数据可视化的软件包. 这学期(2018学年春季学期)我教授了一 ...

  4. python交互式数据可视化_基于Python实现交互式数据可视化的工具,你用过几种?...

    作者:Alark Joshi 翻译:陈雨琳 来源:数据派THU(ID:DatapiTHU) 我教授了一门关于数据可视化的数据科学硕士课程.我们的数据科学硕士项目是一个为期15个月的强化项目,这个项目已 ...

  5. python实现数据可视化软件_基于Python实现交互式数据可视化的工具

    作者:Alark Joshi 翻译:陈雨琳 校对:吴金笛 本文2200字,建议阅读8分钟. 本文将介绍实现数据可视化的软件包. 这学期(2018学年春季学期)我教授了一门关于数据可视化的数据科学硕士课 ...

  6. pythonweb数据可视化_独家 | 基于Python实现交互式数据可视化的工具(用于Web)

    翻译:陈雨琳 校对:吴金笛 本文2200字,建议阅读8分钟. 本文将介绍实现数据可视化的软件包. 这学期(2018学年春季学期)我教授了一门关于数据可视化的数据科学硕士课程.我们的数据科学硕士项目是一 ...

  7. 基于Python的电影数据可视化分析系统 设计报告+答辩PPT+项目源码

    目录 引言 2 1.1 编写目的 2 1.2 读者对象 2 1.3 软件项目概述 2 1.4 文档概述 2 1.5 定义 2 1.6 参考资料 3 软件的一般性描述 4 2.1软件产品与其环境之间的关 ...

  8. 基于Python的旅游数据可视化系统flask

    开发工具(eclipse/idea/vscode等):pychram 数据库(sqlite/mysql/sqlserver等):mysql 功能模块(请用文字描述,至少200字): 1 用户登录功能 ...

  9. python批量读取grib_Windows下Python读取GRIB数据

    之前写了一篇<基于Python的GRIB数据可视化>的文章,好多博友在评论里问我Windows系统下如何读取GRIB数据,在这里我做一下说明. 一.在Windows下Python为什么无法 ...

最新文章

  1. 《xUnit Test Patterns》学习笔记3 - Philosophy of Test Automation
  2. EF 查看生成的SQL语句
  3. java中什么是反转_Java中如何将字符串反转
  4. java文件不能生成class,一文说清!
  5. poj 3258:River Hopscotch(二分)
  6. SQLMAP使用笔记
  7. html请求接口_前端工程师吐后端工程师(第八讲)——接口的开发
  8. java中对象字节数_JAVA中求解对象所占字节大小
  9. 11.05T2 线段树+卡特兰数
  10. 每天二十分钟学习python_每天 3 分钟,小闫带你学 Python(二十五)
  11. 车站计算机系统sc英文,城市轨道交通信号系统常见英文缩写大全(二)
  12. c语言餐桌游戏,教会你这十款酒桌游戏,让你在朋友圈稳站“C”位!
  13. SEO和SEM的区别与联系有哪些?SEM和SEO是什么?
  14. 清理垃圾文件属于计算机安全维护吗,如何清理c盘垃圾文件
  15. mac-Pro13 电池图标一直保持充电状态的问题解决
  16. linux之getcwd函数解析,Linux 中C语言getcwd()函数的用法
  17. 守望者的逃离 动态规划+滚动数组
  18. 如何同时训练左手灵活性和音阶思维
  19. win10无法装载iso文件_Win10系统怎么安装iso镜像文件 Win10系统安装iso镜像文件方法...
  20. CSDN超级实习生计划学习打卡—— Ipv6

热门文章

  1. Jupyter Notebook使用-如何设置代码单元启用自动换行
  2. Linux中_Ubuntu上_使用命令总结整理_02
  3. html 中内联样式表,html – CSS带有内联样式的伪类
  4. php制作水印案例,PHP实例程序:实现给上传图片加水印图案的做法总结
  5. 操作系统 - 进程和内存
  6. 字节码插桩之Java Agent
  7. goodnotes导入文件需要密码,教你一招破解!
  8. 微信小程序开发步骤+底部菜单栏制作
  9. 多闪付、岁岁通...字节跳动的支付业务终上正轨,但“逐梦金融圈”谈何容易...
  10. php绘制雪花图,怎么制作雪花飘落动态图片 雪花效果图片制作