请选择 进入手机版 | 继续访问电脑版
爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

新浪微博登陆

只需一步, 快速开始

QQ登录

只需一步,快速开始

搜索
查看: 2344|回复: 76

[源代码] PyCINRAD模块使用指南(增加GUI界面)

[复制链接] |关注本帖

新浪微博达人勋

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 eeeee 于 2019-3-13 15:56 编辑

原贴http://bbs.06climate.com/forum.p ... tra=page%3D1&page=1由于一些因素变得有点版本混乱,现在重开一贴来详细说明一下这个模块的使用方法。
最新版本请移步GitHub下载,如果这个模块对你有帮助,给个star吧,这也是我继续开发的动力。
https://github.com/CyanideCN/PyCINRAD
安装方法:
从GitHub下载下来之后解压,cd到文件夹里面之后运行
  1. python setup.py install
复制代码

在使用过程中有什么问题可以在这个帖子下面问,同时,也欢迎加入模块的开发者行列。

2019.3.13更新
写了个简易的GUI界面,有兴趣的可以用一下,由于本人实在不擅长写界面,欢迎大家多多改进。
运行main_ui.pyw即可
1.png


gui.zip

3.15 KB, 下载次数: 3, 下载积分: 金钱 -5

评分

参与人数 2金钱 +30 贡献 +4 收起 理由
zhangqing90 + 10 + 2 很给力!
grug + 20 + 2 很给力!

查看全部评分

已有8人关注本帖

随缘淡水河chongzika小其其格
密码修改失败请联系qq:937062711

新浪微博达人勋

 楼主| 发表于 2019-1-7 19:42:07 | 显示全部楼层 |取消关注该作者的回复
本帖最后由 eeeee 于 2019-1-13 23:21 编辑

斜体是模块底层部分
文件读取部分(cinrad.io)
目前cinrad模块支持SA/SB/SC/CA/CB/CC雷达以及新版本标准数据的读取。
  1. import cinrad
  2. f = cinrad.io.CinradReader(radar_file)
  3. f = cinrad.io.StandardData(radar_file)
复制代码
CinradReader读取老版本的数据,StandardData读取新版本标准数据。
获取雷达数据统一都是使用f.get_data(elevation, range, datatype)方法,datatype是数据类型,包括'REF','VEL','SW'以及一些双偏振要素,range是数据的半径,单位是公里,elevation是仰角序号,从零开始计数。
为了减少绘图时传入的参数个数,获取到的数据均为cinrad.datastruct.Radial类型,储存有雷达其他的信息,Radial的data属性就是np.ndarray格式储存的雷达数据

cinrad.io.PUP提供读取PUP数据的功能,读取出来的数据为cinrad.datastruct.Radial格式并且可以用来绘制PPI。目前只支持径向类型的数据。
  1. from cinrad.io import PUP
  2. f = PUP(your_radar_file)
  3. data = f.get_data()
复制代码




要素计算部分(cinrad.easycalc)
提供VIL,ET和组合反射率以及任意两点剖面的计算。计算这些要素需要传入整个体扫的反射率数据。
  1. rl = [f.get_data(i, 230, 'REF') for i in f.angleindex_r]
复制代码
除了两点剖面计算之外,其他函数返回的数据类型是cinrad.datastruct.Radial或者cinrad.datastruct.Grid(组合反射率)。
  1. vil = cinrad.easycalc.quick_vil(rl) #计算VIL
  2. et = cinrad.easycalc.quick_et(rl) #计算ET
  3. cr = cinrad.easycalc.quick_cr(rl) #计算组合反射率
复制代码


这些函数都是cinrad.utils里面的函数的封装,cinrad.utils里面的函数接受的参数为np.ndarray,详情见函数的注释。

两点剖面的计算由cinrad.easycalc.VCS类完成,这个类初始化同样需要整层体扫。
  1. vcs = cinrad.easycalc.VCS(rl)
  2. sec = vcs.get_section(start_cart=(111, 25.5), end_cart=(112, 26.7)) # pass geographic coordinates (latitude, longitude)
  3. sec = vcs.get_section(start_polar=(115, 350), end_polar=(130, 30)) # pass polar coordinates (distance, azimuth)
复制代码
调用VCS.get_section方法获取剖面(为cinrad.datastruct._Slice类型),可以选择传入极坐标也可以传入经纬度。

可视化部分(cinrad.visualize)
PPI图由cinrad.visualize.PPI类来绘制,这个类提供了一个方便的绘图模板。参数为cinrad.datastruct.Grid或者cinrad.datastruct.Radial类型即可,只要是cinrad模块里面的函数生成的数据都可以扔进去画,可选参数总结见下图。
QQ截图20190107195512.png
更新:
新增style参数,控制背景颜色,可设置为'black'或者'white'


  1. ppi = cinrad.visualize.PPI(radial)
  2. ppi('D:\\') #传入保存图片的地址,亦可传入具体图片名
