python grib气象数据可视化
基于Python的Grib数据可视化
一、库的安装
(一)matplotlib安装
matplotlib依赖
安装过程
这里我都是通过源码包安装的,大家也可以再终端里通过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
- 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依赖
安装过程
由于之前已经安装了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 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()
(七)图像展示
python grib气象数据可视化的更多相关文章
- python 爬虫与数据可视化--python基础知识
摘要:偶然机会接触到python语音,感觉语法简单.功能强大,刚好朋友分享了一个网课<python 爬虫与数据可视化>,于是在工作与闲暇时间学习起来,并做如下课程笔记整理,整体大概分为4个 ...
- python 爬虫与数据可视化--matplotlib模块应用
一.数据分析的目的(利用大数据量数据分析,帮助人们做出战略决策) 二.什么是matplotlib? matplotlib: 最流行的Python底层绘图库,主要做数据可视化图表,名字取材于MATLAB ...
- Python TVTK 标量数据可视化与矢量数据可视化,空间轮廓线可视化
Python数据可视化分为 标量可视化,矢量可视化,轮廓线可视化 标量又称无向量,只有大小没有方向,运算遵循代数运算法则比如质量,密度,温度,体积,时间 矢量又称向量,它是由大小,方向共同确定的量,运 ...
- 使用 jupyter-notebook + python + matplotlib 进行数据可视化
上次用 python 脚本中定期查询数据库,监视订单变化,将时间与处理完成订单的数量进行输入写入日志,虽然省掉了人为定时查看数据库并记录的操作,但是数据不进行分析只是数据,要让数据活起来! 为了方便看 ...
- 在我的新书里,尝试着用股票案例讲述Python爬虫大数据可视化等知识
我的新书,<基于股票大数据分析的Python入门实战>,预计将于2019年底在清华出版社出版. 如果大家对大数据分析有兴趣,又想学习Python,这本书是一本不错的选择.从知识体系上来看, ...
- 从python爬虫以及数据可视化的角度来为大家呈现“227事件”后,肖战粉丝的数据图
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取t.cn ...
- python 爬虫与数据可视化--数据提取与存储
一.爬虫的定义.爬虫的分类(通用爬虫.聚焦爬虫).爬虫应用场景.爬虫工作原理(最后会发一个完整爬虫代码) 二.http.https的介绍.url的形式.请求方法.响应状态码 url的形式: 请求头: ...
- 吴裕雄--天生自然python数据清洗与数据可视化:MYSQL、MongoDB数据库连接与查询、爬取天猫连衣裙数据保存到MongoDB
本博文使用的数据库是MySQL和MongoDB数据库.安装MySQL可以参照我的这篇博文:https://www.cnblogs.com/tszr/p/12112777.html 其中操作Mysql使 ...
- python 爬虫与数据可视化--爬虫基础知识
一.python中的模块 模块的安装:pip install 模块名 导入模块与函数:import requests . from pymongo import MongoClient json模块的 ...
随机推荐
- NSIS脚本 打包安装程序
相关工具 nsis http://nsis.sourceforge.net/Special_Builds HM NIS Edit http://hmne.sourceforge.net/ 例子: ; ...
- 配置JAVA开发环境
以下为搭建java的开发环境...... 第一步:安装JDK 1. 了解一下 JVM(Java Virtual Machine—Java虚拟机) JRE(Java Runtime Environmen ...
- springcloud Eureka学习笔记
最近在学习springcloud,抽空记录下学习笔记;主要记录Eureka的实现过程和高可用性的实现 Eureka是一个服务治理框架,它提供了Eureka Server和Eureka Client两个 ...
- nginx——控制 Nginx 并发连接数
1. 限制单个 IP 的并发连接数 .... http { include mime.types; default_type application/octet-stream; sendfile on ...
- mybatis xml配置文件模版
mybatis xml配置文件模版 1.mybatis核心配置文件书写(SqlMapConfig.xml) <?xml version="1.0" encoding=&quo ...
- python day21 ——面向对像-反射 getattr,内置方法
一.反射:用字符串数据类型的变量名来访问这个变量的值 上代码^_^ # class Student: # ROLE = 'STUDENT' # @classmethod # def check_cou ...
- ArcGIS统计栅格像元值并转换为矢量图层
很多时候,我们需要得到矢量数据区域所对应栅格数据的像元统计值(求平均.求和等),然后将获得的统计值赋给矢量图层的属性表,在ArcGIS中操作如下:(PS:第一次写技术文章,望大家多多体谅与支持,么么哒 ...
- centos安装VirtualBox增强包VBoxGuestAdditions
1.如果你的CentOS 版本早于 6,那么需要在 /etc/grub.conf 中添加一行 divider=10,以将这个参数传递给核心,以减少 idle CPU load. 2.#yum up ...
- SQLI DUMB SERIES-8
(1)在id后加单引号.无回显,加双引号跟正常输入是一样的回显,既然不会回显出错信息,只能进行盲注. (2)盲注的方法同less5
- SQL-触发器-011
什么事触发器? 触发器是一种特殊的存储过程,当表中的数据发生改变时触发器自动生效: 触发器无法通过名称调用,也不允许设置参数. 触发器的类型: DML触发器(数据操作语言触发器-insert/upda ...