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

📄 survey.h

📁 能够实现一些常用的地图转换
💻 H
字号:
// Survey.h: interface for the CSurvey class.
/*/////////////////////////////////////////////////////////////////////////////
本类用以处理工程测量中测量计算,如测量坐标换代、计算高斯坐标计算经纬度、经纬度
计算高斯平面坐标等工程测量中的应用。
*/
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_SURVEY_H__7B545141_C81D_11D5_AA63_0000E86D0FFA__INCLUDED_)
#define AFX_SURVEY_H__7B545141_C81D_11D5_AA63_0000E86D0FFA__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

struct typePoint
{
	double x;
	double y;
};

class CSurvey  
{
public:
	CSurvey();
	virtual ~CSurvey();
public:
    typePoint point54[4];
	//struct point point54[4];
    double pi;

	double cs_a, cs_b, cs_f, cs_E, cs_e1, cs_e2;  //系统参数

	double dsetx,dsety;   //设置坐标  dsetx小数7位,dsety大数8位  注意:在做计算时要将坐标的代号去掉
	double dgetx,dgety;   //转换坐标
	double dgetbl_b,dgetbl_l;  //该坐标的经纬度  dgetbl_b纬度,dgetbl_l经度
	double dgetsd;
	double dthwith,dthlengh;   //分幅的长和宽  df,db

	int dmerl,fdh;     //中央子午线,代号
	int dmeil_last,fdh_last;   //转换后的中央子午线,代号
	int dudai;         //3度带或6度带
	CString eltf1,eltf2,eltf3,eltf4,eltf5,eltf6,eltf7,eltf8;   //图号的八邻图号

	CString SetBLC;   //计算图幅比例尺

public:
    void GetSysDat(int sel/*1代表54系;2代表80系;3代表GPS 72系*/); //设置系统参数
	BOOL GetFdh();  //根据Y坐标计算中央子午线和代号
    double Blength(double xx);
    double Calb(double b, double a0, double a1, double a2, double a3);
	CString DMS(double datab);   //将度转换成度分秒
    double Deg(double datab);    //将度分秒数据转换成度
	double Rmax(double datab);
	double Slength(double jwd);
	BOOL XyToBl();   //大地坐标计算地理坐标 dsetx为大数,dsety为小数
	BOOL BlToXy();   //地理坐标计算大地坐标 dgetbl_b为经度,dgetbl_l为纬度
	void GetReduceNewth(CString strnewtf,char* top,int* jw,char* sc,int* row,int* col);//分解新图号
	CString GetOldThFormNewTh(CString strnewtf);   //利用新图号计算旧图号
	CString GetBLCFormOldMap(CString stroldmap);   //利用旧图号获得比例尺
	CString GetNewtfFormOldtf(CString stroldtf);   //利用旧图号计算新图号
	void SetStandardBLC(int BLC,double* db,double* df);   //利用比例尺确定分幅的经差和纬差
    void CalLngLat(CString strnewtf,double* f1,double* b1);  //根据新图号计算经纬度。
	void SetNewTfCalLL(CString strnewtf,double* Sb,double* Wl,double* Nb,double* El);//根据新图号计算经纬度。
	void BCalMeri(double jdB,double jdmin,int daihao,double* reMeri,double* redh);  //计算中央子午线
	CString GetThCalLat(double jd,double wd,int sel/*1为50万;2为25万*/);  //利用经纬度计算50万和25万图号
	CString GetThCalLatEF(double jd,double wd,int sel/*4为5万;5为2.5万*/);  //5万和2.5万
	CString GetThCalLatADGH(double jd,double wd,int sel/*0 100w,3 10w,6 1w,7 5千*/);  //100万、10万、1万、5千
	BOOL GeteightThao(CString strtf);   //根据图号计算八邻图号'旧图号'
	BOOL TransTwoContrlXy(typePoint old1,typePoint old2,typePoint new1,typePoint new2,
		                  double* s1,double* s2,double* s3,double* s4);  //自由坐标系转换坐标参数
	void TransXy(typePoint oldpoint,typePoint* newpoint,
		                  double s1,double s2,double s3,double s4);   //坐标转换
	BOOL CalLineCut(struct typePoint point1,struct typePoint point2,double GridData,double* GetData,bool bfxy);  //计算直线的交点
	void ExportKilometreGrid(CString filename,CString tkcode,CString lcode);   //输出公里格网E00文件
	int ExData(double data,double* data1);   //确定数据大小
    BOOL GetMaxMinData(double* minx,double* miny,double* maxx,double* maxy);   //四坐标中的最大与最小
	void ExportKilometreGridMapInof(CString filename,CString tkcode,CString lcode);   //输出公里格网Mapinfo文件MIF格式
	void ExportKilometreGridAml(CString filename);   //输出公里格网生成Aml文件
	void ExportTicaml(CString filename);
};

#endif // !defined(AFX_SURVEY_H__7B545141_C81D_11D5_AA63_0000E86D0FFA__INCLUDED_)

⌨️ 快捷键说明

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