雷达基数据绘制成雷达图

x波段雷达基数据绘制成雷达图

1.雷达基数据格式Z_RADR_I_ZR001_20240521020002_O_DOR_YLD2-D_CAP_FMT.bin.bz2

2.基数据读取


```python
f = StandardData(i)  # 新版本标准数据
            radarTime = f.scantime  # 获取雷达时次
            date_str = radarTime.strftime('%Y-%m-%d %H:%M:%S')
            date_str = date_str.replace(' ', '_').replace(':', '')
            stationCode = f.code
            f.available_product(0)

3.基本反射率dbz读取,其他要素类似

        r = f.get_data(0, 400, "REF")
        dbz_path = pngPath + '/' + stationCode + '/' + 'dbz' + '/'
        if not os.path.exists(dbz_path):  # 如果路径不存在
            os.makedirs(dbz_path)  # 则创建该目录
        else:
            print("dbz路径已经存在")
        dbz_name = stationCode + '_' + 'dbz' + '_' + date_str + '.png'
        dbz_pro = os.path.join(dbz_path, dbz_name)
        draw_dbz(r, dbz_pro)
        rpath_dbz = os.path.relpath(dbz_pro, pngPath).replace('\\', '/')
        add_record(stationCode, radarTime, 'dbz', rpath_dbz)

4.绘制dbz雷达图,其余要素类似

def draw_dbz(r, dbz_pro):
    ref = r.REF
    proj = ccrs.PlateCarree()  # 创建投影,选择cartopy的platecarree投影
    fig = plt.figure(figsize=(6, 6))  # 创建页面,可以自己选择大小
    # ax = fig.subplots(subplot_kw={'projection': proj})  #子图
    ax = fig.add_subplot(1, 1, 1, projection=proj)
    for spine in ax.spines.values():
        spine.set_visible(False)
    color_max = int(ref.max()) + 1
    color_min = int(ref.min())
    n_gap = (color_max - color_min) / 20
    # levels = np.arange(color_min,color_max+n_gap,n_gap)
    levs = [0, 10.0, 15.0, 20.0, 25.0, 30.0, 35.0, 40.0, 45.0, 50.0, 55.0, 60.0, 65.0, 70.0]
    cols = [(0, 0, 0, 0), (0, 161 / 255, 247 / 255), (1 / 255, 236 / 255, 237 / 255), (0, 216 / 255, 0),
            (1 / 255, 144 / 255, 0), (255 / 255, 255 / 255, 0), (231 / 255, 192 / 255, 0),
            (255 / 255, 144 / 255, 0), (255 / 255, 0, 0), (214 / 255, 0, 0), (192 / 255, 0, 0),
            (255 / 255, 0, 240 / 255),
            (150 / 255, 0, 180 / 255), (173 / 255, 144 / 255, 240 / 255)]
    # 创建自定义颜色映射
    custom_cmap = ListedColormap(cols)
    norm = BoundaryNorm(levs, custom_cmap.N, clip=False)
    # 绘制等高线填充图
    plt.contourf(r.longitude, r.latitude, ref, cmap=custom_cmap, norm=norm, levels=levs)
    # 设置透明背景并保存图片
    plt.savefig(dbz_pro, transparent=True, dpi=600, bbox_inches='tight', pad_inches=0)
    plt.close(fig)

5.绘制结果展示
雷达基数据绘制成雷达图_第1张图片
6.雷达小常识
1.在国内,我们最常见到和使用的气象雷达,是新一代多普勒天气雷达(CINRAD)。我们在气象局之类建筑楼顶上见到的那些球形建筑,大都属于这一种雷达。这种雷达可以探测反射率因子、多普勒径向速度、谱宽等基本气象要素,从而为短临尺度上的天气预报和预警提供数据支撑。特别是雷达反射率数据,因为其与强对流天气系统直接相关,最常被大家使用。
达数据在日常业务科研中的应用非常多,比如雷达数据可以用于数值模式同化中,为数值模式提供一个更加准确的初始场;基于雷达反射率数据的雷达短临预报系统可以预报未来2小时内,雷达探测范围内的强对流天气。例如,眼控科技自主研发的基于深度学习的AI对流临近预报系统就是利用雷达反射率数据,对未来两小时之内强对流天气,进行准确的预报。看了一下,下面的这个预报效果确实很好

你可能感兴趣的:(python,flask,算法)