|
|
|
|
// LineSectDisAZDlg.cpp : ʵ<><CAB5><EFBFBD>ļ<EFBFBD>
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
#include "stdafx.h"
|
|
|
|
|
#include "LineSectDisAZDlg.h"
|
|
|
|
|
//#include "afxdialogex.h"
|
|
|
|
|
#include "Globe.h"
|
|
|
|
|
#include <math.h>
|
|
|
|
|
|
|
|
|
|
// CLineSectDisAZDlg <20>Ի<EFBFBD><D4BB><EFBFBD>
|
|
|
|
|
|
|
|
|
|
IMPLEMENT_DYNAMIC(CLineSectDisAZDlg, CDialog)
|
|
|
|
|
|
|
|
|
|
CLineSectDisAZDlg::CLineSectDisAZDlg(CWnd* pParent /*=NULL*/)
|
|
|
|
|
: CDialog(CLineSectDisAZDlg::IDD, pParent)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
m_strAZAngleFromOrg = _T("");
|
|
|
|
|
m_strDistanceFromOrg = _T("");
|
|
|
|
|
m_strSectAZAngle = _T("");
|
|
|
|
|
m_strSectDistance = _T("");
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ľ<EFBFBD>γ<EFBFBD><CEB3>
|
|
|
|
|
m_sectStartLon = 0; //<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
m_sectStartLat = 0; //γ<><CEB3>
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ν<EFBFBD><CEBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD>γ<EFBFBD><CEB3>
|
|
|
|
|
m_sectEndLon = 0; //<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
m_sectEndLat = 0; //γ<><CEB3>
|
|
|
|
|
|
|
|
|
|
//<2F>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ɺ<EFBFBD><C9BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>α༭
|
|
|
|
|
m_bFirstLineSectDesign = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CLineSectDisAZDlg::~CLineSectDisAZDlg()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CLineSectDisAZDlg::DoDataExchange(CDataExchange* pDX)
|
|
|
|
|
{
|
|
|
|
|
CDialog::DoDataExchange(pDX);
|
|
|
|
|
DDX_Text(pDX, IDC_EDIT_ORG_AZ_ANGLE, m_strAZAngleFromOrg);
|
|
|
|
|
DDX_Text(pDX, IDC_EDIT_ORG_DISTANCE, m_strDistanceFromOrg);
|
|
|
|
|
DDX_Text(pDX, IDC_EDIT_SECT_AZ_ANGLE, m_strSectAZAngle);
|
|
|
|
|
DDX_Text(pDX, IDC_EDIT_SECT_DISTANCE, m_strSectDistance);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CLineSectDisAZDlg, CDialog)
|
|
|
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// CLineSectDisAZDlg <20><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BOOL CLineSectDisAZDlg::OnInitDialog()
|
|
|
|
|
{
|
|
|
|
|
CDialog::OnInitDialog();
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
|
|
|
|
SetWindowPos( &CWnd::wndTop, m_rcShowArea.left, m_rcShowArea.top, 0, 0, SWP_NOSIZE | SWP_NOACTIVATE | SWP_HIDEWINDOW );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
|
|
|
// <20>쳣: OCX <20><><EFBFBD><EFBFBD>ҳӦ<D2B3><D3A6><EFBFBD><EFBFBD> FALSE
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɺ<EFBFBD><C9BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
void CLineSectDisAZDlg::SetLineSectStatus()
|
|
|
|
|
{
|
|
|
|
|
if (m_bFirstLineSectDesign)
|
|
|
|
|
{
|
|
|
|
|
m_bFirstLineSectDesign = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
m_sectStartLon = m_sectEndLon;
|
|
|
|
|
m_sectStartLat = m_sectEndLat;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>뺽<EFBFBD><EBBABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
//<2F><><EFBFBD>룺<EFBFBD><EBA3BA><EFBFBD><EFBFBD>lon<6F><6E>γ<EFBFBD><CEB3>lat
|
|
|
|
|
void CLineSectDisAZDlg::InputPointCoordinate(const double lon, const double lat)
|
|
|
|
|
{
|
|
|
|
|
double distance = 0;
|
|
|
|
|
double angle = 0;
|
|
|
|
|
|
|
|
|
|
if (fabs(lon)<0.001 || fabs(lat)<0.001)
|
|
|
|
|
{
|
|
|
|
|
m_strDistanceFromOrg = _T("");
|
|
|
|
|
m_strAZAngleFromOrg = _T("");
|
|
|
|
|
|
|
|
|
|
m_strSectAZAngle = _T(""); //<2F><><EFBFBD>εķ<CEB5>λ<EFBFBD><CEBB>
|
|
|
|
|
m_strSectDistance = _T(""); //<2F><><EFBFBD>ε<EFBFBD>ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
UpdateData(FALSE);
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>վ<EFBFBD>ľ<EFBFBD><C4BE><EFBFBD><EFBFBD>ͷ<EFBFBD>λ<EFBFBD><CEBB>
|
|
|
|
|
ShowPtInfoFromGCS(lon, lat);
|
|
|
|
|
|
|
|
|
|
//<2F>º<EFBFBD><C2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
if (m_bFirstLineSectDesign)
|
|
|
|
|
{
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
m_sectStartLon = lon;
|
|
|
|
|
m_sectStartLat = lat;
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ξ<EFBFBD><CEBE><EFBFBD><EFBFBD>ͷ<EFBFBD>λ<EFBFBD><CEBB>
|
|
|
|
|
m_strSectAZAngle = _T(""); //<2F><><EFBFBD>εķ<CEB5>λ<EFBFBD><CEBB>
|
|
|
|
|
m_strSectDistance = _T(""); //<2F><><EFBFBD>ε<EFBFBD>ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD>
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
//<2F><><EFBFBD>ν<EFBFBD><CEBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
m_sectEndLon = lon;
|
|
|
|
|
m_sectEndLat = lat;
|
|
|
|
|
|
|
|
|
|
//<2F><>ʾ<EFBFBD><CABE><EFBFBD>ε<EFBFBD>ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>λ<EFBFBD><CEBB>
|
|
|
|
|
CalculateTwoPtsDistanceAzimuth(distance, angle, m_sectStartLon, m_sectStartLat, m_sectEndLon, m_sectEndLat, 3);
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ξ<EFBFBD><CEBE><EFBFBD><EFBFBD>ͷ<EFBFBD>λ<EFBFBD><CEBB>
|
|
|
|
|
m_strSectDistance.Format(_T("%.1fm"),distance); //<2F><><EFBFBD>ε<EFBFBD>ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD>
|
|
|
|
|
m_strSectAZAngle.Format( _T("%.1f"),angle); //<2F><><EFBFBD>εķ<CEB5>λ<EFBFBD><CEBB>
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
UpdateData(FALSE);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3>ƶ<EFBFBD><C6B6>Ի<EFBFBD><D4BB><EFBFBD><F2B5BDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|
|
|
|
void CLineSectDisAZDlg::MoveToGivenArea(const CRect rcArea)
|
|
|
|
|
{
|
|
|
|
|
m_rcShowArea.left = rcArea.right-190;
|
|
|
|
|
m_rcShowArea.right = rcArea.right;
|
|
|
|
|
|
|
|
|
|
m_rcShowArea.top = rcArea.top+20;
|
|
|
|
|
m_rcShowArea.bottom = m_rcShowArea.top+100;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>;<3B><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD><EFBFBD>ͷ<EFBFBD>λ<EFBFBD><CEBB>
|
|
|
|
|
//<2F><><EFBFBD>룺<EFBFBD><EBA3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>꣬<EFBFBD><EAA3AC><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>lon
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>꣬γ<EAA3AC><CEB3>ֵ<EFBFBD><D6B5>lat
|
|
|
|
|
void CLineSectDisAZDlg::ShowPtInfoFromGCS(const double lon, const double lat)
|
|
|
|
|
{
|
|
|
|
|
//<2F>жϵ<D0B6><CFB5><EFBFBD>վλ<D5BE>õ<EFBFBD><C3B5><EFBFBD>Ч<EFBFBD><D0A7>
|
|
|
|
|
if ((fabs(g_gcsLon) < 0.001) || (fabs(g_gcsLat) < 0.001) )
|
|
|
|
|
{
|
|
|
|
|
m_strDistanceFromOrg = _T("");
|
|
|
|
|
m_strAZAngleFromOrg = _T("");
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
double distance = 0;
|
|
|
|
|
double angle = 0;
|
|
|
|
|
|
|
|
|
|
//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>վ<EFBFBD><D5BE>ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>λ<EFBFBD><CEBB>
|
|
|
|
|
CalculateTwoPtsDistanceAzimuth(distance, angle, g_gcsLon, g_gcsLat, lon, lat, 3);
|
|
|
|
|
|
|
|
|
|
//ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD>
|
|
|
|
|
m_strDistanceFromOrg.Format(_T("%.1fm"),distance);
|
|
|
|
|
|
|
|
|
|
//<2F><>λ<EFBFBD><CEBB>
|
|
|
|
|
m_strAZAngleFromOrg.Format(_T("%.1f"),angle);
|
|
|
|
|
}
|
|
|
|
|
}
|