⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rinex.h

📁 读取GPS的Rinex观测文件
💻 H
字号:
#ifndef RINEX_H
#define RINEX_H

#include "Time.h"
#include "Coordinate.h"


#define _MAX_RNX_PROGRAM_NUMBER 20
#define _MAX_RNX_AGENCY_NAME 20
#define _MAX_CREATE_TIME 20
#define _MAX_RNX_MARK_NUMBER 20
#define _MAX_RNX_MARK_NAME 20
#define _MAX_RNX_RCVR_SN   20
#define _MAX_RNX_RCVR_TYPE 20
#define _MAX_RNX_RCVR_VER  20
#define _MAX_RNX_ANT_SN    20
#define _MAX_RNX_ANT_TYPE  20

#define _MAX_CNT_OBS_TYPE  20     //观测值类型 L1  L2............
#define _MAX_CNT_OBS_NUM  24      //某历元观测到的卫星数

#define _MAX_OBS_NAME 20
#define _GOT_PSEUDO_RANGE P
#define _GOT_CARRIER_PHASE L
#define _GOT_DOPPLER D
#define _GOT_SNR S
#define _GPS_F1 125
#define _GPS_F2 135


typedef struct tagDELTA_UTC{
	double A0;//terms of polynomial
	double A1;//terms of polynomial
	long T;//reference time for UTC data
	long W;//UTC reference week number
}DELTA_UTC;//Almanac parameters to compute time in UTC 
typedef DELTA_UTC *PDELTA_UTC;


typedef struct tagGMBNHDR {
	int ver_major; //RINEX VERSION  版本号
	int ver_minor;

	char program_name[_MAX_RNX_PROGRAM_NUMBER];//Name of program creating current file
	char agency_name[_MAX_RNX_AGENCY_NAME];//Name of agency  creating current file
	char create_file_time[_MAX_CREATE_TIME];//Date of file creation

	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 tagGMNREC {
	int PRN;//卫星的PRN号
	COMMONTIME TOC;//历元
	GPSTIME    TOE;
	double ClkBias;//卫星钟偏差 s
	double ClkDrift;//卫星钟的漂移 s/s
	double ClkDriftRate;//卫星钟漂移速度 s/s2

	double IODE;//Issue of Data,Ephemeris数据、星历发布时间
	double Crs;//m
	double DetlaN;//rad/s                                              广播轨道—1
	double M0;//rad

	double Cuc;//rad
	double e;//轨道偏心率                                              广播轨道—2
	double Cus;//rad
	double SqrtA;//sqrt(m)

	double toe;//星历的参考时刻  GPS周内的秒数
	double Cic;//rad
	double Omega;//rad                                                 广播轨道—3
	double Cis;//rad

	double i0;//rad
    double Crc;//m 
	double omega;//rad                                                广播轨道—4
	double OmegaDot;//rad/s

	double iDot;//rad/s
	double CodesOnL2Channel;//L2上的码
	double GPSWeek;//GPS周数,不是1024的余数
	double L2PDataFlag;//P码数据标记                                 广播轨道—5

	double SVAccuracy;//卫星精度
	double SVHealth;//卫星健康状态
	double TGD;//s
	double IODC;//钟的数据龄期                                       广播轨道—6

	double TransTimeOfMsg;//电文发送时刻(单位为GPS周的秒,通过交接字(HOW)中的Z计数得出)
	double Spare1;//拟合区间
	double Spare2;
	double Spare3;             //                                    广播轨道—7
} GMNREC; // 导航电文信息记录结构
typedef GMNREC *PGMNREC;

/*
typedef struct tagGMN 
{
	GMNHDR hdr;
	GMNREC record;
} GMN;//导航电文信息结构
typedef GMN *PGMN;
*/

///////////////////////////////////////////////// 以上是导航电文 //////////////////////////////////////////////////////



///////////////////////////////////////////////// 以下是观测值信息 ////////////////////////////////////////////////////


typedef enum tagGPSOBSTYPE 
{                                    // GPS观测值类型的枚举
	UNKNOWN,L1,L2,P1,P2,S1,S2,C1,D1,T1,L5
	    
} GPSOBSTYPE;
typedef GPSOBSTYPE *PGPSOBSTYPE;


/*
const int _MAX_ROID = 3;
typedef struct tagGPSOBSPROP// 观测值
{ 
	char name[_MAX_OBS_NAME]; // 观测值名
	GPSOBSTYPE type; // 类型
	double frequency; // 频率

	unsigned char wl_fact; // 波长因子 unsigned char wl_fact;
	double precision; // 精度
	char obs_id[_MAX_ROID]; // ID–RINEX的观测值标示
	unsigned char wl_pos; // 波长因子的序号
} GPSOBSPROP;
typedef GPSOBSPROP *PGPSOBSPROP;
*/

	typedef struct tagGMOHDR {
	int ver_major;
	int ver_minor;

	char mark_number[_MAX_RNX_MARK_NUMBER];//天线标志编号(点名)
	char mark_name[_MAX_RNX_MARK_NAME];//天线标志名称
	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_delta;//Antenna height,Eccentricities of antenna center
	CRDCARTESIAN approx_pos;//Approximate marker position (WGS84)

	COMMONTIME start;//Time of first observation record 
	COMMONTIME end;  //Time of last  observation record
	int interval;//Observation interval in seconds
	double leap_seconds;//自1980 1 6 以来的跳秒数

	int obs_type_number;//Number of different observation types stored in the file
	int obs_type_list[_MAX_CNT_OBS_TYPE];//Observation types 

    long size;//有记录的卫星数量	

} GMOHDR;//GPS观测值信息头
typedef GMOHDR *PGMOHDR;


typedef struct tagGMOREC{                         //GPS观测值
	COMMONTIME epoch; // 历元时刻
	int sign_of_use;  //历元标志,0 表示有效
    int num_sat; // 卫星数
    int prn_lst[36]; // 卫星列表
	double rcvr_clk_bias; // 接收机钟的偏差

	double value[_MAX_CNT_OBS_NUM][_MAX_CNT_OBS_TYPE]; // 观测值的数值     行表示卫星数,列表示观测类型L1 L2
	
} GMOREC;
typedef GMOREC *PGMOREC;


#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -