• 大小: 5KB
    文件类型: .py
    金币: 1
    下载: 0 次
    发布日期: 2021-06-02
  • 语言: Python
  • 标签: python  SA  

资源简介

本程序利用Python读取SA气象雷达数据,并绘制回波图。具有较好的效果

资源截图

代码片段和文件信息

# -*- coding: utf-8 -*-

“““
-------------------------------------------------------------
# @Version : python3.6
# @Author  : wangTongGen
# @File    : SaDecoder.py
# @Software: PyCharm
# @Time    : 2018/4/21 15:18
-------------------------------------------------------------
# @Description: This code is programed to plot SA_radarof PPI
-------------------------------------------------------------
“““
import matplotlib.pyplot as plt
import numpy as np
from array import array
from matplotlib import colors
import tkinter as tk
from tkinter import filedialog


def main():

    file= openFile()
    k = int(input(‘请输入您想观察的仰角,请选择1 3 5 6 7 8 9 10 11:‘))
    print(‘数据读取中,请稍后...‘)
    el az rl dbz = saDecoder(filek)
    # el az rl dbz = datalink(el az rl dbz) #调用该语句则将数据按照1-360度的方位角排序
    x y h = sph2cord(el az rl)
    plotFunction(x y dbz k)


def openFile():

    root = tk.Tk()
    root.withdraw()
    return filedialog.askopenfilename()


def saDecoder(file k):

    f = open(file ‘rb‘)
    data = np.asarray(array(‘B‘ f.read()))
    data = data.reshape(len(data)//2432 2432)

    if data[072] == 11:
        phi = [0.50 0.50 1.45 1.45 2.40 3.35 4.30 5.25 6.2 7.5 8.7 10 12 14 16.7 19.5]
    if data[0 72] == 21:
        phi = [0.50 0.50 1.45 1.45 2.40 3.35 4.30 6.00 9.00 14.6 19.5]
    if data[0 72] == 31:
        phi = [0.50 0.50 1.50 1.50 2.50 2.50 3.50 4.50]
    if data[0 72] == 32:
        phi = [0.50 0.50 2.50 3.50 4.50]

    el = np.zeros((len(data) 460))  #仰角
    az = np.zeros((len(data) 460))  #方位角
    rl = np.zeros((len(data) 460))  #径向长度
    dbz = np.zeros((len(data) 460))  #反射率

    count = 0
    while count < len(data):
        el_number = data[count44] + 256 * data[count45] #仰角序数
        az_value = (data[count36] + 256 * data[count37]) / 8 * 180 / 4096  #方位角
        d_value = data[count54] + 256 * data[count55] #库长

        if d_value == 0:
            count += 1
            continue
        else:
            count += 1

        i = 0
        while i < 460:
            el[count-1 i] = phi[el_number-1]
            az[count-1 i] = az_value
            rl[count-1 i] = i + 1
 

评论

共有 条评论