- filopt_t:文件选项,存结果输出,Trace,各种改正文件路径,不包括星历文件和观测文件。
- solopt_t:结果选项,可以设置结果输出形式(ENU,ECEF,NMEA,BLH),小数位数,是否输出头文件,是否输出速度等。
- prcopt_t:处理选项,是配置的重头戏。
filopt_t
typedef struct { /* file options type */
char satantp[MAXSTRPATH]; /* satellite antenna parameters file */
char rcvantp[MAXSTRPATH]; /* receiver antenna parameters file */
char stapos [MAXSTRPATH]; /* station positions file */
char geoid [MAXSTRPATH]; /* external geoid data file */
char iono [MAXSTRPATH]; /* ionosphere data file */
char dcb [MAXSTRPATH]; /* dcb data file */
char eop [MAXSTRPATH]; /* eop data file */
char blq [MAXSTRPATH]; /* ocean tide loading blq file */
char tempdir[MAXSTRPATH]; /* ftp/http temporaly directory */
char geexe [MAXSTRPATH]; /* google earth exec file */
char solstat[MAXSTRPATH]; /* solution statistics file */
char trace [MAXSTRPATH]; /* debug trace file */
} filopt_t;
- satantp:卫星天线文件
- rcvantp:接收机天线文件
- stapos:测站坐标文件
- geoid:外部水准面文件
- iono:电离层IONEX文件
- dcb:差分码偏差DCB文件
- eop:eop文件
- blq:潮汐文件
- tempdir:FTP/HTTP临时目录
- geexe:谷歌地球文件
- solstat:结果输出路径
- trace:Trace输出路径
solopt_t
typedef struct { /* solution options type */
int posf; /* solution format (SOLF_???) */
int times; /* time system (TIMES_???) */
int timef; /* time format (0:sssss.s,1:yyyy/mm/dd hh:mm:ss.s) */
int timeu; /* time digits under decimal point */
int degf; /* latitude/longitude format (0:ddd.ddd,1:ddd mm ss) */
int outhead; /* output header (0:no,1:yes) */
int outopt; /* output processing options (0:no,1:yes) */
int datum; /* datum (0:WGS84,1:Tokyo) */
int height; /* height (0:ellipsoidal,1:geodetic) */
int geoid; /* geoid model (0:EGM96,1:JGD2000) */
int solstatic; /* solution of static mode (0:all,1:single) */
int sstat; /* solution statistics level (0:off,1:states,2:residuals) */
int trace; /* debug trace level (0:off,1-5:debug) */
double nmeaintv[2]; /* nmea output interval (s) (<0:no,0:all) */
/* nmeaintv[0]:gprmc,gpgga,nmeaintv[1]:gpgsv */
char sep[64]; /* field separator */
char prog[64]; /* program name */
} solopt_t;
- opsf:结果格式
#define SOLF_LLH 0 /* solution format: lat/lon/height */
#define SOLF_XYZ 1 /* solution format: x/y/z-ecef */
#define SOLF_ENU 2 /* solution format: e/n/u-baseline */
#define SOLF_NMEA 3 /* solution format: NMEA-183 */
#define SOLF_GSIF 4 /* solution format: GSI-F1/2/3 */
- times:时间系统
#define TIMES_GPST 0 /* time system: gps time */
#define TIMES_UTC 1 /* time system: utc */
#define TIMES_JST 2 /* time system: jst */
- timef:时间格式(0:秒,1:年月日 时分秒)
- timeu:时间小数位数
- degf:纬度/经度格式(0:ddd.ddd, 1:ddd mm ss)
- outhead:是否输出文件头(0:不输出,1:输出)
- outopt:是否输出配置选项(0:不输出,1:输出)
- datum:坐标基准(0:WGS84,1:Tokyo)
- height:高程类型(0:椭球高,1:大地高)
- geoid:大地水准面模型(0:EGM96,1:JGD2000)
- solstatic:静态模型下选择输出解的类型(0:输出处理周期内的所有结果,1:只输出处理周期内起始历元解)
- sstat:结果输出级别(0:off,1:states,2:residuals)
- trace:调试输出等级(0:off,1-5:debug)
- nmeaintv:设置NMEA GPRMC GPGGA消息的输出检测,小于0不输出,等于0输出全部
- sep:每个值之间的分隔符
- prog:程序名称
默认配置:
const solopt_t solopt_default={ /* defaults solution output options */
SOLF_LLH,TIMES_GPST,1,3, /* posf,times,timef,timeu */
0,1,0,0,0,0, /* degf,outhead,outopt,datum,height,geoid */
0,0,0, /* solstatic,sstat,trace */
{0.0,0.0}, /* nmeaintv */
" ","" /* separator/program name */
};
prcopt_t
typedef struct { /* processing options type */
int mode; /* positioning mode (PMODE_???) */
int soltype; /* solution type (0:forward,1:backward,2:combined) */
int nf; /* number of frequencies (1:L1,2:L1+L2,3:L1+L2+L5) */
int navsys; /* navigation system */
double elmin; /* elevation mask angle (rad) */
snrmask_t snrmask; /* SNR mask */
int sateph; /* satellite ephemeris/clock (EPHOPT_???) */
int modear; /* AR mode (0:off,1:continuous,2:instantaneous,3:fix and hold,4:ppp-ar) */
int glomodear; /* GLONASS AR mode (0:off,1:on,2:auto cal,3:ext cal) */
int bdsmodear; /* BeiDou AR mode (0:off,1:on) */
int maxout; /* obs outage count to reset bias */
int minlock; /* min lock count to fix ambiguity */
int minfix; /* min fix count to hold ambiguity */
int ionoopt; /* ionosphere option (IONOOPT_???) */
int tropopt; /* troposphere option (TROPOPT_???) */
int dynamics; /* dynamics model (0:none,1:velociy,2:accel) */
int tidecorr; /* earth tide correction (0:off,1:solid,2:solid+otl+pole) */
int niter; /* number of filter iteration */
int codesmooth; /* code smoothing window size (0:none) */
int intpref; /* interpolate reference obs (for post mission) */
int sbascorr; /* SBAS correction options */
int sbassatsel; /* SBAS satellite selection (0:all) */
int rovpos; /* rover position for fixed mode */
int refpos; /* base position for relative mode */
/* (0:pos in prcopt, 1:average of single pos, */
/* 2:read from file, 3:rinex header, 4:rtcm pos) */
double eratio[NFREQ]; /* code/phase error ratio */
double err[5]; /* measurement error factor */
/* [0]:reserved */
/* [1-3]:error factor a/b/c of phase (m) */
/* [4]:doppler frequency (hz) */
double std[3]; /* initial-state std [0]bias,[1]iono [2]trop */
double prn[5]; /* process-noise std [0]bias,[1]iono [2]trop [3]acch [4]accv */
double sclkstab; /* satellite clock stability (sec/sec) */
double thresar[4]; /* AR validation threshold */
double elmaskar; /* elevation mask of AR for rising satellite (deg) */
double elmaskhold; /* elevation mask to hold ambiguity (deg) */
double thresslip; /* slip threshold of geometry-free phase (m) */
double maxtdiff; /* max difference of time (sec) */
double maxinno; /* reject threshold of innovation (m) */
double maxgdop; /* reject threshold of gdop */
double baseline[2]; /* baseline length constraint {const,sigma} (m) */
double ru[3]; /* rover position for fixed mode {x,y,z} (ecef) (m) */
double rb[3]; /* base position for relative mode {x,y,z} (ecef) (m) */
char anttype[2][MAXANT]; /* antenna types {rover,base} */
double antdel[2][3]; /* antenna delta {{rov_e,rov_n,rov_u},{ref_e,ref_n,ref_u}} */
pcv_t pcvr[2]; /* receiver antenna parameters {rov,base} */
unsigned char exsats[MAXSAT]; /* excluded satellites (1:excluded,2:included) */
char rnxopt[2][256]; /* rinex options {rover,base} */
int posopt[6]; /* positioning options */
int syncsol; /* solution sync mode (0:off,1:on) */
double odisp[2][6*11]; /* ocean tide loading parameters {rov,base} */
exterr_t exterr; /* extended receiver error model */
} prcopt_t;
- mode:定位解算模式
#define PMODE_SINGLE 0 /* positioning mode: single */
#define PMODE_DGPS 1 /* positioning mode: DGPS/DGNSS */
#define PMODE_KINEMA 2 /* positioning mode: kinematic */
#define PMODE_STATIC 3 /* positioning mode: static */
#define PMODE_MOVEB 4 /* positioning mode: moving-base */
#define PMODE_FIXED 5 /* positioning mode: fixed */
#define PMODE_PPP_KINEMA 6 /* positioning mode: PPP-kinemaric */
#define PMODE_PPP_STATIC 7 /* positioning mode: PPP-static */
#define PMODE_PPP_FIXED 8 /* positioning mode: PPP-fixed */
- soltype:滤波方式(0:forward,1:backward,2:combined)
- nf:频率数(1:L1,2:L1+L2,3:L1+L2+L5)
- navsys:启用的卫星系统
- elmin:仰角阈值,只有仰角大于这个阈值的卫星信号才会被用于定位
- snrmask:信噪比阈值,过滤掉那些信号质量差的卫星信号
- sateph:星历钟差模式
#define EPHOPT_BRDC 0 /* ephemeris option: broadcast ephemeris */
#define EPHOPT_PREC 1 /* ephemeris option: precise ephemeris */
#define EPHOPT_SBAS 2 /* ephemeris option: broadcast + SBAS */
#define EPHOPT_SSRAPC 3 /* ephemeris option: broadcast + SSR_APC */
#define EPHOPT_SSRCOM 4 /* ephemeris option: broadcast + SSR_COM */
#define EPHOPT_LEX 5 /* ephemeris option: QZSS LEX ephemeris */
- 模糊度固定
- modear(0:off,1:continuous,2:instantaneous,3:fix and hold,4:ppp-ar)
- glomodear (0:off,1:on,2:auto cal,3:ext cal
- bdsmodear(0:off,1:on)
- maxout:重置模糊度参数阈值
- minlock:固定整周模糊度的最少锁定计数
- minfix:固定整周模糊度的最小固定数(fix and hold下)
- ionoopt:电离层改正模型
#define IONOOPT_OFF 0 /* ionosphere option: correction off */
#define IONOOPT_BRDC 1 /* ionosphere option: broadcast model */
#define IONOOPT_SBAS 2 /* ionosphere option: SBAS model */
#define IONOOPT_IFLC 3 /* ionosphere option: L1/L2 or L1/L5 iono-free LC */
#define IONOOPT_EST 4 /* ionosphere option: estimation */
#define IONOOPT_TEC 5 /* ionosphere option: IONEX TEC model */
#define IONOOPT_QZS 6 /* ionosphere option: QZSS broadcast model */
#define IONOOPT_LEX 7 /* ionosphere option: QZSS LEX ionospehre */
#define IONOOPT_STEC 8 /* ionosphere option: SLANT TEC model */
- tropopt:对流层改正模型
#define TROPOPT_OFF 0 /* troposphere option: correction off */
#define TROPOPT_SAAS 1 /* troposphere option: Saastamoinen model */
#define TROPOPT_SBAS 2 /* troposphere option: SBAS model */
#define TROPOPT_EST 3 /* troposphere option: ZTD estimation */
#define TROPOPT_ESTG 4 /* troposphere option: ZTD+grad estimation */
#define TROPOPT_COR 5 /* troposphere option: ZTD correction */
#define TROPOPT_CORG 6 /* troposphere option: ZTD+grad correction */
- dynamics:动力学模型(0:none,1:velocity,2:accel)
- tidecorr:潮汐改正(0:不改正,1:固体潮,2:固体潮+海洋潮+极潮)
- niter:滤波迭代次数
- codesmooth:伪距平滑窗口大小(0:不平滑)
- intpref:插值参考观测数据(用于后处理)
- sbascorr:SBAS改正
- sbassatsel:SBAS卫星选择
- rovpos:fix模式的流动站坐标
- refpos:relative mode基准站坐标(0: pos in prcopt, 1: average of single pos, 1: read from file, 3: rinex header, 4: tcm pos)
- eratio:伪距/载波错误率
- err:测量误差因子(0: reserved, [1-3]: error factor a/b/c of phase, 4: doppler frequency)
- std[3]:初始噪声(0:bias, 1:iono, 2:trop)
- prn[3]:过程噪声 (0:bias, 1:iono, 2:trop, 3:acch, 4:accv, 5:pos)
- sclkstab:卫星钟稳定性
- thresar:模糊度固定验证阈值
- elmaskar:模糊度解算时的阈值设定
- elmaskhold:仰角阈值,当卫星仰角低于这个值时,停止使用这些卫星进行模糊度保持
- thresslip:GF周跳检测阈值
- maxtdiff:最大差分龄期
- maxinno:最大新息(残差)
- maxgdop:最大GDOP
- baseline[2]:基线长度阈值(Moving-base下){const,sigma}(m)
- ru[3]:fix模式的流动站坐标 {x,y,z}(ecef)
- rb[3]:基准站坐标 {x,y,z}(ecef)
- anttype:天线类型 {rover, base}
- antdel[2][3]:antenna delta {{rov_e,rov_n,rov_u}, {ref_e,ref_n,ref_u}}
- pcvr[2]:接收机天线参数{rov,base}
- exsats:是否使用卫星(1:excluded, 2:included)
- rnxopt:rinex选择 {rover, base}
- posopt: 定位选择
- syncsol: 基准站流动站时间的同步方式(0:off,1:on)
- odisp[2][6*11]:海洋潮汐载荷效应相关参数{rov,base}
- exterr:接收机误差模型扩展版本
默认配置:
const prcopt_t prcopt_default={ /* defaults processing options */
PMODE_SINGLE,0,2,SYS_GPS, /* mode,soltype,nf,navsys */
15.0*D2R,{{0,0}}, /* elmin,snrmask */
0,1,1,1, /* sateph,modear,glomodear,bdsmodear */
5,0,10, /* glomodear,maxout,minlock,minfix */
0,0,0,0, /* estion,esttrop,dynamics,tidecorr */
1,0,0,0,0, /* niter,codesmooth,intpref,sbascorr,sbassatsel */
0,0, /* rovpos,refpos */
{100.0,100.0}, /* eratio[] */
{100.0,0.003,0.003,0.0,1.0}, /* err[] */
{30.0,0.03,0.3}, /* std[] */
{1E-4,1E-3,1E-4,1E-1,1E-2}, /* prn[] */
5E-12, /* sclkstab */
{3.0,0.9999,0.20}, /* thresar */
0.0,0.0,0.05, /* elmaskar,almaskhold,thresslip */
30.0,30.0,30.0, /* maxtdif,maxinno,maxgdop */
{0},{0},{0}, /* baseline,ru,rb */
{"",""}, /* anttype */
{{0}},{{0}},{0} /* antdel,pcv,exsats */
};