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

📄 gpsobsmsg.h

📁 根据GPS卫星观测文件(.00O)与星历文件(.00N)
💻 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 + -