main.cpp

来自「卫星单点定位程序」· C++ 代码 · 共 63 行

CPP
63
字号
#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 + =
减小字号Ctrl + -
显示快捷键?