一、下载雷达资料
天擎中地面数据下载https://blog.csdn.net/hq19940416/article/details/124493688?spm=1001.2014.3001.5502雷达下载方法与地面数据下载类似,但与地面数据不同的是,雷达基数据文件下载显示每个基数据文件都有一个url链接,点击后自动下载得到基数据.bz2文件。
因此,雷达资料下载程序中将在地面下载程序中多一个下载基数据步骤。
# 拼接timestamp、nonce、sign
baseUrl += '×tamp=' + timestamp+'&nonce=' + nonce+'&sign=' + sign
response = requests.get(baseUrl)
# 获取url内容并解码,得到时间段内雷达数据的下载链接
xml_data = response.content.decode('utf-8')
res=json.loads(xml_data))['DS']
#根据天擎内雷达基数据链接下载基数据(.bz2文件)
l =len(res)
for i in range(l):
rda_dbz_url = res[i]['FILE_URL']
save_filename = res[i]['FILE_NAME']
save_path ="E:/download/rda/"
save_file = save_path + save_filename
rda_dbz = requests.get(rda_dbz_url)
with open(save_file, "wb") as code:
code.write(rda_dbz.content)
在运行完天擎下载url后,得到了一个包含雷达基数据所在的url链接、雷达文件名、文件大小等信息的dict数据。
然后再使用request.get()语句,得到雷达基数据.bz2文件,用with open语句将文件存入文件夹。
二、读取雷达基数据.bz2文件
我目前使用的读取多普勒雷达的模块有两个,一个是pycinrad,还有一个是pycwr。这两个模块读取台站的元数据时,pycinrad模块取出的是雷达站拔海高度,pycwr模块取出的是雷达馈源高度。
本文使用的是pycwr,其使用文档:
pycwr使用文档https://pycwr.readthedocs.io/en/latest/PyCWR_intro.html读取雷达基数据的代码如下:
from pycwr.io import read_auto
import os,sys
Dir = "E:/download/rda/" #目标文件夹
fileType = '.bz2' #雷达基数据后缀名
radar_file = get_filename(Dir,fileType) #get_filename是本人自写的批量读取文件夹内的函数
S = []
for i in range(len(radar_file)):
PRD = read_auto(radar_file[i])
S_alt = PRD.scan_info.altitude.values.min()
S_lon = PRD.scan_info.longitude.values.min()
S_lat = PRD.scan_info.latitude.values.min()
S_id = PRD.sitename[-5:]
S_name = PRD.sitename[:-6]
S_information = {"站名":S_name,"站号":S_id,"经度":S_lon,"纬度":S_lat,"高度":S_alt}
S.append(S_information)
运行代码后能得到一个嵌套字典的列表
三、将列表写入txt文件
with open("F:/temp/my2.txt","w+") as f:
for m in range(len(S)):
for k,v in S[m].items():
f.write(f"{k},{v}\t".format(k,v))
f.write(f"\n")
with open('?件地址',‘w+’):as f: f.write()写?,w+读写 f'{k},{v}'? 字典格式化写??件 ?
|