- 积分
- 5966
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2012-9-11
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 schliezer 于 2019-9-20 18:04 编辑
站里大神太多,也贡献了很多源代码,雷达方面不是很多,我就不揣冒昧贡献一个自己写的读SWAN产品CR组合反射率的小程序,需要事先安装好numpy,struct,bz2三个包:
import numpy as np
from bz2 import BZ2File as bz
import struct as sr
def ReadCR(filename):
f=bz(filename)
# Read parameters from file header
f.seek(66) #skip to date tag
year=sr.unpack('H',f.read(2))
month=sr.unpack('H',f.read(2))
day=sr.unpack('H',f.read(2))
hour=sr.unpack('H',f.read(2))
minute=sr.unpack('H',f.read(2))
time=year+month+day+hour+minute
f.seek(2,1)
XNumGrids=sr.unpack('H',f.read(2)) #grid number in X direction
YNumGrids=sr.unpack('H',f.read(2)) #grid number in Y direction
ZNumGrids=sr.unpack('H',f.read(2)) #grid number in Z direction
XYZdim=XNumGrids+YNumGrids+ZNumGrids
NumGrids=1
for n in XYZdim:
NumGrids*=n
f.seek(4,1)
StartLon=sr.unpack('f',f.read(4))
StartLat=sr.unpack('f',f.read(4))
CentreLon=sr.unpack('f',f.read(4))
CentreLat=sr.unpack('f',f.read(4))
XReso=sr.unpack('f',f.read(4))
YReso=sr.unpack('f',f.read(4))
EndLon=np.array(StartLon)+np.array(XReso)*(np.array(XNumGrids)-1)
EndLat=np.array(StartLat)-np.array(YReso)*(np.array(YNumGrids)-1)
f.seek(1024,0)
fmt='%sB'%NumGrids
CR=sr.unpack(fmt,f.read(NumGrids))
CR=(np.array(CR).reshape((-1,XNumGrids[0]))-66)/2 # quality control on CR
CR[CR==-33]=0 # quality control on CR
Lat=np.linspace(np.array(StartLat),EndLat,np.array(YNumGrids))
Lon=np.linspace(np.array(StartLon),EndLon,np.array(XNumGrids))
return CR,Lat,Lon,XReso,YReso
|
评分
-
查看全部评分
|