📄 dataexplatformdialog.cpp
字号:
////////////////////////////////////////////////////////////////////////////
void CDataExPlatFormDialog::OnSavedat()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE); //刷新对话框数据
//UpdateData(0);
xStart=m_X;
yStart=m_Y;
iStartNum=m_StartNum;
// 写入文件m_Y
CFileDialog dlg(false,_T("zat"),_T("*.zat"),
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
_T("文本文件 (*.zat)|*.zat|"));
if (dlg.DoModal())
{
CStdioFile *pFile=new CStdioFile;
CString f1,f2,f3,f4,f5,fTemp="";
fTemp=dlg.GetFileName();
switch(m_Direction)
{
case 0:
{
md=-1;
break;
}
case 1:
{
md=1;
break;
}
}
if(fTemp=="")
{
::AfxMessageBox(" The filename is empty!");
}
else
{
pFile->Open(fTemp,CFile::modeWrite | CFile::modeCreate);
//pFile->Open(dlg.GetFileName(),CFile::modeRead);
fTemp.Format("%d",PointNum);
fTemp=fTemp+"\n";
pFile->WriteString(fTemp);
for(int i=0;i<PointNum;i++)
{
f1.Format("%d",iStartNum+md*i);
f2.Format("%d",xStart);
f3.Format("%d",yStart+md*i*100);
f4.Format("%5.1f",mdata[i]);
f5=RecTime[i];
fTemp=f1+" "+f2+" "+f3+" "+f4+" "+f5+"\n";
//fTemp=f1+","+f2+"\n";
pFile->WriteString(fTemp);
}
pFile->Close();
::AfxMessageBox("Mag Data output successed!");
}
}
}
////////////////////////////////////////////////////////////////////////////
//////////////// 以下是ENVI日变数据输出处理程序段 //////////////////////
////////////////////////////////////////////////////////////////////////////
void CDataExPlatFormDialog::OnSavesun()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE); //刷新对话框数据
// 写入文件m_Y
CFileDialog dlg(false,_T("sat"),_T("*.sat"),
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
_T("文本文件 (*.sat)|*.sat|"));
if (dlg.DoModal())
{
CStdioFile *pFile=new CStdioFile;
CString f1,f2,f3,f4,f5,fTemp="";
fTemp=dlg.GetFileName();
if(fTemp=="")
{
::AfxMessageBox(" The filename is empty!");
}
else
{
pFile->Open(dlg.GetFileName(),CFile::modeWrite | CFile::modeCreate);
fTemp.Format("%d",sPointNum-10);
fTemp=fTemp+"\n";
pFile->WriteString(fTemp);
for(int i=5;i<sPointNum-5;i++)
{
f1.Format("%2.6f",sRecTime[i]);
f2.Format("%5.1f",sdata[i]);
fTemp=f1+" "+f2+"\n";
pFile->WriteString(fTemp);
}
pFile->Close();
::AfxMessageBox("Sun Data output successed!");
}
}
}
////////////////////////////////////////////////////////////////////////////
//////////////// 以下是日变数据预处理程序段 //////////////////////
////////////////////////////////////////////////////////////////////////////
bool CDataExPlatFormDialog::ProSunData() //对0处理
{
double ssdata[2000];
double ssRecTime[2000];
int i=0,j=0;
/////////////////////////////////////////////////////////////////////
for(i=0;i<sPointNum;i++)
{
if((sdata[i]<56530.0)&&(sdata[i]>56440.0)) //0元素处理
{
ssdata[j]=sdata[i]-56400.0;
ssRecTime[j]=sRecTime[i];
j++;
}
}
sPointNum=j;
////////////////////////////////////////////////////////////////////
//////////// 中点平滑处理 ////////
////////////////////////////////////////////////////////////////////
for(i=3;i<sPointNum-2;i++)
{
if((ssdata[i]-ssdata[i-1]>7.0)||(ssdata[i]-ssdata[i-1]<-7.0))
ssdata[i]=(ssdata[i+2]+ssdata[i+1]+ssdata[i-1]+ssdata[i-2])/4;
}
//////////////////////////////////////////////////////////////////////////
// 二阶七点圆滑
/////////////////////////////////////////////////////////////////////////
for(i=4;i<sPointNum-3;i++)
{
ssdata[i]=0.3333*ssdata[i];
ssdata[i]=ssdata[i]+0.2857*(ssdata[i-1]+ssdata[i+1]);
ssdata[i]=ssdata[i]+0.1428*(ssdata[i-2]+ssdata[i+2]);
ssdata[i]=ssdata[i]-0.0952*(ssdata[i-3]+ssdata[i+3]);
}
/////////////////////////////////////////////////////////////////////////
// 二阶七点圆滑
/////////////////////////////////////////////////////////////////////////
for(i=4;i<sPointNum-3;i++)
{
ssdata[i]=0.3333*ssdata[i];
ssdata[i]=ssdata[i]+0.2857*(ssdata[i-1]+ssdata[i+1]);
ssdata[i]=ssdata[i]+0.1428*(ssdata[i-2]+ssdata[i+2]);
ssdata[i]=ssdata[i]-0.0952*(ssdata[i-3]+ssdata[i+3]);
}
/////////////////////////////////////////////////////////////////////////
for(i=0;i<sPointNum;i++)
{
sdata[i]=ssdata[i]+56400.0;
sRecTime[i]=ssRecTime[i];
}
return true;
//////////////////////////////////////////////////////////////////////
}
////////////////////////////////////////////////////////////////////////////
//////////////// 以下是CZM-3日变数据文件读取程序段 、//////////////
////////////////////////////////////////////////////////////////////////////
void CDataExPlatFormDialog::OnSunCZM()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
PointNum=m_PointNum;
CFileDialog dlg(TRUE,_T("txt"),_T("*.txt"),
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
_T("文本文件 (*.txT)|*.txt|"));
if (dlg.DoModal())
{
CStdioFile *pFile=new CStdioFile;
CString strTemp="",str1,str2;
int iLong=0;
double fTemp;
strTemp=dlg.GetFileName();
if(strTemp=="")
{
::AfxMessageBox("Filename is empty!");
}
else
{
pFile->Open(dlg.GetFileName(),CFile::modeRead); // 打开文件指针
sPointNum=0;
for(int i=0;i<4;i++)
{
pFile->ReadString(strTemp);
}
pFile->ReadString(strTemp);
iLong=strTemp.GetLength();
while((iLong>30)&&( sPointNum<2000))
{
sdata[sPointNum]=atof(strTemp.Mid(10,8));
str1=strTemp.Mid(20,9);
fTemp=atof(str1.Left(2))+atof(str1.Mid(3,2))/60.0+atof(str1.Mid(6,2))/3600.0;
sRecTime[sPointNum]=fTemp;
pFile->ReadString(strTemp);
iLong=strTemp.GetLength();
sPointNum++;
};
pFile->Close();
}
}
ProSunData();
}
////////////////////////////////////////////////////////////////////////////
//////////////// 以下是G856日变数据文件读取程序段 、//////////////
////////////////////////////////////////////////////////////////////////////
void CDataExPlatFormDialog::OnSunG856()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
PointNum=m_PointNum;
CFileDialog dlg(TRUE,_T("dat"),_T("*.dat"),
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
_T("文本文件 (*.dat)|*.dat|"));
if (dlg.DoModal())
{
CStdioFile *pFile=new CStdioFile;
CString strTemp="",str1,str2;
int iLong=0;
double fTemp;
strTemp=dlg.GetFileName();
if(strTemp=="")
{
::AfxMessageBox("Filename is empty!");
}
else
{
pFile->Open(dlg.GetFileName(),CFile::modeRead); // 打开文件指针
sPointNum=0;
pFile->ReadString(strTemp);
iLong=strTemp.GetLength();
while((iLong>25)&&( sPointNum<2000))
{
sdata[sPointNum]=atof(strTemp.Right(7))/10.0;
str1=strTemp.Mid(9,6);
fTemp=atof(str1.Left(2))+atof(str1.Mid(2,2))/60.0+atof(str1.Right(2))/3600.0;
sRecTime[sPointNum]=fTemp;
pFile->ReadString(strTemp);
iLong=strTemp.GetLength();
sPointNum++;
};
pFile->Close();
}
}
ProSunData();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -