⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dataexplatformdialog.cpp

📁 自己编的用于ENVI
💻 CPP
📖 第 1 页 / 共 2 页
字号:
////////////////////////////////////////////////////////////////////////////
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 + -