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

📄 main.cpp

📁 卫星单点定位程序
💻 CPP
字号:
#include "GetRnxNav.h"
#include "GetRnxO.h"
#include "common.h"
#include "GetSP3.h"
#include "pp.h"

void main()
{
	int i;
	int useless = 0;						//PDOP值大于6的解个数
	char* GMOfilename = "00011951.00O";
	char* GMNfilename = "00011951.00n";
	char* SP3filename = "igs10704.sp3";
	GMN* pGMN;
	GMO* pGMO;
	SP3* pSP3;
	PPRESULT* pp;
	FILE* XYZfile = fopen("xyz.csv","w");
	FILE* NEUfile = fopen("NEU.csv","w");
	CRDCARTESIAN xyz;
	CRDTOPOCENTRIC neu;

	pGMO = (GMO *)GetGMO(GMOfilename);
	pGMN = (GMN *)GetGMN(GMNfilename);
	pSP3 = (SP3 *)GetSP3(SP3filename);
	pp = PP(pGMO, pGMN, pSP3);
	xyz.x = 0;
	xyz.y = 0;
	xyz.z = 0;
	
	//输出笛卡尔坐标,并计算平均坐标
	for (i = 0; i < pp->epoch_num; i++)	{
		if ((pp->result[i].PDOP - 6) > 10e-12)	{
			useless++;
			continue;
		}
		fprintf(XYZfile, "%12.1f,%12.1f,%12.1f,%12.9f,%5.2f\n",
			pp->result[i].crd.x, pp->result[i].crd.y, pp->result[i].crd.z,  
			pp->result[i].clk_bias, pp->result[i].PDOP);
		xyz.x += pp->result[i].crd.x;
		xyz.y += pp->result[i].crd.y;
		xyz.z += pp->result[i].crd.z;
	}
	xyz.x = xyz.x / (pGMO->hdr.epoch_number - useless);
	xyz.y = xyz.y / (pGMO->hdr.epoch_number - useless);
	xyz.z = xyz.z / (pGMO->hdr.epoch_number - useless);

	//将所有笛卡尔坐标转换成以平均坐标为站心的站心地平坐标系并输出到文件
	for (i = 0; i < pp->epoch_num; i++)	{
		if ((pp->result[i].PDOP - 6) > 10e-12)	{
			continue;
		}
		CartesianToTopocentric(&neu, &pp->result[i].crd, &xyz,
			6378137.0000000000, 1/298.257223563);
		fprintf(NEUfile, "%12.1f,%12.1f,%12.1f\n", neu.northing,
			neu.easting, neu.upping);
	}
	fcloseall();

}


⌨️ 快捷键说明

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