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

📄 magneticprodoc.cpp

📁 自己编的用于ENVI
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// MagneticProDoc.cpp : implementation of the CMagneticProDoc class
//

#include "stdafx.h"
#include "MagneticPro.h"
#include "DataExPlatFormDialog.h"
#include "MagneticProDoc.h"
#include "GpsToExChangDialog.h"
#include "MagneticDataTomapGisDialog.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMagneticProDoc

IMPLEMENT_DYNCREATE(CMagneticProDoc, CDocument)

BEGIN_MESSAGE_MAP(CMagneticProDoc, CDocument)
	//{{AFX_MSG_MAP(CMagneticProDoc)
	ON_COMMAND(ID_FILE_OPEN_SUN, OnFileOpenSun)
	ON_COMMAND(ID_FILE_OPEN_MDATA, OnFileOpenMdata)
	ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
	ON_COMMAND(ID_VIEW_T0, OnViewT0)
	ON_COMMAND(ID_DRAW_CMDATA, OnDrawCMdata)
	ON_COMMAND(ID_OUTPUT_MAGDATA, OnOutputMagdata)
	ON_COMMAND(ID_OUTPUT_SDATA, OnOutputSData)
	ON_COMMAND(ID_EXCHANG_EXCH, OnExchangExch)
	ON_COMMAND(ID_VIEW_DAY_CHANG_RECTIFICATION, OnViewDayChangRectification)
	ON_COMMAND(ID_OUTPUT_MRectificationData, OnOutputMRectificationData)
	ON_COMMAND(ID_EXCHANG_GPSTOMAPGIS, OnExchangGpstoMapGis)
	ON_COMMAND(ID_EXCHANG_MAGNETIC, OnExchangMagnetic)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMagneticProDoc construction/destruction

CMagneticProDoc::CMagneticProDoc()
{
	// TODO: add one-time construction code here
    nDay=19;
	nMonth=4;
	dT0=0.0;
	CO=1.0;
    mPointNum=0;
	for(int i=0;i<2000;i++)
	{
		XX[i]=(double)i;
	}
	bRec=false;
}

CMagneticProDoc::~CMagneticProDoc()
{
   //delete [] XX;
}

BOOL CMagneticProDoc::OnNewDocument()
{
	if (!CDocument::OnNewDocument())
		return FALSE;

	// TODO: add reinitialization code here
	// (SDI documents will reuse this document)
    nDay=19;
	nMonth=4;
	dT0=0.0;
	CO=1.0;
    mPointNum=0;
	bGetRealSunData=false;
	for(int i=0;i<2000;i++)
	{
		XX[i]=(double)i;
	}
	bRec=false;
	return TRUE;
}



/////////////////////////////////////////////////////////////////////////////
// CMagneticProDoc serialization

void CMagneticProDoc::Serialize(CArchive& ar)
{
	if (ar.IsStoring())
	{
		// TODO: add storing code here
	}
	else
	{
		// TODO: add loading code here
	}
}

/////////////////////////////////////////////////////////////////////////////
// CMagneticProDoc diagnostics

#ifdef _DEBUG
void CMagneticProDoc::AssertValid() const
{
	CDocument::AssertValid();
}

void CMagneticProDoc::Dump(CDumpContext& dc) const
{
	CDocument::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMagneticProDoc commands
//打开日变数据文件
void CMagneticProDoc::OnFileOpenSun() 
{
	// TODO: Add your command handler code here
		CFileDialog dlg(TRUE,_T("sat"),_T("*.SAT"),
	                 OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
	                 _T("文本文件 (*.SAT)|*.sat|"));
	if(dlg.DoModal())
	{
	   CStdioFile *pFile=new CStdioFile;
       //char strTemp[9];
	   CString strTemp="",str1,str2;
	   
	   strTemp=dlg.GetFileName();
       
	   if(strTemp=="")
	   {
		   ::AfxMessageBox("Filename is empty!");
	   }
	   else
	   {
	     int nHour=0,nMinute=0,nSecond=0;
	     double fTemp,f1,f2;
         sPointNum=0;
		 
		 try
		 {

              pFile->Open(dlg.GetFileName(),CFile::modeRead); // 打开文件指针 
			  
			  pFile->ReadString(strTemp);
			   sPointNum=atoi(strTemp);
	          for(int i=0;i<sPointNum;i++)  
			  {
		        pFile->ReadString(strTemp);
		        m_SData[i].mData=atof(strTemp.Right(8));

                fTemp=atof(strTemp.Left(10));
                 nHour=(int)fTemp;
		        f1=(fTemp-(int)fTemp)*60;
                  nMinute=(int)f1;
                f2=(f1-(int)f1)*60;
                  nSecond=(int)f2;

                CTime TTime(2006,nMonth,nDay,nHour,nMinute,nSecond);
                m_SData[i].sTime=TTime;
		        //sPointNum++;
			  }
			   pFile->Close();

		 }
		 catch(...)
		 {
             ::AfxMessageBox("The format of the file is not match!");

		 }
	   

         ::AfxMessageBox("Sun File Open!");
	    if(dT0>1.0)
		{
          GetRealSunData(m_SData, sPointNum);
          bGetRealSunData=true;
		}
        else
		{
		  AfxMessageBox("I can't get RealSunData!");
		  bGetRealSunData=false;
		}
      } 

	}

}
////////////////////////////////////////////////////////////////////////////
//  打开磁测数据文件,读取数据
////////////////////////////////////////////////////////////////////////////
void CMagneticProDoc::OnFileOpenMdata() 
{
	// TODO: Add your command handler code here
		CFileDialog dlg(TRUE,_T("zat"),_T("*.ZAT"),
	                 OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
	                 _T("文本文件 (*.ZAT)|*.zat|"));
	if (dlg.DoModal()) 
    {
       CStdioFile *pFile=new CStdioFile;
      
	   CString strTemp="",str1,str2;
	   int iRead=3;
	   strTemp=dlg.GetFileName();
	   if(strTemp=="")
	   {
		   ::AfxMessageBox("Filename is empty!");
	   }
	   else
	   {
		   try
		   {

	         int nHour=0,nMinute=0,nSecond=0;
             //mPointNum=0;
             pFile->Open(dlg.GetFileName(),CFile::modeRead); // 打开文件指针  
             pFile->ReadString(strTemp);
			 mPointNum=atoi(strTemp);

	         for(int i=0;i<mPointNum;i++)  
			 {
		      pFile->ReadString(strTemp);
			  str1=strTemp.Right(53);
              m_MData[i].x=atoi(str1.Left(6))/1000.0;
			  str1=strTemp.Right(39);
              m_MData[i].y=atoi(str1.Left(8))/1000.0-4000.0;
              str1=strTemp.Right(24);
              m_MData[i].mData=atof(str1.Left(8));
		      
              str1=strTemp.Right(9);
		      nSecond=atoi(str1.Right(3));
		      nHour=atoi(str1.Left(2));
			  
		      nMinute=atoi(str1.Mid(3,2));
              CTime TTime(2006,nMonth,nDay,nHour,nMinute,nSecond);
              m_MData[i].mTime=TTime;
		 //mPointNum++;
			 }
			 pFile->Close();
		   }
		   catch(...)
		   {
             ::AfxMessageBox("The format of the file is not match!");
		   }

	       ::AfxMessageBox("MData File Open!!");
 
	   }
	   //ASSERT(GridDataPro(fXArray, fMArray));
	} 
	   bRec=false;
}
///////////////////////////////////////////////////////////////////////////////
///////////////   调用以上打开函数,实现打开功能///////////////////////////////
///////////////////////////////////////////////////////////////////////////////
void CMagneticProDoc::OnFileOpen() 
{
	// TODO: Add your command handler code here
	OnFileOpenMdata();
	bRec=false;
}
///////////////////////////////////////////////////////////////////////////////
//                 获得日变数据T0值                                         //
///////////////////////////////////////////////////////////////////////////////
bool CMagneticProDoc::GetSunT0()
{
	double T0[500];  //T0数组,用于存放文件数据
	int iT0Num=0;  // T0文件记录数
    //////////////////////////////////////////////////////////////////////////
	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=31; 
	   //double fTemp;
	 
	   strTemp=dlg.GetFileName();
	   if(strTemp=="")
	   {
		   ::AfxMessageBox("Filename is empty!");
	   }
	   else
	   {

          pFile->Open(dlg.GetFileName(),CFile::modeRead); // 打开文件指针  
          
       
		  pFile->ReadString(strTemp);
		  iLong=strTemp.GetLength();
		  while((iLong>30)&&( iT0Num<2000))
		  {
			 pFile->ReadString(strTemp);
			 iLong=strTemp.GetLength();
			 if(iLong<40)
				 goto s;

			 T0[iT0Num]=atof(strTemp.Mid(30,8));
			 iT0Num++;
             //RecTime[i]=strTemp.Mid(40,9);
		  };
s:	      pFile->Close();
	
	   }
	}
	
	/////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -