重点讨论北斗的卫星定位情况
选用wuh22021年12月1日的观测文件,对北斗的B1CB2a两个频点改正
else if (sys==SYS_CMP) { /* B1-B2 改为 B1C-B2a */
/*必须精密轨道和钟差一起,不然会出现错误*/
if (opt->sateph==EPHOPT_PREC) {
gamma=SQR(FREQL1/FREQL5);
gamma1=SQR(FREQ1_CMP)/(SQR(FREQ1_CMP)-SQR(FREQ3_CMP));
gamma2=SQR(FREQ3_CMP)/(SQR(FREQ1_CMP)-SQR(FREQ3_CMP));
if (obs->code[0]==CODE_L1P||obs->code[0]==CODE_L1D||obs->code[0]==CODE_L1X)
P1-=(nav->cbias[obs->sat-1][3])-gamma1*nav->cbias[obs->sat-1][6]; /* C1*(C2I->C6I)+(C1X->C6I) B1C */
if (obs->code[1]==CODE_L5D||obs->code[1]==CODE_L5P||
obs->code[1]==CODE_L5X)
P2-=nav->cbias[obs->sat-1][3]-gamma1*nav->cbias[obs->sat-1][6]-nav->cbias[obs->sat-1][0]; /* C1*(C2I->C6I)-(C1X->C5X)+(C1X->C6I) B2a */
return ((P2-gamma*P1)/(1.0-gamma));
}
else {
gamma=SQR(FREQL1/FREQL5);
if (obs->code[0]==CODE_L2I||obs->code[0]==CODE_L2Q||obs->code[0]==CODE_L2X) b1+=gettgd(sat, nav, 0); /* TGD_B1I */
else if (obs->code[1]==CODE_L7I||obs->code[1]==CODE_L7Q||obs->code[1]==CODE_L7D||obs->code[1]==CODE_L7P) b2+=gettgd(sat, nav, 1); /* B2I */
else if (obs->code[0]==CODE_L1D||obs->code[0]==CODE_L1P||obs->code[0]==CODE_L1X||obs->code[0]==CODE_L1S) b1+=nav->cbias[sat-1][3]; /* C1X->C6I B1C */
else if (obs->code[1]==CODE_L5D||obs->code[1]==CODE_L5P||obs->code[1]==CODE_L5X) b2+=nav->cbias[sat-1][3]-nav->cbias[sat-1][0]; /* C1X->C5X C1X->C6I B2a */
//else b1=gettgd(sat,nav,2)+gettgd(sat,nav,4); /* TGD_B1Cp+ISC_B1Cd */
//b2=gettgd(sat,nav,1); /* TGD_B2I/B2bI (m) */
else { b1 = 0; b2 = 0; }
return ((P2-gamma*P1)-(b2-gamma*b1))/(1.0-gamma);
}
else if (sys==SYS_CMP) { /* B1I/B1Cp/B1Cd */
if (opt->sateph == EPHOPT_PREC) {
gamma1=SQR(FREQ1_CMP) / (SQR(FREQ1_CMP) - SQR(FREQ3_CMP));
gamma2=SQR(FREQ3_CMP) / (SQR(FREQ1_CMP) - SQR(FREQ3_CMP));
if (obs->code[0]==CODE_L1P||obs->code[0]==CODE_L1D||obs->code[0]==CODE_L1X)
b1=(nav->cbias[obs->sat-1][3])-gamma1*nav->cbias[obs->sat-1][6]; /* C1*(C2I->C6I)+(C1X->C6I) B1C */
return P1+b1;
}
else {
if (obs->code[0]==CODE_L2I||obs->code[0]==CODE_L2Q||obs->code[0]==CODE_L2X) b1+=gettgd(sat,nav,0); /* TGD_B1I */
else if (obs->code[0]==CODE_L7I||obs->code[0]==CODE_L7Q||obs->code[0]==CODE_L7D||obs->code[0]==CODE_L7P) b1+=gettgd(sat, nav, 1); /* TGD_B2I/B2b */
else if (obs->code[0]==CODE_L1D||obs->code[0]==CODE_L1P||obs->code[0]==CODE_L1X) b1+=nav->cbias[sat-1][3]; /* C1X->C6I B1C */
else if (obs->code[0]==CODE_L5D||obs->code[0]==CODE_L5P||obs->code[0]==CODE_L5X)
{
//if (obs->code[0]==CODE_L5D) b1+=nav->cbias[sat-1][3]; /* C1X->C6I B2a */
//else if (obs->code[0]==CODE_L5P) b1+=nav->cbias[sat-1][3]; /* C1X->C6I B2a */
if (obs->code[0] == CODE_L5X) b1+=nav->cbias[sat-1][3]-nav->cbias[sat-1][3]; /* C1X->C6I-C1X->C5X B2a */
}
//else b1=gettgd(sat,nav,2)+gettgd(sat,nav,4); /* TGD_B1Cp+ISC_B1Cd */
else b1 = 0;
return P1-b1;
}
双频组合和单频定位的改正,对于DCB的读取已经有所说明。
结果分析:
改正前
改正后
上述的异常现象,是因为粗差探测时选取的阈值太小导致的,后续改进,改进后也能提高dcb改进的定位精度。