请选择 进入手机版 | 继续访问电脑版
爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 5148|回复: 4

按说明书写的swan读取雷达MCR拼图,感觉错哪里呢?

[复制链接]

新浪微博达人勋

发表于 2018-4-12 11:14:13 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
按swan说明书如下内容读取雷达MCR数据:
131格式经过数次修订,目前大多数数据仍未1.0格式,但是显示引擎已经能够解析2.0格式的数据,具体应用可以根据情况使用相应版本的格式,主要是从后面的Reserved中修改为对应版本的大小。保证文件头格式总长度1024个字节。
说明:(老版本文件头长256字节,蓝色字段在老版本中不存在,只在新版本中存在。新旧版本的判断在Flag[8]字段,如果内容是“SWAN”则是新版本,否则为老版本),站点设置一般供雷达用,也可用于其他,只有20个空位
char ZonName[12];  // diamond 131 12个字节
char DataName[38];//数据说明(例如 2008年5月19日雷达三维拼图)38个字节
char  Flag[8];    // 文件标志,"swan"
char  Version[8];    // 数据版本号,"1.0" 目前为2.0
unsigned short int year;//2008 两个字节
unsigned short int month;//05  两个字节
unsigned short int day;//19    两个字节
unsigned short int hour;//14   两个字节
unsigned short int minute;//31 两个字节
unsigned short int interval ;  //两个字节      
unsigned short int XNumGrids;//1300 两个字节
unsigned short int YNumGrids;//800 两个字节
unsigned short int ZNumGrids;//20  两个字节
int RadarCount; //拼图雷达数 四个字节
float StartLon; //网格开始经度(左上角) 四个字节
float StartLat; //网格开始纬度(左上角) 四个字节
float CenterLon;//网格中心经度 四个字节
float CenterLat;//网格中心纬度 四个字节
float XReso; //经度方向分辨率四个字节
float YReso; //纬度方向分辨率四个字节
float ZhighGrids[40];//垂直方向的高度(单位km)数目根据ZnumGrids而得(最大40层)160个字节。
char RadarStationName[20][16];    //相关站点名称,  20*16字节
float RadarLongitude[20];      //相关站点所在经度,单位:度,4*20字节
float RadarLatitude[20];       //相关站点所在纬度,单位:度,4*20字节
float RadarAltitude[20];      //相关站点所在海拔高度,单位:米,4*20字节
unsigned char    MosaicFlag[20];    //该相关站点数据是否包含在本次拼图中,未包含:0,包含:1, 20字节
   //数据类型定义,版本号为.=1.5
short  m_iDataType;  //0-unsigned char 1-char 2-unsigned short 3-short 4  (数据类型是什么意思?)
//每一层的向量数,版本=2.0
short m_iLevelDimension;
char  Reserved[168];  
接下来是数据块,从底层到高层进行排列共ZnumGrids层。一个字节存储一个数据,值的范围0-255,2*dBZ+66等于该字节的值。每层的数据从起始点(左上角)开始,按维向(纬度y)减小写每行的经向(经度x增大)数据。
具体数据的记录值约定:  (20层?没有数据?,雷达站高度是m?)
组合反射率、CAPPI率数据值为单字节,范围0-255,2*dBZ+66等于该字节的值。回波顶高、垂直液态水含量、垂直液态水含量密度、一小估算降水等数据为两字节整数(short  int),回波顶高单位为0.1 km,垂直液态水含量单位为0.1 kg/m2,垂直液态水含量密度单位为0.1kg/m3,一小估算降水单位为0.1 mm,范围0-203(大于203的全部等于203)每层的数据从起始点(左上角)开始,按维向(纬度y)减小写每行的经向(经度x增大)数据。其他产品存储的必须为实际值,存储和实际值之间不得再有转换的公式。(排列20层?每层nXm个?)
我先读取了前面1024个字节,属于文件头和经纬度等信息部分,因为雷达拼图MCR只有一层数据,所以我就直接进行循环,每个网格循环的赋值是这样的(PYTHON代码):
for i in range(700):
    for j in range(800):
        jing0=114.00+j*0.01
        wei0=29.00-i*0.01-0.01
        jing0="%.2f" % jing0
        wei0="%.2f" % wei0
        tstr=str(jing0)+','+str(wei0)
        zx=int(struct.unpack('b',infile.read(1))[0])  
        s=(zx-66)/2
        if s<=0:
            s=0
        a[tstr]=s
但是读取完毕后,我在arcgis上展示比较时,发现趋势上和局里给出的回波图基本位置是一致的,但是数值大小却差很多。
局里信息网给的回波最大值在50+了,可是我的代码不管哪个时段的回波最大值,基本都是30.5,错在哪里呢??????
或者有谁能告诉我swan的雷达拼图具体要怎么读取数据呢?
先感谢大家了。


密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-5-30 13:10:05 | 显示全部楼层
你好,你的问题解决了吗?我也遇到和你同样的问题。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-5-30 13:13:38 | 显示全部楼层
怎么显示出unsigned short int 这种类型数据,char类型可以直接显示,其他的不会。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2020-12-3 16:21:59 | 显示全部楼层
请问楼主问题解决了吗?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2023-7-18 17:34:58 | 显示全部楼层
不知道楼主解决了吗?我现在也遇到了这个问题,出现这个问题的原因是提取出来的回波反射率的值域是[-128,127],所以(127-66)/2=30.5,但是我不知道怎么修改,如果全部加上128的话值又太大了。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表