You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

89 lines
2.6 KiB
C

1 month ago
/////////////////////////////////////////////////////////////////////////////
//<2F>ļ<EFBFBD>: Projection.cpp
//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>:
// ͶӰת<D3B0><D7AA>
//
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д: 2008-11-09
//
//
/////////////////////////////////////////////////////////////////////////////
#if !defined(AFX_PROJECTION_H__599FB19F_4D86_44E5_925E_D403A83DDAF5__INCLUDED_)
#define AFX_PROJECTION_H__599FB19F_4D86_44E5_925E_D403A83DDAF5__INCLUDED_
#include "Ellipsoid.h" // Added by ClassView
#include "ProjectionParameter.h" // Added by ClassView
#include "ConformalConic.h"
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define _AREA_NORTH_LATITUDE 0 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <09><>γ
#define _AREA_SOUTH_LATITUDE 1 //<2F>ϰ<EFBFBD><CFB0><EFBFBD> <09><>γ
#define _AREA_EAST_LONGITUDE 0 //<2F><><EFBFBD><EFBFBD>
#define _AREA_WEST_LONGITUDE 1 //<2F><><EFBFBD><EFBFBD>
class AFX_EXT_CLASS CProjection
{
public:
CProjection();
virtual ~CProjection();
public:
CProjection& operator =(CProjection &p);
BOOL Initial(CString projection_file); //<2F>ڳ<EFBFBD>ʼ<EFBFBD><CABC>֮ǰ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBA1A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BOOL Initial(double m_a,double m_f); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1A1A2>ƽ<EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>
void CreateDefaultProjection(CString file); //<2F><><EFBFBD><EFBFBD>ȱʡ<C8B1><CAA1><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
BOOL SetInBasesOut(int coor=_XY_BL_BL, int unit=_XY_BL_DMS);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>γ<EFBFBD><CEB3>
BOOL SetOutBasesIn(int coor=_XY_BL_BL, int unit=_XY_BL_DMS);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>γ<EFBFBD><CEB3>
BOOL SetArgv(const CString ArgvIn, const CString ArgvOut);
BOOL SetOutArgv(const CString ArgvOut); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BOOL SetInArgv(const CString ArgvIn); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CString GetOutArgv();
CString GetInArgv();
int Exchange(CString m_input,CString m_output,char *mode="wt");
int Exchange(char *line);
int Exchange(double *xx, int num);
virtual void SetProgressPos(double dPos);
protected:
void ExchangeToOtherBL(CEllipsoid* pIn, CEllipsoid* pOut, double *xx);
void ExchangeToOtherXYZ(CEllipsoid* pEllipsoid, double *xx);
void ExchangeCustomBL(double *xx);
void ExchangeCustomXY(double *xx);
void ExchangeXY(double *xx);
void ExchangeBL(double *xx);
void Exchange(double *xx);
int Exchange(char *line, double *xx);
public:
void ExchangeOldToNew(double *xx);
void ExchangeToOther(double *xx);
void SetDecimalDigits(int n);
//ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CProjectionLambert m_ConformalConic_in, m_ConformalConic_out;
CProjectionGaussKruger m_in, m_out;
//<2F><><EFBFBD><EFBFBD>
CProjectionParameter xy_in, xy_out;
int m_latitude; //<2F><>γ<EFBFBD><CEB3><EFBFBD><EFBFBD>γ
int m_longitude; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>\<5C><><EFBFBD><EFBFBD>, <20><>γ/<2F><>γ
void SetEarch(int longitudeSel, int latitudeSel);
void GetEarch(int &longitudeSel, int &latitudeSel);
virtual void Serialize(CArchive& ar, short ver);
private:
int decimal_digits;
};
#endif // !defined(AFX_PROJECTION_H__599FB19F_4D86_44E5_925E_D403A83DDAF5__INCLUDED_)