EasyRadar-SARadar

CINRAD SA格式

1.反射率距离库长为1公里,最大距离库数为460(不同仰角库数不同)
2.速度和谱宽距离库长为250米,最大距离库数为920(不同仰角库数不同)
3.SA雷达定量观测有效探测距离为230公里
4.SA雷达在低层每个仰角上扫描两次(第一层和第二层)
5.VCP21扫描模式仰角为:0.5,1.5,2.4,3.4,4.3,6.0,9.9,14.6,19.5

更改主菜单左上角

“无标题-”改为“EasyRadar”

// 唯一的一个窗口已初始化,因此显示它并对其进行更新
	m_pMainWnd->ShowWindow(SW_SHOW);
	m_pMainWnd->SetWindowText(_T("EasyRadar"));
	m_pMainWnd->UpdateWindow();

更改关于

位置:资源视图Dialog中IDD_ABOUTBOX
操作:选中Text Control,在属性窗口更改Caption


SA雷达解码函数(仅反射率)

VS2010 MFC

#define MaxEl 9
#define MaxAz 400
#define MaxBinNum 460

//解码函数
int CSARadar::DecodeFile(CString filepath)
{
	CFile file;

	if(!file.Open(filepath, CFile::modeRead)) return -1;//文件打开失败

	//创建动态数组
	m_ref = new float**[MaxEl];
	m_el = new float[MaxEl];
	m_az = new float*[MaxEl];
	m_radialnum = new int[MaxEl];
	m_binnum = new int[MaxEl];
	m_binwidth = new int[MaxEl];
	int sizesum = sizeof(m_ref) * MaxBinNum;

	for(int i = 0; i < MaxEl; i++){
		m_ref[i] = new float*[MaxAz];
		m_az[i] = new float[MaxAz];
		for(int j = 0; j < MaxAz; j++){
			m_ref[i][j] = new float[MaxBinNum];
			memset(m_ref[i][j], 0, sizesum);//初始化
		}
	}

	int ToRaNum = 0;//径向总数

	ToRaNum = file.GetLength() / 2432;//一个径向的字节
	
	unsigned char refdata;//字节数据
	int m = 0;//仰角序号
	int n = 0;//方位角序号
	int k = 0;//库数序号

	for(int i = 0; i < ToRaNum; i++){
		file.Read(&m_rfh, sizeof(m_rfh));//读一条径向
		
		if(m_rfh.ElNumber == 2 || m_rfh.ElNumber == 4) continue;//径向序号1-11;低层每层扫描两次,2、4剔除
		
		if(m_rfh.RadialStatus == 0 || m_rfh.RadialStatus == 3 ){//径向状态:0该仰角第一条;3体扫第一条
			m_binnum[m] = m_rfh.GatesNumberOfReflectivity;//层径向库数
			m_binwidth[m] = m_rfh.GateSizeOfReflectivity;//层径向库宽
		}
		
		n = m_rfh.RadialNumber - 1;//方位序号1-xxx
		m_az[m][n] = m_rfh.Az * Radar_TransPara;//径向方位角

		//遍历
		unsigned char *pbeg = begin(m_rfh.Echodata);
		unsigned char *pend = end(m_rfh.Echodata);
		
		k = 0;
		while (pbeg != pend ){ 
			if(k < RGates){
				if(k < m_binnum[m]){
					refdata = m_rfh.Echodata[k];
					if(refdata == 0) m_ref[m][n][k] = -99;
					else if(refdata == 1) m_ref[m][n][k] = -99;
					else m_ref[m][n][k] = (refdata - 2) / 2. - 32;
				}
			}
			//跳过速度和谱宽数据
			k++;
			pbeg++;
		}

		if(m_rfh.RadialStatus == 2 || m_rfh.RadialStatus == 4 ){//径向状态:2该仰角最后一条;4体扫最后一条
			m_radialnum[m] = m_rfh.RadialNumber;//层径向数
			m_el[m] = m_rfh.El * Radar_TransPara;//层仰角
			m++;
		}
	}

	file.Close();
	return 1;
}

画图效果

画图代码与SC中的一样,改改比率就可以了
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值