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

📄 mapmarikdlg.cpp

📁 能够实现一些常用的地图转换
💻 CPP
字号:
// MapMarikdlg.cpp : implementation file
//

#include "stdafx.h"
#include "CalSurBase.h"
#include "MapMarikdlg.h"
#include "Survey.h"

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

/////////////////////////////////////////////////////////////////////////////
// CMapMarikdlg dialog


CMapMarikdlg::CMapMarikdlg(CWnd* pParent /*=NULL*/)
	: CDialog(CMapMarikdlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CMapMarikdlg)
	m_checkdh = FALSE;
	m_blc = _T("");
	m_map = _T("");
	m_meri = _T("");
	m_newmap = _T("");
	m_oldmap = _T("");
	m_dudai = -1;
	m_geo = -1;
	m_zbx = -1;
	//}}AFX_DATA_INIT
}


void CMapMarikdlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CMapMarikdlg)
	DDX_Check(pDX, IDC_CHECK_DH, m_checkdh);
	DDX_Text(pDX, IDC_EDITBLC, m_blc);
	DDX_Text(pDX, IDC_EDITMAP, m_map);
	DDX_Text(pDX, IDC_EDITMERI, m_meri);
	DDX_Text(pDX, IDC_EDITNEWMAP, m_newmap);
	DDX_Text(pDX, IDC_EDITOLDMAP, m_oldmap);
	DDX_Control(pDX, IDC_MSFLEXGRID_SHOW, m_show);
	DDX_Radio(pDX, IDC_RADIO_DUDAIA, m_dudai);
	DDX_Radio(pDX, IDC_RADIO_GEOA, m_geo);
	DDX_Radio(pDX, IDC_RADIO_ZB54, m_zbx);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CMapMarikdlg, CDialog)
	//{{AFX_MSG_MAP(CMapMarikdlg)
	ON_BN_CLICKED(IDC_BUTTONPOLT, OnButtonpolt)
	ON_BN_CLICKED(IDC_RADIO_GEOA, OnRadioGeoa)
	ON_BN_CLICKED(IDC_RADIO_GEOB, OnRadioGeob)
	ON_BN_CLICKED(IDC_RADIO_ZB54, OnRadioZb54)
	ON_BN_CLICKED(IDC_RADIO_ZB80, OnRadioZb80)
	ON_BN_CLICKED(IDC_CHECK_DH, OnCheckDh)
	ON_BN_CLICKED(IDC_RADIO_DUDAIA, OnRadioDudaia)
	ON_BN_CLICKED(IDC_RADIO_DUDAIB, OnRadioDudaib)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMapMarikdlg message handlers

void CMapMarikdlg::OnOK() 
{
	CSurvey survey;
	double Sb=0,Wl=0;
	double Nb=0,El=0;
	CString strport;
    UpdateData(true);
	if(m_map.IsEmpty()) {return;}
	long lhf=m_map.Find("-");
	m_map.MakeUpper();
	if(lhf>0)
	{
		if(m_map.GetLength()>=3)
		{
			m_newmap=survey.GetNewtfFormOldtf(m_map);
			m_oldmap=m_map;
			survey.SetNewTfCalLL(m_newmap,&Sb,&Wl,&Nb,&El);
		}
	}
	else
	{
		if(m_map.GetLength()==10)
		{
			m_oldmap=survey.GetOldThFormNewTh(m_map);
			m_newmap=m_map;
			survey.SetNewTfCalLL(m_map,&Sb,&Wl,&Nb,&El);
		}
	}

	//设置参数
	survey.GetSysDat(m_zbx+1);
	double zya=0,dh=0;
	long lblc;
	lblc=atol(survey.SetBLC);
	/*if(lblc>10000)
	{  survey.dudai = 6; }
	else
	{  survey.dudai = 3; }
	*/
	if(m_dudai==0)
	{  survey.dudai = 3; }
	else
	{  survey.dudai = 6; }
	survey.BCalMeri(Nb,Sb,survey.dudai,&zya,&dh);
	m_meri.Format("%.4f",zya);
	survey.dmeil_last=(int)zya;
	survey.fdh_last =(int)dh;

	if(m_geo==1)
	{
		WriteGridDate(Sb,El,1);
		WriteGridDate(Nb,El,2);
		WriteGridDate(Nb,Wl,3);
		WriteGridDate(Sb,Wl,4);
	}
	else
	{
		survey.dgetbl_b =El; survey.dgetbl_l =Sb;
		survey.BlToXy();
		if(m_checkdh)
		{  survey.dgety=survey.dgety+dh*1000000;}
		WriteGridDatexy(survey.dgety,survey.dgetx,1);

		survey.dgetbl_b =El; survey.dgetbl_l =Nb;
		survey.BlToXy();
		if(m_checkdh)
		{  survey.dgety=survey.dgety+dh*1000000;}
		WriteGridDatexy(survey.dgety,survey.dgetx,2);

		survey.dgetbl_b =Wl; survey.dgetbl_l =Nb;
		survey.BlToXy();
		if(m_checkdh)
		{  survey.dgety=survey.dgety+dh*1000000;}
		WriteGridDatexy(survey.dgety,survey.dgetx,3);

		survey.dgetbl_b =Wl; survey.dgetbl_l =Sb;
		survey.BlToXy();
		if(m_checkdh)
		{  survey.dgety=survey.dgety+dh*1000000;}
		WriteGridDatexy(survey.dgety,survey.dgetx,4);
	}
	m_blc=survey.SetBLC;
	UpdateData(false);
}

void CMapMarikdlg::OnButtonpolt() 
{
	CString strfilename;
	CFileDialog gldOpenFile(true,"*.*",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"文本文件(*.txt)|*.txt|所有文件(*.*)|*.*|",NULL);
	gldOpenFile.DoModal();
    strfilename=gldOpenFile.GetPathName();
	CStdioFile n_File;
	CFileException e;
	if(!n_File.Open(strfilename,CFile::modeNoTruncate | CFile::modeWrite,&e))  //modeNoTruncate在原文件上添加
	{	
		if(!n_File.Open(strfilename,CFile::modeCreate | CFile::modeWrite,&e))
		{	return;	}
	}
	n_File.SeekToEnd();
    CString strport;
	if(m_zbx==0)
	{  strport=m_newmap+"("+m_oldmap+")   54坐标系\n";}
	else
	{  strport=m_newmap+"("+m_oldmap+")   80坐标系\n";}
	n_File.WriteString(strport);
	strport="比例尺为1:"+m_blc+"   中央经线为:" + m_meri + "\n";
	n_File.WriteString(strport);
	for(int j=1;j<=4;j++)
	{
		m_show.SetRow(j);
		m_show.SetCol(0);
		strport=m_show.GetText();
		m_show.SetCol(1);
		strport=strport+"   "+m_show.GetText();
		m_show.SetCol(2);
		strport=strport+"   "+m_show.GetText();
		strport+="\n";
		n_File.WriteString(strport);
	}
	strport="-----------------------------------------------\n";
	n_File.WriteString(strport);
	strport="-----------------------------------------------\n";
	n_File.WriteString(strport);
	strport="\n";
	n_File.WriteString(strport);
	strport="\n";
	n_File.WriteString(strport);
	n_File.Close();
	ShellExecute(::GetDesktopWindow(), _T("open"), strfilename, NULL, NULL, SW_NORMAL);	
}

void CMapMarikdlg::OnRadioGeoa() 
{
	UpdateData(true);
	CString StrTxt;
	if(m_geo==0)
	{
        StrTxt = "<点号>|<        坐标X        >|<        坐标Y      >";
		m_show.SetCol(0);
		m_show.SetRow(0);
		m_show.SetFormatString(StrTxt);
		m_show.Refresh();
	}
	OnOK();	
}

void CMapMarikdlg::OnRadioGeob() 
{
	UpdateData(true);
	CString StrTxt;
	if(m_geo==1)
	{
		//StrTxt = "< 点号 >|<      坐标X      >|<       坐标Y     >";
		StrTxt = "< 点号>|<  东坐标(经度) >|<  北坐标(纬度) >";
		m_show.SetCol(0);
		m_show.SetRow(0);
		m_show.SetFormatString(StrTxt);
		m_show.Refresh();
	}
	OnOK();	
}

void CMapMarikdlg::OnRadioZb54() 
{
    OnOK();	
}

void CMapMarikdlg::OnRadioZb80() 
{
     OnOK();	
}

void CMapMarikdlg::OnCheckDh() 
{
    OnOK();	
}

void CMapMarikdlg::OnRadioDudaia() 
{
    OnOK();	
}

void CMapMarikdlg::OnRadioDudaib() 
{
    OnOK();	
}

void CMapMarikdlg::WriteGridDate(double jd,double wd,long gridrow)  //写数据
{
	CString strport;
	m_show.SetCol(0);	m_show.SetRow(gridrow);
	strport.Format("%i",gridrow);
	m_show.SetText(strport);
	strport.Format("%.6f",jd);
	m_show.SetCol(1);	m_show.SetText(strport);
	strport.Format("%.6f",wd);
	m_show.SetCol(2);	m_show.SetText(strport);
	m_show.Refresh();
}

void CMapMarikdlg::WriteGridDatexy(double jd,double wd,long gridrow)  //写数据
{
	CString strport;
	m_show.SetCol(0);	m_show.SetRow(gridrow);
	strport.Format("%i",gridrow);
	m_show.SetText(strport);
	strport.Format("%.4f",jd);
	m_show.SetCol(1);	m_show.SetText(strport);
	strport.Format("%.4f",wd);
	m_show.SetCol(2);	m_show.SetText(strport);
	m_show.Refresh();
}

BOOL CMapMarikdlg::OnInitDialog() 
{	
	CDialog::OnInitDialog();
    CString StrTxt;
    m_show.SetCol(0);
	m_show.SetRow(0);
	StrTxt = "<点号>|<        坐标X        >|<       坐标Y      >";
    m_show.SetFormatString(StrTxt);
	m_show.Refresh();

	m_zbx=0;
	m_geo=0;
	m_dudai=0;
	UpdateData(false);	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

⌨️ 快捷键说明

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