} /* read antenna file ---------------------------------------------------------*/ static void readant(vt_t *vt, prcopt_t *opt, nav_t *nav) { const pcv_t pcv0={0}; pcvs_t pcvr={0},pcvs={0}; pcv_t *pcv; gtime_t time=timeget(); int i; trace(3,"readant:\n"); opt->pcvr[0]=opt->pcvr[1]=pcv0; if (!*filopt.rcvantp) return; if (readpcv(filopt.rcvantp,&pcvr)) { for (i=0;i<2;i++) { if (!*opt->anttype[i]) continue; if (!(pcv=searchpcv(0,opt->anttype[i],time,&pcvr))) { printvt(vt,"no antenna %s in %s",opt->anttype[i],filopt.rcvantp); continue; } opt->pcvr[i]=*pcv; } } else printvt(vt,"antenna file open error %s",filopt.rcvantp); if (readpcv(filopt.satantp,&pcvs)) { for (i=0;i<MAXSAT;i++) { if (!(pcv=searchpcv(i+1,"",time,&pcvs))) continue; nav->pcvs[i]=*pcv; } } else printvt(vt,"antenna file open error %s",filopt.satantp);
/* open procssing session ----------------------------------------------------*/ static int openses(const prcopt_t *popt, const solopt_t *sopt, const filopt_t *fopt, nav_t *nav, pcvs_t *pcvs, pcvs_t *pcvr) { char *ext; trace(3,"openses :\n"); /* read satellite antenna parameters */ if (*fopt->satantp&&!(readpcv(fopt->satantp,pcvs))) { showmsg("error : no sat ant pcv in %s",fopt->satantp); trace(1,"sat antenna pcv read error: %s\n",fopt->satantp); return 0; } /* read receiver antenna parameters */ if (*fopt->rcvantp&&!(readpcv(fopt->rcvantp,pcvr))) { showmsg("error : no rec ant pcv in %s",fopt->rcvantp); trace(1,"rec antenna pcv read error: %s\n",fopt->rcvantp); return 0; } /* read dcb parameters */ if (*fopt->dcb) { readdcb(fopt->dcb,nav); } /* read ionosphere data file */ if (*fopt->iono&&(ext=strrchr(fopt->iono,'.'))) { if (strlen(ext)==4&&(ext[3]=='i'||ext[3]=='I')) { readtec(fopt->iono,nav,0); } #ifdef EXTSTEC else if (!strcmp(ext,".stec")||!strcmp(ext,".STEC")) { stec_read(fopt->iono,nav); } #endif } /* open geoid data */ if (sopt->geoid>0&&*fopt->geoid) { if (!opengeoid(sopt->geoid,fopt->geoid)) { showmsg("error : no geoid data %s",fopt->geoid); trace(2,"no geoid data %s\n",fopt->geoid); } } /* read erp data */ if (*fopt->eop) { if (!readerp(fopt->eop,&nav->erp)) { showmsg("error : no erp data %s",fopt->eop); trace(2,"no erp data %s\n",fopt->eop); } } return 1; }
static void RtkServer__readsatant(JNIEnv* env, jclass thiz, jstring file) { struct native_ctx_t *nctx; pcvs_t pcvs={0}; pcv_t *pcv; int i; gtime_t now=timeget(); nctx = (struct native_ctx_t *)(uintptr_t)(*env)->GetLongField(env, thiz, m_object_field); if (nctx == NULL) { LOGV("nctx is null"); return; } const char *filename = (*env)->GetStringUTFChars(env, file, 0); rtksvrlock(&nctx->rtksvr); if (readpcv(filename,&pcvs)) { for (i=0;i<MAXSAT;i++) { if (!(pcv=searchpcv(i+1,"",now,&pcvs))) continue; nctx->rtksvr.nav.pcvs[i]=*pcv; } } rtksvrunlock(&nctx->rtksvr); (*env)->ReleaseStringUTFChars(env,file, filename); }
/* read satellite antenna parameters ------------------------------------------- * read satellite antenna parameters * args : char *file I antenna parameter file * gtime_t time I time * nav_t *nav IO navigation data * return : status (1:ok,0:error) * notes : only support antex format for the antenna parameter file *-----------------------------------------------------------------------------*/ extern int readsap(const char *file, gtime_t time, nav_t *nav) { pcvs_t pcvs={0}; pcv_t pcv0={0},*pcv; int i; trace(3,"readsap : file=%s time=%s\n",file,time_str(time,0)); if (!readpcv(file,&pcvs)) return 0; for (i=0;i<MAXSAT;i++) { pcv=searchpcv(i+1,"",time,&pcvs); nav->pcvs[i]=pcv?*pcv:pcv0; } free(pcvs.pcv); return 1; }
//--------------------------------------------------------------------------- void __fastcall TOptDialog::ReadAntList(void) { AnsiString AntPcvFile_Text=AntPcvFile->Text; TStringList *list; pcvs_t pcvs={0}; char *p; if (!readpcv(AntPcvFile_Text.c_str(),&pcvs)) return; list=new TStringList; list->Add(""); list->Add("*"); for (int i=0;i<pcvs.n;i++) { if (pcvs.pcv[i].sat) continue; if ((p=strchr(pcvs.pcv[i].type,' '))) *p='\0'; if (i>0&&!strcmp(pcvs.pcv[i].type,pcvs.pcv[i-1].type)) continue; list->Add(pcvs.pcv[i].type); } RovAnt->Items=list; RefAnt->Items=list; free(pcvs.pcv); }
/* main ----------------------------------------------------------------------*/ int main(int argc, char **argv) { FILE *fp=stdout; pcvs_t pcvs={0}; nav_t nav={0}; obs_t obs={0}; sta_t sta={{0}}; pcv_t *pcv=NULL; gtime_t ts={0},te={0}; double eps[6]={0},epe[6]={0},rr[3]={0},tint=30.0; char *ifile[32],*ofile="",*afile="",*dfile="",ant[64]=""; int i,j,n=0; for (i=1;i<argc;i++) { if (!strcmp(argv[i],"-ts")&&i+2<argc) { sscanf(argv[++i],"%lf/%lf/%lf",eps,eps+1,eps+2); sscanf(argv[++i],"%lf:%lf:%lf",eps+3,eps+4,eps+5); } else if (!strcmp(argv[i],"-te")&&i+2<argc) { sscanf(argv[++i],"%lf/%lf/%lf",epe,epe+1,epe+2); sscanf(argv[++i],"%lf:%lf:%lf",epe+3,epe+4,epe+5); } else if (!strcmp(argv[i],"-ti")&&i+1<argc) { tint=atof(argv[++i]); } else if (!strcmp(argv[i],"-r")&&i+3<argc) { for (j=0;j<3;j++) rr[j]=atof(argv[++i]); } else if (!strcmp(argv[i],"-o")&&i+1<argc) ofile=argv[++i]; else if (!strcmp(argv[i],"-a")&&i+1<argc) afile=argv[++i]; else if (!strcmp(argv[i],"-d")&&i+1<argc) dfile=argv[++i]; else ifile[n++]=argv[i]; } /* open output file */ if (*ofile&&!(fp=fopen(ofile,"w"))) { fprintf(stderr,"output file open error: %s\n",ofile); return -1; } if (eps[2]>=1.0) ts=epoch2time(eps); if (epe[2]>=1.0) te=epoch2time(epe); /* read rinex obs/nav */ for (i=0;i<n;i++) { fprintf(stderr,"reading: %s\n",ifile[i]); readrnxt(ifile[i],1,ts,te,0.0,"",&obs,&nav,&sta); if (*sta.antdes) strcpy(ant,sta.antdes); if (norm(sta.pos,3)>0.0) matcpy(rr,sta.pos,3,1); } if (!sortobs(&obs)) { fprintf(stderr,"no observation data\n"); return -1; } uniqnav(&nav); /* read antenna file */ if (*afile&&*ant) { if (!readpcv(afile,&pcvs)) { fprintf(stderr,"antenna file open error: %s\n",afile); return -1; } /* search pcv */ if (!(pcv=searchpcv(0,ant,obs.data[0].time,&pcvs))) { fprintf(stderr,"no antenna parmeter: %s\n",ant); } } /* read p1-c1 dcb parameters */ if (*dfile) readdcb(dfile,&nav); /* set p1-p2 dcb parameters */ for (i=0;i<MAXSAT;i++) { for (j=0;j<nav.n;j++) { if (nav.eph[j].sat!=i+1) continue; nav.cbias[i][0]=nav.eph[j].tgd[0]*CLIGHT; break; } } /* estimate ionosphere parameters */ est_iono(&obs,&nav,pcv,rr,tint,fp); fclose(fp); if (*ofile) fprintf(stderr,"output: %s\n",ofile); return 0; }