📄 getsp3.h
字号:
#ifndef _GETSP3_H_
#define _GETSP3_H_
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
#include "TimeTran.h"
#include "CrdTran.h"
#include "common.h"
const long _MAX_SP3_DATA = 100; //数据行的最大长度长度 +1
//SP3 格式文件文件头节
typedef struct tagSP3HDR {
char ver_id[3]; //版本标识符
char type_id[2]; //位置(P)或 位置/速度(V)标识符
COMMONTIME firt_epoch; //轨道数据的首历元时刻
int epoch_count; //本数据文件的总历元数
char data_type[6]; //数据处理所采用数据的类型
char ref_frame[6]; //轨道数据所属的坐标参照系
char orbit_type[4]; //轨道类型
char agency[5]; //发布轨道的机构
long wn; //首历元的GPS周
double gps_seconds; //首历元的GPS周内秒
long interval; //历元间隔
unsigned char sat_num; //轨道数据所涉及卫星的数量
unsigned char prn[85]; //所涉及卫星的 PRN 列表
unsigned char precision[85]; //所涉及卫星的精度列表
} SP3HDR;
//每颗卫星的数据
typedef struct tagSP3RECDATA {
unsigned char prn; //该卫星的 PRN
CRDCARTESIAN position; //坐标
// CRDCARTESIAN velocity; //速度
double clk_bias; //卫星钟钟差
// double clk_rate; //卫星钟钟飘
} SP3RECDATA;
//每一历元的数据
typedef struct tagSP3REC {
COMMONTIME tm; //历元时刻
SP3RECDATA *data; //该历元所有卫星的轨道数据
} SP3REC;
//每一 SP3 格式文件包含的数据
typedef struct tagSP3 {
SP3HDR hdr; //文件头节
SP3REC *rec; //数据
} SP3;
//读取 SP3 格式文件
SP3 * GetSP3(char *FileName); //FileName: SP3 轨道数据文件文件名
//返回值:正常则包含 SP3 数据的指针,否则返回 NULL
//将一行包含通用时的字符串转换成 一个通用时数据
int csatoCommonTime(const char *str, //包含时间数据的字符串
COMMONTIME *ct); //转换出的时间数据
//返回值:正常返回 0 ,否则返回 1
//从包含记录的字符串中提取记录
int GetSP3Rec(FILE *datafile, //包含时间数据的字符串
long fpos, //文件位置
SP3HDR hdr, //SP3 格式文件的文件头数据
SP3REC *rec); //用于保存数据的记录结构
//返回值:如果读取成功返回读取完毕后的文件指针位置
// 如果读取失败则返回 -1
// 如果读取失败且已经到达文件尾则返回 -2
//判断字符串是否文件结束标识符 "EOF"
int csfeof(const char *str);
//返回值:是则返回 1,否则返回 0;
//拉格朗日插值公式:y=L(x)
double lagrange(double x[], //
double y[], //
double x0, //插入点的已知值
int m); //已知点个数
//返回值:插值结果
//获取指定卫星在指定历元时刻在ECEF下的坐标和钟差。
int GetOrbNClkSP3 (SP3* sp3, //sp3:指向SP3数据的指针;
long nPRN, //卫星的PRN号
PCOMMONTIME ctEpoch, //历元时刻;
PCRDCARTESIAN pcrdOrb, //指向卫星在ECEF下坐标的指针;
double* pdSVClkBias); //指向卫星钟差的指针。
//返回值:正常返回 0 ,否则返回其他;
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -