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

📄 dlialog2.cpp

📁 用visual c++实现地理信息系统中常用的投影
💻 CPP
字号:
// DLIALOG2.cpp : implementation file
//

#include "stdafx.h"
#include "Projection.h"
#include "DLIALOG2.h"

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

#include <math.h> 
#define T 3.141592653589793

/////////////////////////////////////////////////////////////////////////////
// CDLIALOG2 dialog


CDLIALOG2::CDLIALOG2(CWnd* pParent /*=NULL*/)
	: CDialog(CDLIALOG2::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDLIALOG2)
	m_Bk = 15;
	m_Bn = 25;
	m_Bs = 0;
	m_dB = 5;
	m_dL = 5;
	m_Le = 125;
	m_Lw = 105;
	m_M = 1000000;
	m_L0 = 0;
	//}}AFX_DATA_INIT
}


void CDLIALOG2::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDLIALOG2)
	DDX_Control(pDX, IDC_LIST1, m_List);
	DDX_Text(pDX, IDC_EDIT_Bk, m_Bk);
	DDX_Text(pDX, IDC_EDIT_Bn, m_Bn);
	DDX_Text(pDX, IDC_EDIT_Bs, m_Bs);
	DDX_Text(pDX, IDC_EDIT_dB, m_dB);
	DDX_Text(pDX, IDC_EDIT_dL, m_dL);
	DDX_Text(pDX, IDC_EDIT_Le, m_Le);
	DDX_Text(pDX, IDC_EDIT_Lw, m_Lw);
	DDX_Text(pDX, IDC_EDIT_M, m_M);
	DDX_Text(pDX, IDC_EDIT_L0, m_L0);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDLIALOG2, CDialog)
	//{{AFX_MSG_MAP(CDLIALOG2)
	ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDLIALOG2 message handlers
BOOL CDLIALOG2::OnInitDialog()
{
	CDialog::OnInitDialog();

    m_List.InsertColumn(0,"No",LVCFMT_CENTER,24);
	m_List.InsertColumn(1,"B",LVCFMT_CENTER,50);
	m_List.InsertColumn(2,"L",LVCFMT_CENTER,50);
	m_List.InsertColumn(3,"x",LVCFMT_CENTER,70);
	m_List.InsertColumn(4,"Y",LVCFMT_CENTER,75);
	m_List.InsertColumn(5,"m",LVCFMT_CENTER,55);
	m_List.InsertColumn(6,"n",LVCFMT_CENTER,55);
	m_List.InsertColumn(7,"P",LVCFMT_CENTER,50);
	m_List.InsertColumn(8,"w",LVCFMT_CENTER,50);

	LONG lStyle = m_List.SendMessage(LVM_GETEXTENDEDLISTVIEWSTYLE);       //画表格边框
	lStyle |= LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_HEADERDRAGDROP;
	m_List.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0,	(LPARAM)lStyle);

	
	return TRUE;  // return TRUE  unless you set the focus to a control
}



void CDLIALOG2::OnButton1() 
{
	// TODO: Add your control notification handler code here
	double x=0.0,y=0.0,m=0.0,n=0.0,k=0.0,P=0.0,w=0.0;
	double a1=6378245.0,a2=6356863;
	double b=0.0, bk=0.0, l=0.0, r=0.0, U=0.0, f=0.0, e=0.006694475;
	int    B=0,L=0;
    int    i=0;
    CString str[9];

	UpdateData();
    m_List.DeleteAllItems();

    for(B=(-1)*m_Bs;B<=m_Bn;B+=m_dB)
	{
		for(L=(-1)*m_Lw;L<=m_Le;L+=m_dL)
		{   
		  b=B*T/180.0;
          bk=m_Bk*T/180.0;            //角度->为弧度
		  l=L*T/180.0;
		  
		  
		  e=sqrt((a1*a1-a2*a2)/(a1*a1));
		  U=tan(T/4.0+b/2.0)/pow(tan(T/4.0+asin(e*sin(b))/2.0),e);
           
		  r=a1*cos(b)/sqrt(1.0-e*e*sin(b)*sin(b));
	   	  k=a1*cos(bk)/sqrt(1.0-e*e*sin(bk)*sin(bk));
			
	      x=100.0/m_M*k*log(U);
		  y=100.0/m_M*k*l;
		  m=n=k/r;
		  P=m*m;

          
          m_List.InsertItem(i,"");               //插入列表项
		  str[0].Format("%d",i+1);   m_List.SetItemText(i,0,str[0]);
		  if(B<=0)
		  {
		      str[1].Format("S %d",(-1)*B);     m_List.SetItemText(i,1,str[1]);
		  }
		  else
		  {	
			  str[1].Format("N %d",B);     m_List.SetItemText(i,1,str[1]);
		  }
		  if(L<0)
		  {
			  str[2].Format("W %d",(-1)*L);     m_List.SetItemText(i,2,str[2]);
		  
		  }
		  else
		  {
		      str[2].Format("E %d",L);          m_List.SetItemText(i,2,str[2]);
		  }
		  str[3].Format("%.4f",x);   m_List.SetItemText(i,3,str[3]);
		  str[4].Format("%.4f",y);   m_List.SetItemText(i,4,str[4]);
		  str[5].Format("%.4f",m);   m_List.SetItemText(i,5,str[5]);
		  str[6].Format("%.4f",n);   m_List.SetItemText(i,6,str[6]);
	 	  str[7].Format("%.4f",P);   m_List.SetItemText(i,7,str[7]);
		  str[8].Format("%.4f",w);   m_List.SetItemText(i,8,str[8]);
          
		  i++;
	  
		}
	}
    
	UpdateData(false);

}

⌨️ 快捷键说明

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