您的位置:首页 > 编程语言

RIENX格式(下):GPS信息结构代码设计

2015-12-30 18:49 751 查看
RIENX格式(下):GPS信息结构代码设计
一.GPS信息结构

原则

——结构简单,使用方便

——限量小,如对卫星的数量、观测值类型的数量、观测值的总量没有限制

——存储效率高,每一部分均有其作用

信息结构:文件头+数据记录

——文件头结构

——数据结构结构

二.GPS导航电文结构 ——GMN

1.概述:



1) GPS导航电文信息【GMN】

/////////////////////////////////////////////////////////////////////
/*GPS导航电文信息结构 --- GMN  */

typedef struct tagGMN{
GMNHDR  hdr;
list<GMNREC>EphList;
} GMN;

typedef GMN  *PGMN;


2) GPS导航电文头【GMNHDR】

/*GPS导航电文信息头结构 --- GMNHDR  */

typedef struct tagGMNHDR{
int              ver_major;                             //主版本号
int              ver_minor;                             //次版本号
char             mark_number[_MAX_RNX_MARK_NUMBER];        //点号
char             mark_name[_MAX_RNX_MARK_NAME];          //点名
double           ion_alpha[4];
double           ion_beta[4];
DELTA_UTC        delta_utc;
long             leap_seconds;
long             size;
long             rec_num;
} GMNHDR;

typedef GMNHDR  *PGMNHDR;

typedef struct tagDELTA_UTC{
double   A0;
double   A1;
long     T;
long     W;
} DELTA_UTC;

typedef DELTA_UTC  *PDELTA_UTC;


2) GPS导航电文记录【GMNREC】

/*GPS导航电文记录 --- GMNREC  */
typedef struct tagGMNREC
{
int    PRN;               //卫星编号
COMMONTIME  TOC;          //卫星轨道参数参考时间
double   ClkBias;         //卫星时钟偏差
double   ClkDrift;          // 卫星时钟漂移
double   ClkDriftRate;       //卫星时钟漂移率

double   IODE;               //星历数据的有效龄期
double   Crs;                //轨道半径正弦改正项
double   DetlaN;             //平均运动修正量
double   M0;                //卫星星历参考时刻的轨道倾角

double   Cuc;                 //纬度幅角余弦改正项
double   e;                   //卫星轨道偏心率
double   Cus;                 //纬度幅角正弦改正项
double   SqrtA;               //轨道长半径平方根

double   TOE;                 //卫星历书参考时间
double   Cic;                 //轨道倾角余弦调和项
double   Omega;               //升交点赤经
double   Cis;                 //轨道倾角正弦项

double   i0;                  //卫星星历参考时刻的轨道倾角
double   Crc;                 //轨道半径余弦调和项
double   omega;               //近地点角距
double   OmegaDot;            //升交点赤经变率

double   iDot;                 //轨道倾角变化率
double   codesOnL2Channel;     //L2频道
double   GPSWeek;              //GPS星期数
double   L2PDataFlag;           //L2 P数据标志

double   SVAccuracy;           //卫星精度
double   SVHealth;             //卫星健康
double   TGD;                  //TGD单频机延迟改正数
double   IODC;                 // 时钟数据有效期

double   TransTimeOfMsg;        //电文发送时间
double   Spare1;                //空格1
double   Spare2;                //空格2
double   Spare3;               //空格3

} GMNREC,PGMNREC;


三.GPS观测值信息——GMO

1.概述:



2.GPS观测值信息【GMO】

typedef struct tagGMO
{
GMOHDR  hdr;
LGMOREC  lgmorec;
} GMO,*PGMO;


3.GPS观测值信息头结构【GMOHDR】

typedef struct tagGMOHDR
{
int    ver_major;                                                 //主版本号
int    ver_minor;                                                 //次版本号
char   mark_name[MAX_RNX_MARK_NAME];                              //点名
// char   mark_number[MAX_RNX_MARK_NUMBER];                          //点号
char   rcvr_sn[MAX_RNX_RCVR_SN];                                  //接收机序列号
char   rcvr_type[MAX_RNX_RCVR_TYPE];         //接收机类型
char   rcvr_ver[MAX_RNX_RCVR_VER];          //接收机内部软件版本号
char   ant_sn[MAX_RNX_ANT_SN];             //天线序列号
char   ant_type[MAX_RNX_ANT_TYPE];         //天线类型
CRDTOPOCENTRIC ant_enna;                  //天线改正(天线高和偏心)
CRDCARTESIAN approx_pos;                   //近似位置

int    obs_type_number;                     //观测值类型数
char   obs_type_list[MAX_CNT_OBS_TYPE][MAX_OBS_TYPE_NAME];   //观测值类型列表
LGPSOBSPROP  lgop;                         //属性列表
COMMONTIME  start;                        //第一个观测记录时刻
int    interval;                             //历元间隔
long   epoch_number;                      //总历元数

} GMOHDR,*PGMOHDR;


4.GPS 观测值信息记录【GMOREC】

typedef struct tagLGMOREC
{
GMORECHDR   rechdr;
LGPSOBS    lgpsobs;
struct tagLGMOREC *next;
} LGMOREC,*PLGMOREC;


5.GPS观测信息记录头结构【GMORECHDR】

typedef struct tagGMORECHDR
{
COMMONTIME epoch;                   //历元时刻
double  rcvr_clk_bias;              //接收机钟偏差
int     num_sat;                    //卫星数
int     prn_list[31];               //卫星列表
} GMORECHDR,*PGMORECHDR;


6.GPS观测值【GPSOBS】

typedef struct tagGPSOBS
{
double    value;
unsigned char  tag1;                    //观测值属性标志1
unsigned char  tag2;                    //观测值属性标志2
unsigned char  disable;                 //观测值是否可用
} GPSOBS, *PGPSOBS;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: