Python解析SWAN气象雷达数据--(解析、生成ASCII、Image、netCDF)

本文介绍了如何使用Python解析SWAN气象雷达数据,并详细阐述了将数据转换为ASCII格式、生成图像以及创建netCDF文件的过程。通过Python编程,实现了对气象数据的高效处理和可视化。
摘要由CSDN通过智能技术生成
解析
 
from datetime import *
import time
import calendar
import json
import numpy as np
from struct import *
import binascii
import netCDF4


file = open(r"D:/radarDataTest/Z_QPF_20140831203600.F030.bin", "rb")
data = file.read();
print(len(data))
file.close()
#
file = open(r"D:/radarDataTest/Z_QPF_20140831203600.F030.bin", "rb")
length = 0

zonName,dataName,flag,version, = unpack("12s38s8s8s", file.read(12+38+8+8))
zonName = zonName.decode("gbk").rstrip('\x00')
dataName = dataName.decode("gbk").rstrip('\x00')
flag = flag.decode("gbk").rstrip('\x00')
version = version.decode("gbk").rstrip('\x00')
length = length + 12+38+8+8
#
print(zonName)
print("数据说明: " + dataName)
print("文件标志: " + flag)
print("数据版本号: " + version)

#
year,month,day,hour,minute,interval, = unpack("HHHHHH", file.read(2+2+2+2+2+2))
print("时间: "+str(year)+"-"+str(month)+"-"+str(day)+" "+str(hour)+":"+str(minute))
print("时段长: "+str(interval))
length = length + 2+2+2+2+2+2

#
XNumGrids,YNumGrids,ZNumGrids, = unpack("HHH", file.read(2+2+2))
print("X: " + str(XNumGrids)+"  Y: "+str(YNumGrids)+"  Z:"+str(ZNumGrids))
length = length + 2+2+2

#
RadarCount, = unpack("i", file.read(4))
print("拼图雷达数: " + str(RadarCount))
length = length + 4

#
StartLon,StartLat,CenterLon,CenterLat,XReso,YReso, = unpack("ffffff", file.read(4+4+4+4+4+4))
print("开始经度: "+str(StartLon)+"  开始纬度:"+str(StartLat)+"  中心经度:"+str(CenterLon)+"  中心纬度:"+str(CenterLat))
print("经度方向分辨率:"+str(XReso)+"  纬度方向分辨率:"+str(YReso))
length = length + 4+4+4+4+4+4

ZhighGrids=[]
for i in range(0, 40):
    ZhighGrid, = unpack("f", file.read(4))
    ZhighGrids.append(ZhighGrid)    
print("垂直方向的高度:"+str(ZhighGrids))
length = length + 40*4

#
RadarStationNames=[]
for i in range(0, 20):
    RadarStationName, = unpack("16s", file.read(16))
    RadarStationName = RadarStationName.decode("gbk")
    RadarStationNames.append(RadarStationName.rstrip('\x00'))
print("相关站点名称:"+str(RadarStationNames))
length = length + 20*16

#
RadarLongitudes=[]
for i in range(0, 20):
    RadarLongitude, = unpack("f", file.read(4))
    RadarLongitudes.append(RadarLongitude)
print("相关站点所在经度:"+str(RadarLongitudes))
length = length + 20*4

#
RadarLatitudes=[]
for i in range(0, 20):
    RadarLatitude, = unpack("f", file.read(4))
    RadarLatitudes.append(RadarLatitude)
print("相关站点所在纬度:"+str(RadarLatitudes))
length = length + 20*4

#
RadarAltitudes=[]
for i in range(0, 20):
    RadarAltitude, = unpack("f", file.read(4))
    RadarAltitudes.append(RadarAltitu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值