📄 rel_pos.c
字号:
t00=odat_t[In0]; t00_=odat_t[In0-1];
dttt=t00-t00_;
if(icon[12]!=1) goto static_end;
if(O_screen==0)
printf("%2d %2d %4.1f %2d %2d %2d %2d\n",hour,minute,sec,odat_n[In0],
sdat_n[In0],ddat_n[In0],tdat_n[In0]);
if(odat_n[In0]==0) goto endI;
if(Islip>=Islips-2){ printf(" Islip\n"); exit(0);}
if(odat_n[In0]==0) icon[19]=I;
if(odat_t[In0]>=rte) icon[19]=I;
iter=0; icon[204]=iter;
/* 组成GPS观测方程 */
eq_dd_s(icon,x01,Height,xhidat,&In0,odat_t,odat_n,id_odat,iodat1,odat1,
sdat,id_sdat,isdat,sdat_n,ddat,id_ddat,iddat,ddat_n,
tdat,id_tdat,itdat,tdat_n,
slips_t,id_slips,
borb,itborb,Tr1,
Fi0,N0,idN0,N0t,N0te1,am,lo,idlo);
/* 组成法方程式 */
edit_norm_dd(icon,idN0,id_slips,N0t,slips_t,am,lo,idlo,idN00,N00,N0tb,
m00,ici,c_dd,an,b1,an_s,b1_s,<pl,<pl_s,
an_s1,b1_s1,<pl_s1,an_k,b1_k,<pl_k);
if(I==Itend-1 || I==icon[19] || odat_t[In0]>=rte-0.2) {
/* 求解方程式和输出信息 */
Iequa_n=icon[207]*10000+icon[202];
if(Run_n==4) {icon[201]=3*(icon[0]-1);
if(icon[30]==2) icon[201]+=icon[0];}
/* 得到 LS 解 */
m0 = ls(fp_docu[1],an_s1,b1_s1,accur,ltpl_s1,icon[201],Iequa_n);
printf("m0= %14.5e\n",m0);
for (j=0;j<icon[201];j++)
printf("%10.3f %10.4f\n",b1_s1[j],accur[j]);
icon[210]=iter; /* iterations number */
icon[211]=Itend-1; /* total epoches number */
w_info(fp_docu[0],x0,b1_s1,accur,m0,icon,Fi0,idN0,N0,N0t);
w_info(stdout,x0,b1_s1,accur,m0,icon,Fi0,idN0,N0,N0t);
DOP(fp_docu[0],icon,Fi,La,an_s1,idN0);
DOP(stdout,icon,Fi,La,an_s1,idN0);
fprintf(stdout,"solution in cartesian/ellipsoid coord. system\n");
fprintf(fp_docu[0],
"solution in cartesian/ellipsoid coord. system\n");
for(i=0;i<icon[0]-1;i++) {
xi=b1_s1[0+i*3]+x01[0+(i+1)*3];
yi=b1_s1[1+i*3]+x01[1+(i+1)*3];
zi=b1_s1[2+i*3]+x01[2+(i+1)*3];
fprintf(stdout,"%16.6f %16.6f %16.6f\n",xi,yi,zi);
fprintf(fp_docu[0],"%16.6f %16.6f %16.6f\n",xi,yi,zi);
fprintf(stdout,"%16.6f %16.6f %16.6f %16.6f\n",
xi-x01[0],yi-x01[1],zi-x01[2],
sqrt((xi-x01[0])*(xi-x01[0])+(yi-x01[1])*(yi-x01[1])
+(zi-x01[2])*(zi-x01[2])));
fprintf(fp_docu[0],"%16.6f %16.6f %16.6f %16.6f\n",
xi-x01[0],yi-x01[1],zi-x01[2],
sqrt((xi-x01[0])*(xi-x01[0])+(yi-x01[1])*(yi-x01[1])
+(zi-x01[2])*(zi-x01[2])));
TRANF(2,&phi,&lambda,&height,&xi,&yi,&zi,0.,0.);
fprintf(stdout,"%16.10f %16.10f %10.6f\n",
phi*180/PI,lambda*180/PI,height);
fprintf(fp_docu[0],"%16.10f %16.10f %10.6f\n",
phi*180/PI,lambda*180/PI,height);
}
if(icon[0]>=3) {
i=0;
xi=b1_s1[0+i*3]+x01[0+(i+1)*3];
yi=b1_s1[1+i*3]+x01[1+(i+1)*3];
zi=b1_s1[2+i*3]+x01[2+(i+1)*3];
i=1;
xi-=b1_s1[0+i*3]+x01[0+(i+1)*3];
yi-=b1_s1[1+i*3]+x01[1+(i+1)*3];
zi-=b1_s1[2+i*3]+x01[2+(i+1)*3];
fprintf(stdout,"%16.6f %16.6f %16.6f ",xi,yi,zi);
fprintf(fp_docu[0],"%16.6f %16.6f %16.6f ",xi,yi,zi);
fprintf(stdout,"dis(2--3)=%10.6f\n",sqrt(xi*xi+yi*yi+zi*zi));
fprintf(fp_docu[0],"dis(2--3)=%10.6f\n",sqrt(xi*xi+yi*yi+zi*zi));
}
/* 为重复应用的输出 */ j=icon[201];
if(Run_n==1||Run_n==2) {
if((fp_docu[3] = fopen("ncancel","w")) == NULL)
{ printf("Cannot open the file : ncancel\n");
exit(0); }
i2=3*(icon[0]-1); if(icon[30]==2) i2+=icon[0];
for (i=i2;i<icon[201];i++) N0te1[i]+=1;
i2=3*(icon[0]-1);if(icon[30]==2) i2+=icon[0];
for (j=0,i=i2;i<icon[201];i++) if(N00_n[i]<50) j+=1;
fprintf(fp_docu[3],"%8d \n",j);
for (i=i2;i<icon[201];i++) {
if(N00_n[i]<N_n) {
fprintf(fp_docu[3],"%8d %8d %8d ",idN0[i],N0t[i],N0te1[i]);
fprintf(fp_docu[3],"%10.4f %8d %8d %9d %14.4f\n",
b1_s1[i],N00_n[i],N0[i],Fi0[i],Fi0[i]-N0[i]+b1_s1[i]);
}}
fclose(fp_docu[3]);
if((fp_docu[3] = fopen("nfiles","w")) == NULL)
{ printf("Cannot open the file : nfiles\n"); exit(0); }
for (i=i2;i<icon[201];i++) {
if(N00_n[i]>=N_n) {
fprintf(fp_docu[3],"%8d %8d %8d ",idN0[i],N0t[i],N0te1[i]);
fprintf(fp_docu[3],"%10.4f %8d %8d %9d %14.4f\n",
b1_s1[i],N00_n[i],N0[i],Fi0[i],Fi0[i]-N0[i]+b1_s1[i]);
}}
fclose(fp_docu[3]);
}
/* 重写文件 conf_name ,为迭代更新坐标 */
if((fp_docu[3] = fopen(conf_name,"r")) == NULL)
{ printf("Cannot open the file : %s\n",conf_name);
exit(0); }
strcat(conf_name,"1");
if((fp_docu[6] = fopen(conf_name,"w")) == NULL)
{ printf("Cannot open the file : %s\n",conf_name);
exit(0); }
j=0; readline:;
i=getline(fp_docu[3],str);
if(strstr(str,"*")) goto readline;
if(i<=2) goto readline;
if(strstr(str,"Coordin")) {
if(j!=0) {
xi=b1_s1[0+(j-1)*3]+x01[0+j*3];
yi=b1_s1[1+(j-1)*3]+x01[1+j*3];
zi=b1_s1[2+(j-1)*3]+x01[2+j*3];
fprintf(fp_docu[6],"%16.4f %16.4f %16.4f ",
xi,yi,zi);
fprintf(fp_docu[6],": Coordinates xyz\n");
}
else fprintf(fp_docu[6],"%s",str);
j+=1;
goto readline;
}
fprintf(fp_docu[6],"%s",str);
if(!strstr(str,"EOF")) goto readline;
fclose(fp_docu[3]); fclose(fp_docu[6]);
/* 模糊度固定 */
if(icon[20]<2 || icon[20]==4 || icon[20]==5) {
if(Ambiguity>=1&&Ambiguity<=5) {
i=icon[201];
printf("Ambifix (KSGSoft)\n");
/* 输入 ambifix() 的改变值 */
ambifix(stdout,an_s1,b1_s1,m0,icon[201],Iequa_n,idN0,N0t,N0te1,
N00_n,Nfixed1);
/* 输出模糊度固定后的值 */
if((fp_docu[3] = fopen("nfilesf","w")) == NULL)
{ printf("Cannot open the file : nfilesf\n"); exit(0); }
for (i=i2;i<icon[201];i++) {
if(N00_n[i]>=N_n) {
fprintf(fp_docu[3],"%8d %8d %8d ",idN0[i],N0t[i],N0te1[i]);
fprintf(fp_docu[3],"%10.4f %8d %8d %9d %14.4f\n",
Nfixed1[i],N00_n[i],N0[i],Fi0[i],Fi0[i]-N0[i]+Nfixed1[i]);
}}
fclose(fp_docu[3]);
/* 输出到 fp_docu[0] */
if(Ratio<2.)
fprintf(fp_docu[0],"KSGSoft fix Ratio = %6.4f < 2.\n",Ratio);
else
fprintf(fp_docu[0],"KSGSoft fix Ratio = %6.4f >= 2.\n",Ratio);
fprintf(fp_docu[0],"KSGSoft best m0 = %6.4f\n",M0best);
fprintf(fp_docu[0],"KSGSoft best ambiguity fixing:\n");
for(i=i2;i<icon[201];i++) fprintf(fp_docu[0],"%3.0f ",Nfixed1[i]);
fprintf(fp_docu[0],"\n");
fprintf(fp_docu[0],"related coord. solution:\n");
for(i=0;i<i2;i++) fprintf(fp_docu[0],"%9.4f ",Nfixed1[i]);
fprintf(fp_docu[0],"\n");
}}
exit(0);
}
if(I-icon[141]==0)exit(0);
static_end:;
}
endI:;
}
#include "rinex.c"
#include "controlf.c"
#include "igs.c"
#include "broad.c"
#include "orbit.c"
#include "tranf.c"
#include "ad_core.c"
#include "eqdd_s.c"
#include "normdd_s.c"
#include "ambifix.c"
#include "singlep.c"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -