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

📄 meteoriccorrect.cpp

📁 卫星单点定位程序
💻 CPP
字号:
#include "MeteoricCorrect.h"

//计算对流层延迟量
double GetTropDelay (double *TropDelay,			//对流层延迟量
					 PMETEODATA pmd,			//气象数据
					 PCRDCARTESIAN pcrdSite,	//测站坐标
					 PCRDCARTESIAN pcrdSat)		//卫星坐标
{
/*	double	RH0	= 50;					//参考面的相对湿度
	double	p0	= 1013.25;				//参考面的气压
	double	T0	= 0;					//参考面的干温
	double	H0	= 0;					//参考面的高度
	double	T, p, h, RH, t;				//测站点的气象数据
	double	e;							//水气压
	double	Kd, Kw, hd, hw;
	CRDGEODETIC			cg;				//测站点的大地坐标
*/
	CRDTOPOCENTRIC		ct;				//卫星在测站的站心地平坐标系中的坐标
	CRDTOPOCENTRICPOLAR	ctp;			//卫星在测站的站心地平极坐标系中的坐标
	
	//计算高度角
	CartesianToTopocentric(&ct, pcrdSat, pcrdSite,
		6378137.0000000000, 1/298.257223563);		//以 WGS-84 参考椭球参数计算
	TopocentricToTopocentricPolar(&ctp, &ct);

	//判断 pmd 是否为参考面上的数据,是则计算测站点气象参数
/*	if (pmd->height == 0 && pmd->pressure == 1013.25 && pmd->RH == 50
		&& pmd->temperature == 0)	{
		CartesianToGeodetic(&cg, pcrdSite, 6378137.0000000000, 1/298.257223563);
		h = cg.height;		//取大地高作为正高计算
		RH	= 50 * exp(-0.0006396 * h);
		p	= 1013.25 * pow(1 - 0.0000226 * h, 5.225);
		t	= -0.0065 * h;
	}
	else	{
		h	= pmd->height;
		p	= pmd->pressure;
		RH	= pmd->RH;
		t	= pmd->temperature;
	}	

	//计算延迟量
	T	= t + 273.16;
	e	= RH * exp(-37.2465 + 0.213166 * T - 0.000256908 * T * T);
	hw	= 11000;
	hd	= 40136 + 148.72 * t;
	Kd	= 155.2 * 0.0000001 * p * (hd - h) / T;
	Kw	= 155.2 * 0.0000001 * 4810 * (hd - h) * e / (T * T);
	TropDelay	= Kd / sin(sqrt(ctp.elevation * ctp.elevation + 6.25))
		+ Kw / sin(sqrt(ctp.elevation * ctp.elevation + 2.25));
*/
	*TropDelay	= 2.47 / (sin(ctp.elevation) + 0.0121);

	return ctp.elevation;
}

⌨️ 快捷键说明

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