📄 main.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 + -