|
|
|
|
|
// Ellipsoid.h: interface for the CProjectionGaussKruger class.
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>:
|
|
|
|
|
|
// ͶӰת<D3B0><D7AA>
|
|
|
|
|
|
//
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д: 2008-11-09
|
|
|
|
|
|
//
|
|
|
|
|
|
//
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if !defined(AFX_ELLIPSOID_H__B996064A_B913_4EA7_8BEF_846B8208C897__INCLUDED_)
|
|
|
|
|
|
#define AFX_ELLIPSOID_H__B996064A_B913_4EA7_8BEF_846B8208C897__INCLUDED_
|
|
|
|
|
|
|
|
|
|
|
|
#if _MSC_VER > 1000
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
#endif // _MSC_VER > 1000
|
|
|
|
|
|
|
|
|
|
|
|
#include "ConversionParameter.h"
|
|
|
|
|
|
|
|
|
|
|
|
/* ͶӰ<CDB6><D3B0><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
c:>type Projection.ini
|
|
|
|
|
|
[ellipsoid]
|
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˹<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
1967<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ
|
|
|
|
|
|
1975<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ
|
|
|
|
|
|
1980<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ
|
|
|
|
|
|
WGS-84(GPS<EFBFBD><EFBFBD>λϵͳ)
|
|
|
|
|
|
|
|
|
|
|
|
[WGS-84(GPS<EFBFBD><EFBFBD>λϵͳ)]
|
|
|
|
|
|
a=6378137
|
|
|
|
|
|
1/f=298.257223563
|
|
|
|
|
|
date=1984
|
|
|
|
|
|
append=GPS<EFBFBD><EFBFBD>λϵͳ
|
|
|
|
|
|
|
|
|
|
|
|
[1967<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ]
|
|
|
|
|
|
a=6378160
|
|
|
|
|
|
1/f=298.247167
|
|
|
|
|
|
date=1967
|
|
|
|
|
|
append=1971<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>ֵ
|
|
|
|
|
|
|
|
|
|
|
|
[1975<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ]
|
|
|
|
|
|
a=6378140
|
|
|
|
|
|
1/f=298.257
|
|
|
|
|
|
date=1975
|
|
|
|
|
|
append=1975<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>ֵ
|
|
|
|
|
|
|
|
|
|
|
|
[1980<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ]
|
|
|
|
|
|
a=6378137
|
|
|
|
|
|
1/f=298.257
|
|
|
|
|
|
date=1979
|
|
|
|
|
|
append=1979<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD>Ƽ<EFBFBD>ֵ
|
|
|
|
|
|
|
|
|
|
|
|
[<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˹<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]
|
|
|
|
|
|
a=6378245
|
|
|
|
|
|
1/f=298.3
|
|
|
|
|
|
date=1942
|
|
|
|
|
|
append=<EFBFBD>й<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>CProjectionGaussKruger::Initial("Projection.ini","<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˹<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
//#define PI 3.14159265358979324
|
|
|
|
|
|
//#define RHO (180.0/PI)
|
|
|
|
|
|
|
|
|
|
|
|
class AFX_EXT_CLASS CEllipsoid
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
CEllipsoid();
|
|
|
|
|
|
virtual ~CEllipsoid();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>岻ͬʱ<CDAC><CAB1><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD>ʼ<EFBFBD><CABC>
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>: Initial("Projection.ini","1967<36><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ","1980<38><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ");
|
|
|
|
|
|
int Initial(CString lpFileName, CString lpAppName, CString other);
|
|
|
|
|
|
|
|
|
|
|
|
//lpFileNameΪͶӰ<CDB6><D3B0><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>, lpAppNameͶӰ<CDB6><D3B0><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
int Initial(CString lpFileName,CString lpAppName);
|
|
|
|
|
|
int Initial(double m_a,double m_f);
|
|
|
|
|
|
|
|
|
|
|
|
CEllipsoid& operator =(CEllipsoid &es);
|
|
|
|
|
|
|
|
|
|
|
|
//L=<3D><><EFBFBD>ȣ<EFBFBD>B=γ<>ȣ<EFBFBD>(X,Y,Z)ֱ<><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void toBLH(double &XX,double &YY,double &ZZ); //
|
|
|
|
|
|
void toXYZ(double &B,double &L,double &H); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
double GetB(double &XX,double &YY,double &ZZ);
|
|
|
|
|
|
double GetM(double B); //<2F><><EFBFBD><EFBFBD>Ȧ<EFBFBD><C8A6><EFBFBD>ʰ뾶
|
|
|
|
|
|
double GetN(double B); //î<><C3AE>Ȧ<EFBFBD><C8A6><EFBFBD>ʰ뾶
|
|
|
|
|
|
double GetR(double B); //ƽ<><C6BD><EFBFBD><EFBFBD><EFBFBD>ʰ뾶
|
|
|
|
|
|
double GetRA(double B); //<2F><><EFBFBD>ⷨ<EFBFBD><E2B7A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʰ뾶
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
CConversionParameter cp;//<2F><>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
double pre;
|
|
|
|
|
|
double A0,B0,C0,D0;
|
|
|
|
|
|
double e2; //<2F><>
|
|
|
|
|
|
double a; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
double f; //<2F><>ƽ<EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD> f=(a-b)/a f=1/f
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
int Initial();
|
|
|
|
|
|
double arc_length_of_meridian(double B); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DFBB><EFBFBD>
|
|
|
|
|
|
double arc_length_of_meridian_reverse(double s);
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
//***************************** <20><>˹<EFBFBD><CBB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><F1A3A8BA><EFBFBD>ī<EFBFBD><C4AB><EFBFBD>У<EFBFBD>ͶӰ *******************
|
|
|
|
|
|
class AFX_EXT_CLASS CProjectionGaussKruger : public CEllipsoid
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
CProjectionGaussKruger();
|
|
|
|
|
|
CProjectionGaussKruger(double m_a,double m_f); //m_aΪ<61><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><F2B3A4B0><EFBFBD>,m_fΪ<66><CEAA>ƽ<EFBFBD><C6BD>
|
|
|
|
|
|
virtual ~CProjectionGaussKruger();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>˹ͶӰ<CDB6><D3B0><EFBFBD><EFBFBD><EFBFBD>任
|
|
|
|
|
|
int GaussBL(double &x,double &y); //<2F><>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>
|
|
|
|
|
|
int GaussXY(double &B,double &L);
|
|
|
|
|
|
int GaussXY(double &B, double &L,double L0); //<2F><>λΪ<CEBB><CEAA>
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif // !defined(AFX_ELLIPSOID_H__B996064A_B913_4EA7_8BEF_846B8208C897__INCLUDED_)
|