本帖最后由 eeeee 于 2020-6-2 13:26 编辑
斜体是模块底层部分
文件读取部分(cinrad.io)
目前cinrad模块支持SA/SB/SC/CA/CB/CC雷达以及新版本标准数据的读取。
import cinrad
f = cinrad.io.CinradReader(radar_file)
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。目前只支持径向类型的数据。
from cinrad.io import PUP
f = PUP(your_radar_file)
data = f.get_data()复制代码
要素计算部分(cinrad.calc)
提供VIL,ET和组合反射率以及任意两点剖面的计算。计算这些要素需要传入整个体扫的反射率数据。
rl = [f.get_data(i, 230, 'REF') for i in f.angleindex_r]复制代码除了两点剖面计算之外,其他函数返回的数据类型是cinrad.datastruct.Radial或者cinrad.datastruct.Grid(组合反射率)。
vil = cinrad.calc.quick_vil(rl) #计算VIL
et = cinrad.calc.quick_et(rl) #计算ET
cr = cinrad.calc.quick_cr(rl) #计算组合反射率复制代码
这些函数都是cinrad.utils里面的函数的封装,cinrad.utils里面的函数接受的参数为np.ndarray,详情见函数的注释。
两点剖面的计算由cinrad.calc.VCS类完成,这个类初始化同样需要整层体扫。
vcs = cinrad.calc.VCS(rl)
sec = vcs.get_section(start_cart=(111, 25.5), end_cart=(112, 26.7)) # pass geographic coordinates (latitude, longitude)
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 (31.46 KB, 下载次数: 1)
2019-1-7 19:55 上传
更新:
新增style参数,控制背景颜色,可设置为'black'或者'white'
ppi = cinrad.visualize.PPI(radial)
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的基础上进行更多自定义操作,例如绘制散点图或者使用其他绘图函数
ppi.geoax.scatter(***)复制代码