复制代码
PPI.plot_range_rings(self, _range, color='white', linewidth=0.5, **kwargs)在PPI图上绘制圆圈。

PPI.plot_cross_section(self, data, ymax=None)在PPI图下方加入VCS剖面图,和vcs参数相似,用此函数还可以自定义y轴的范围。

PPI.geoax
这个属性是绘制雷达图的axes,可以在操作这个axes的基础上进行更多自定义操作,例如绘制散点图或者使用其他绘图函数
  1. ppi.geoax.scatter(***)
复制代码


密码修改失败请联系qq:937062711

新浪微博达人勋

 楼主| 发表于 2019-1-7 20:09:02 | 显示全部楼层 |取消关注该作者的回复
一些示例图片
格式工厂Z9200_20180916022401_1.4_230_VEL.png

格式工厂Z9735_20180304120845_0.6_230_REF.png

格式工厂Z9552_20180726113032_0.0_230_ET.png

图片为了方便上传压缩过,模块生成的图片是很高清的。



密码修改失败请联系qq:937062711

新浪微博达人勋

发表于 2019-1-8 12:54:08 | 显示全部楼层 |取消关注该作者的回复
本帖最后由 grug 于 2019-1-8 13:07 编辑

楼主给力,我用python3.6版本pip安装cinrad==1.2, from cinrad.io import CinradReader总会显示ModuleNotFoundError: No module named 'cinrad.io._radar_struct'
可以了,pip安装的缺少文件夹_radar_struct
例外问一下,背景颜色怎么把黑色改为白色,添加经纬度坐标线
密码修改失败请联系qq:937062711

新浪微博达人勋

 楼主| 发表于 2019-1-8 13:19:02 | 显示全部楼层 |取消关注该作者的回复
本帖最后由 eeeee 于 2019-1-8 13:20 编辑
grug 发表于 2019-1-8 12:54
楼主给力,我用python3.6版本pip安装cinrad==1.2, from cinrad.io import CinradReader总会显示ModuleNotF ...

你可以把cinrad/visualize/basicfunc.py里面setup_plot函数的plt.style.use('dark_background')给注释掉。(我再尝试一下找找有没有更优雅的方法)
PPI里面的ax属性是cartopy的GeoAxes,加经纬度线的话可以通过操作那个axes来实现
密码修改失败请联系qq:937062711

新浪微博达人勋

发表于 2019-1-8 14:11:44 | 显示全部楼层 |取消关注该作者的回复
本帖最后由 grug 于 2019-1-8 15:50 编辑

linux系统下运行,FileNotFoundError: [Errno 2] No such file or directory: 'C:\\\\WINDOWS\\\\Fonts\\\\msyh.ttc'找不到对应字体

windows下安装:
pip install cinrad
Collecting cinrad
  Downloading https://files.pythonhosted.org/p ... .2-py3-none-any.whl (22.1MB)
    100% |████████████████████████████████| 22.1MB 150kB/s
Collecting cartopy>=0.15 (from cinrad)
  Downloading https://files.pythonhosted.org/p ... rtopy-0.17.0.tar.gz (8.9MB)
    100% |████████████████████████████████| 8.9MB 91kB/s
  Installing build dependencies ... done
    Complete output from command python setup.py egg_info:
    Proj 4.9.0 must be installed in Conda environment "cinrad".

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-dc9qxcds/cartopy/


密码修改失败请联系qq:937062711

新浪微博达人勋

 楼主| 发表于 2019-1-8 20:34:00 | 显示全部楼层 |取消关注该作者的回复
字体问题已经解决
密码修改失败请联系qq:937062711

新浪微博达人勋

发表于 2019-1-9 12:26:01 | 显示全部楼层 |取消关注该作者的回复
为你点赞~~
密码修改失败请联系qq:937062711
回复

使用道具 举报

新浪微博达人勋

发表于 2019-1-9 23:37:07 | 显示全部楼层 |取消关注该作者的回复
厉害了楼主!!!想请教一下,如果在windows下安装了Cartopy,是不是在Cartopy中直接安装这个模块就可以绘图了?
密码修改失败请联系qq:937062711

新浪微博达人勋

 楼主| 发表于 2019-1-10 00:11:08 | 显示全部楼层 |取消关注该作者的回复
小其其格 发表于 2019-1-9 23:37
厉害了楼主!!!想请教一下,如果在windows下安装了Cartopy,是不是在Cartopy中直接安装这个模块就可以绘 ...

把依赖包装好就可以用了
密码修改失败请联系qq:937062711
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表