📄 gpsobsmsg.h
字号:
#ifndef GPSOBSMSG_H_
#define GPSOBSMSG_H_
#include <fstream>
#include <vector>
#include "Coordination.h"
#include "Time.h"
#include "Predefine.h"
#include "GPSNAVMSG.h"
#include "matrix.h"
using namespace std;
class GPSOBSMSGHDR
{
public:
char byMajorVer;
char byMinorVer;
char szMarkName[_MAX_MARKNAME + 1];
char szMarkNumber[_MAX_MARKNUMBER + 1];
double dAntHeight;
xyzCoor ApproxPos;
COORDINATETOPOCENTRIC AntOffset;
short byNumberOfObsType;
unsigned char byObsTypeList[_MAX_OBSTYPE];
unsigned char byL1Fact;
unsigned char byL2Fact;
ATIME tmStart;
ATIME tmEnd;
unsigned int wInterval;
unsigned char pbySatList[_MAX_SV];
unsigned long dwLength;
unsigned long dwCount;
GPSOBSMSGHDR& ReadObsHeader(ifstream& in);
};
class GPSOBS{
public:
bool tagObs; //用于存储该观测值是否为真,若有数据,则为TRUE
short tagGSignal;//原GPSOBSRECHDR中的数据
int byPRN; //卫星编号
long double dC1;
long double dP1;
long double dP2;
long double dL1;
unsigned char byL1LLI;///////////////
unsigned char byL1Strength;
double dL2;
unsigned char byL2LLI;
unsigned char byL2Streagth;
long double dT1;
long double dT2;
long double dD1;
long double dD2;
long double dS1;
long double dS2;
int GetPRN(){return byPRN;}
GPSOBS(){ this->tagObs = false;}
// GPSOBS(const GPSOBS&);
// GPSOBS& operator = (const GPSOBS& from);
};
class OneEpochORec //同一历元的放在一起
{
public:
vector<GPSOBS*> ObsList; //每个历元观测的卫星数不可能大于12
ATIME tmEpoch;
int tagGSignal;
OneEpochORec(){}
OneEpochORec(const OneEpochORec&);
~OneEpochORec();
int Size();
} ;
class GPSOBSMSG{
GPSOBSMSGHDR Hdr;
GPSNAVMSG* pNavMsg;
vector<OneEpochORec*> pEpochObsList;//1230 add
double X,Y,Z; //用于存放测站位置
double dRecClkDtaTime; //接收机钟差
Matrix<double>* BMatrix;
Matrix<double>* LMatrix;
public:
void Earthrot(const double dTranTime,double& XSV,double& YSV,double& ZSV);//new
void GetValueOfMatrixElement(GPSTIME& gTimeEpoch,GPSOBS& gObs, //new
double dRecClkDtaTime,double& b1,double& b2,double& b3,double& b4,double& l);
GPSOBSMSG& GetPos(GPSNAVMSG& navMsg); //new
GPSOBSMSG(){}
~GPSOBSMSG();
GPSOBSMSG(ifstream&);
GPSOBSMSG& ReadOneEpochRec(ifstream& ofile,const int numOfObsType,
OneEpochORec* pOneEpoch,int numOfSat,char* SatPrnList);//new
private:
double GetAzimuthAngle(const double& x1,const double& y1,const double& z1,const double& x2,const double& y2,const double& z2);
void GetTrop(double Z,double HS,double& DR);
int Model;//用于选择大气折射模型,其中1为Saastamonen,2为Hopfield,3为Black模型。
double H;
double L;
double B;
double GetElevation(const double& x1,const double& y1,const double& z1,const double& x2,const double& y2,const double& z2);
void XYZ_to_NEU(double deltaX,double deltaY,double deltaZ,double B,double L,double& deltaN,double& deltaE,double& deltaH);
void XYZ_to_BLH(const double &x1,const double &y1,const double &z1,double &B,double &L,double & H);
/* 84坐标 X,Y,Z-->B,L,h */
GPSOBSMSG& GetInitialPos();
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -