📄 magneticprodoc.cpp
字号:
// 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 + -