CC雷达基数据格式说明附函数要点.docx
《CC雷达基数据格式说明附函数要点.docx》由会员分享,可在线阅读,更多相关《CC雷达基数据格式说明附函数要点.docx(18页珍藏版)》请在冰豆网上搜索。
CC雷达基数据格式说明附函数要点
CINRAD/CC/CCJ雷达原始数据格式
声明:
本数据格式适用CINRAD/CC和CINRAD/CCJ.安徽四创电子股份有限公司保留最终解释权.本文档仅供内部交流,请不要发表.
文件名:
平扫(PPI):
NNNNYYDDHH.MMP
高扫(RHI):
NNNNYYDDHH.MMR
体扫(VPPI):
NNNNYYDDHH.MMV
单库FFT:
NNNNYYDDHH.MMF
等高PPI(CAPPI):
NNNNYYDDHH.MMC
N:
年Y:
月D:
日H:
时M:
分
数据组成:
整个数据由文件头(1个)和基于极坐标系的原始数据(512个径向)组成.
文件头:
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//tagWEATHERRADAR雷达信息的结构
typedefstructtagWEATHERRADAR
{
charcFileType[16];//3830数据标识(CINRADC)
charcCountry[30];//国家名
charcProvince[20];//省名
charcStation[40];//站名
charcStationNumber[10];//区站号
charcRadarType[20];//雷达型号
charcLongitude[16];//天线所在经度
charcLatitude[16];//天线所在纬度
longlLongitudeValue;//具体经度
longlLatitudeValue;//具体纬度
longlHeight;//天线海拔高度
shortsMaxAngle;//地物阻挡最大仰角
shortsOptAngle;//最佳观测仰角
unsignedcharucSYear1;//观测开始时间的年千百位(19-20)
unsignedcharucSYear2;//观测开始时间的年十个位(00-99)
unsignedcharucSMonth;//观测开始时间的月(1-12)
unsignedcharucSDay;//观测开始时间的日(1-31)
unsignedcharucSHour;//观测开始时间的时(0-23)
unsignedcharucSMinute;//观测开始时间的分(0-59)
unsignedcharucSSecond;//观测开始时间的秒(0-59)
unsignedcharucTimeFrom;//时间来源0-计算机时钟(1天内未对时)
//1-计算机时钟(1天内已对时)
//2-GPS
//3-其它
unsignedcharucEYear1;//观测结束时间的年千百位(19-20)
unsignedcharucEYear2;//观测结束时间的年十个位(00-99)
unsignedcharucEMonth;//观测结束时间的月(1-12)
unsignedcharucEDay;//观测结束时间的日(1-31)
unsignedcharucEHour;//观测结束时间的时(0-23)
unsignedcharucEMinute;//观测结束时间的分(0-59)
unsignedcharucESecond;//观测结束时间的秒(0-59)
unsignedcharucScanMode;//扫描方式1-RHI
//10-PPI和ZPPI
//1XX=VPPI(XX为扫描圈数)
unsignedlongulSmilliSecond;//以微秒为单位表示的秒的小数位
unsignedshortusRHIA;//RHI所在的方位角(0.01度为单位)
//PPI和VPPI时为FFFF
shortsRHIL;//RHI所在的最低仰角(0.01度为单位)
//PPI和VPPI时为FFFF
shortsRHIH;//RHI所在的最高仰角(0.01度为单位)
//PPI和VPPI时为FFFF
unsignedshortusEchoType;//回波类型0x405a-Z0x406a-V0x407a-W
//0x408a-ZVW三要素
unsignedshortusProdCode;//数据类型0x8001-PPI数据0x8002-RHI数据
//0x8003-VPPI数据0x8004-单强度PPI数据
//0x8005-CAPPI数据
unsignedcharucCalibration;//标校状态0-无1-自动2-1星期内人工
//3-1月内人工
unsignedcharremain1[3];//保留字
unsignedcharremain2[660];//保留字,放VPPISCANPARAMETER数据
//该结构的说明见后
longlAntennaG;//天线增益(0.001dB)
longlPower;//峰值功率(瓦)
longlWavelength;//波长(微米)
unsignedshortusBeamH;//垂直波束宽度(秒)
unsignedshortusBeamL;//水平波束宽度(秒)
unsignedshortusPolarization;//极化状态0-水平1-垂直2-双偏振
//3-圆偏振4-其它
unsignedshortusLogA;//对数动态范围(0.01dB)
unsignedshortusLineA;//线性动态范围(0.01dB)
unsignedshortusAGCP;//AGC延迟量(微秒)
unsignedshortusFreqMode;//频率方式1-单重复频率2-双重复频率3:
2
//3-双重复频率4:
3
unsignedshortusFreqRepeat;//重复频率
unsignedshortusPPPPulse;//PPP脉冲数
unsignedshortusFFTPoint;//FFT间隔点数
unsignedshortusProcessType;//信号处理方式1-PPP2-全程FFT
//3-单库FFT
unsignedcharucClutterT;//杂波消除阀值(即STC)
charcSidelobe;//第一旁瓣(dB)
unsignedcharucVelocityT;//速度门限
unsignedcharucFilderP;//地物消除方式0-无1-IIR滤波器1
//2-IIR滤波器23-IIR滤波器3
//4-IIR滤波器4
unsignedcharucNoiseT;//噪声消除阀值(即强度门限)
unsignedcharucSQIT;//SQI门限
unsignedcharucIntensityC;//DVIP强度值估算采用的通道
//1-对数通道2-线性通道
unsignedcharucIntensityR;//强度值估算是否距离订正
//0-无(dB)1-已订正(dBZ)
unsignedcharucCalNoise;//噪声系数标定值
unsignedcharucCalPower;//发射功率标定值
unsignedcharucCalPulseWidth;//脉冲宽度标定值
unsignedcharucCalWorkFreq;//工作频率标定值
unsignedcharucCalLog;//对数斜率标定值
charremain3[92];//保留字
unsignedlongintliDataOffset;//数据偏移地址
}WEATHERRADAR;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//tagVPPISCANPARAMETER仰角层的结构
typedefstructtagVPPISCANPARAMETER
{
unsignedshortusMaxV;//最大可测速度(厘米/秒)
unsignedshortusMaxL;//最大可测距离(10米)
unsignedshortusBindWidth;//库长(米)
unsignedshortusBinNumber;//每径向库数
unsignedshortusRecordNumber;//本圈径向数
unsignedshortusArotate;//本圈转速(0.01度/秒)
unsignedshortusPrf1;//本圈第一次重复频率(0.1Hz)对应单重频或双重频的高者
unsignedshortusPrf2;//本圈第二次重复频率(0.1Hz)对应双重频的低者
unsignedshortusSpulseW;//本圈脉宽(微秒)
shortusAngle;//仰角(0.01度)
unsignedcharcSweepStatus;//1=单要素2=三要素(单重频)3=三要素(双重频)
unsignedcharcAmbiguousp;//0=无软件退模糊1=软件退模糊
}VPPISCANPARAMETER;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
注:
在WEATHERRADAR结构的remain2处填写了的VPPISCANPARAMETER;结构表明
本仰角层的参数(对PPI和VPPI而言)或其他含义(对RHI和单库FFT文件而言)
VPPI有几层填几个,PPIRHIFFT数据只填写一层即一个.
原始数据:
PPI RHIVPPI的数据排列如下:
第0个径向的数据:
Z(字) 500个
V(字) 500个
W(字) 500个
….
….
第512个径向的数据:
Z(字) 500个
V(字) 500个
W(字) 500个
注:
ZVW均为16位的字型数据(在C语言中用shortint有符整型)
所读出的值除以10得到一个小数就是最终的值.
Z以dBz为单位VW均以m/s为单位
读出的数据如果是0x8000,说明此处无回波.这样做的目的是为了必须区别回波强度
为0和无回波.
单库FFT数据排列如下:
当为256点时:
256个通道的功率值(字型单位:
dB)
当为128点时:
128个通道的功率值(字型单位:
dB)
附函数段:
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//检查要打开的文件
//filename:
文件名
CStringCRadar:
:
CheckData(CStringfilename)
{
CFile*fp;
CStringstr="INVALID",error,tempfilename=filename;
try{
fp=newCFile(filename,CFile:
:
modeRead);
}
catch(CFileException*e){
ProcessFileError(e,1);
returnstr;
}
WEATHERRADARtempinfo;
fp->SeekToBegin();
fp->Read(&tempinfo,sizeof(WEATHERRADAR));
if(strcmp(tempinfo.cFileType,"CINRADC"))
{
error.Format("%s不是3830雷达数据文件!
",tempfilename);
AfxMessageBox(error,MB_OK|MB_ICONSTOP);
deletefp;
returnstr;
}
if(tempinfo.usProdCode==0x8001)str="PPI";
elseif(tempinfo.usProdCode==0x8002)str="RHI";
elseif(tempinfo.usProdCode==0x8003)str="VPPI";
elseif(tempinfo.usProdCode==0x8004)str="ZPPI";
elseif(tempinfo.usProdCode==0x8005)str="CAPPI";
elseif(tempinfo.usProdCode==0x8006)str="FFT";
else
{
error.Format("文件%s不是3830雷达数据文件!
",tempfilename);
AfxMessageBox(error,MB_OK|MB_ICONSTOP);
}
deletefp;
returnstr;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//读取数据
//filename:
要打开的文件名
BOOLCPPI:
:
LoadData(CStringfilename)
{
CFile*fp;
CStringstr;
try{
fp=newCFile(filename,CFile:
:
modeRead);
}
catch(CFileException*e){
radar->ProcessFileError(e,1);
returnFALSE;
}
fp->SeekToBegin();
fp->Read(&info,sizeof(WEATHERRADAR));
fp->Seek(218L,CFile:
:
begin);
fp->Read(&vppipara,sizeof(VPPISCANPARAMETER));
rmax=int(vppipara.usMaxL/100.0+0.5);
scanyj=vppipara.usAngle/100.0;
//装地图文件
longl;
//申请数据存储区
hData=:
:
GlobalAlloc(GHND,512L*1500L*2L);
if(!
hData)
{
AfxMessageBox("内存不足",MB_OK|MB_ICONSTOP);
:
:
GlobalFree(hData);
deletefp;
returnFALSE;
}
pData=(short*):
:
GlobalLock(hData);
for(l=0;l<(512*1500);l++)pData[l]=short(0x8000);//程序中用来表示有无数据,可以
//不用考虑
fp->Seek(info.liDataOffset,CFile:
:
begin);
inti,BEGINPOS,angle;
longpos;
shorttempData[500];
//我的程序要把每一个径向的连续的ZVW数据块读出后再按每个点排列成
//第1个点的ZVW第2个点的ZVW…./第500个点的ZVW
//可以不用考虑
if(radar->scanmode=="PPI")
{
for(angle=0;angle<512;angle++)
{
for(BEGINPOS=0;BEGINPOS<=2;BEGINPOS++)
{
fp->Read(tempData,500L*2);
pos=long(angle*1500+BEGINPOS);
for(i=0;i<500;i++)
{
pData[pos]=tempData[i];
pos+=3;
}
}
}
}
elseif(radar->scanmode=="ZPPI")
{
for(angle=0;angle<512;angle++)
{
fp->Read(tempData,500L*2);
pos=long(angle*1500+0);
for(i=0;i<500;i++)
{
pData[pos]=tempData[i];
pos+=3;
}
}
}
deletefp;
openfilename=filename;
returnTRUE;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//读取数据
//filename:
要打开的文件名
BOOLCRHI:
:
LoadData(CStringfilename)
{
CFile*fp;
CStringstr;
try{
fp=newCFile(filename,CFile:
:
modeRead);
}
catch(CFileException*e){
radar->ProcessFileError(e,1);
returnFALSE;
}
fp->SeekToBegin();
fp->Read(&info,sizeof(WEATHERRADAR));
fp->Seek(218L,CFile:
:
begin);
fp->Read(&vppipara,sizeof(VPPISCANPARAMETER));
rmax=int(vppipara.usMaxL/100);
scanfw=info.usRHIA/100.0;
beginyj=info.sRHIL/100.0;
endyj=info.sRHIH/100.0;
hData=:
:
GlobalAlloc(GHND,512L*1500L*2L);
if(!
hData)
{
AfxMessageBox("内存不足",MB_OK|MB_ICONSTOP);
:
:
GlobalFree(hData);
deletefp;
returnFALSE;
}
pData=(short*):
:
GlobalLock(hData);
longl;
for(l=0;l<(512*1500);l++)pData[l]=short(0x8000);
fp->Seek(info.liDataOffset,CFile:
:
begin);
inti,BEGINPOS,angle;
longpos;
shorttempData[500];
for(angle=0;angle<512;angle++)
{
for(BEGINPOS=0;BEGINPOS<=2;BEGINPOS++)
{
fp->Read(tempData,500L*2);
pos=long(angle*1500+BEGINPOS);
for(i=0;i<500;i++)
{
pData[pos]=tempData[i];
pos+=3;
}
}
}
deletefp;
openfilename=filename;
if(pDC||pmemDC||pbackDC)ChangeDistanceOrHeight(rmax,hmax);
returnTRUE;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//读取数据
//filename:
要打开的文件名
BOOLCVPPI:
:
LoadData(