📄 project.h
字号:
#ifndef _PROJECT_H_
#define _PROJECT_H_
#if _MSC_VER > 1000
#pragma once
#endif //_MSC_VER > 1000
const double PI=3.1415926535897932385;
typedef struct tagRadius //大地椭球半径
{
double R;
double Rm;
double Rv;
double Rf;
// double Rs;
}Radius;
typedef struct tagE_value
{
double e; //大地椭球体的曲率
double e2; //大地椭球体的曲率的平方
double e4; //大地椭球体的曲率的4次方
double e6; //大地椭球体的曲率的6次方
double e8; //大地椭球体的曲率的8次方
}E_value;
/*
struct PRJPARAM
{
BOOL m_bRadius_a; //椭球体长半轴
BOOL m_bRadius_b; //椭球体短半轴
BOOL m_bLatitude1; //标准纬线1
BOOL m_bLatitude2; //标准纬线2
BOOL m_bCentralLatitude; //中央纬线
BOOL m_bCentralLongitude; //中央经线
BOOL m_bCentralAngle; //等高圈
BOOL m_bSouthLatitude; //最南纬线
BOOL m_bZonewidth; //投影带宽
BOOL m_bMapScale; //地图比例尺
};
*/
typedef struct tagPRJXY
{
double x;
double y;
double m;
double n;
double p;
double w;
}PRJXY;
typedef struct tagPRJBL
{
double B; // 纬度
double L; // 经度
}PRJBL;
class CProject
{
protected:
double a; //椭球体长半轴
double b; //椭球体短半轴
double latitude_1; //标准纬线1
double latitude_2; //标准纬线2
double central_latitude; //中央纬线l
double central_longitude; //中央经线
double central_angle; //等高圈
double south_latitude; //最南纬线
double zone_width; //投影带宽
double map_scale; //地图比例尺
public:
CProject();
/*
CProject(double long_radius,double short_radius,
double latitude_1,double latitude_2,double central_latitude,
double central_longitude,double central_angle,
double south_latitude,double zone_width,double map_scale);
*/
// functions for basical project
E_value Get_e();
double r_latitude(double latitude);
double M_longitude(double latitude);
double N_latitude(double latitude);
double U_latitude(double latitude);
Radius Get_R(double latitude);
// functions for project_xy
double Isodistance_S(double latitude);
double Isoangle_Q(double latitude);
double Isosqare_F(double latitude);
// functions for project_bl
double Isodistance_B(double S);
double Isoangle_B(double Q);
double Isosqare_B(double F);
//pure virtual functions for project
virtual PRJXY Project_xy(double latitude,double longitude)=0;
virtual PRJBL Project_bl(double x,double y)=0;
};
// 将度转化为度分秒
double Degree_to_dms(double angle);
// 将度分秒转化为度
double Dms_to_degree(double angle);
// 将度分秒转化为弧度
double Dms_to_arc(double angle);
// 将弧度转化为度分秒
double Arc_to_dms(double angle);
#endif //_PROJECT_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -