1、GPS 单点定位程序文档说明一 程序说明本程序的基本功能是利用测站接收机获取的观测文件(O 文件) ,结合相应历元下的卫星导航文件(N 文件)来计算测站点在 WGS-84 坐标系下的坐标。 所用编程语言为 C+,编程环境为 VC+6.0。二 单历元卫星坐标计算流程图获取观测数据及相应历元导航数据给定待定点初始值判断卫星数目 = 4T r u e计算观测卫星钟差 , 计算信号近似传播时间计算信号发送时刻卫星在地固坐标下的坐标计算对流层改正和电离层改正组建法方程计算卫星坐标F a b s ( D e l t a T ) 1 e - 1 5F a l s eT r u eF a b s ( D e
2、l t a X ) 1 e - 8F a l s e得到卫星坐标计算结束T r u e三 程序设计流程图读取广播星历数据读观测文件的一个历元数据近似的用户位置坐标计算接收机(用户)坐标满足限差NY文件完毕将计算结果写入文件NY关闭文件读取观测值数据根据观测历元和卫星号读取相应的广播星历信号发射时刻卫星位置和卫星钟差电离层、对流层延迟的计算四 程序模块说明(一) 对类的说明1. PointPosition 类double GetDelta_t(CommonTime Toe,CommonTime Toc);用于计算两个历元时刻的时间间隔CoorCartesian ComputeSatCoor(do
3、uble Tk,OneNavData oneNaveData);利用导航数据计算卫星坐标BoolGetPreciseSatCoor(CommonTimeObsTime,CoorCartesian通过迭代得到新号发送时刻的卫星坐标double ComputeSatClkBias(double SendTime_Tk,OneNavData oneNavData);计算卫星的钟差改正Factor ComputeFactors(CoorCartesian 计算组建法方程需要的各个元素 double ComputeTropDelay(CoorCartesian SatCoor,CoorCartesian
4、 SitCoor);计算对流层误差double ComputeIonDelay(const double L1,const double L2);计算电离层误差2ReadObsData 类ReadObsFile(const string ObsFileHeader ReadObsHeader(const string 读取观测文件的头文件部分EntirObsData ReadObsData(const string 读取观测文件的数据部分3ReadNavData 类NavFileHeader ReadNavHeader(const string 读取导航文件的头文件部分AllNavData R
5、eadNavData(const string 读取导航文件的数据部分OneNavData SelectEpochNavData(AllNavData allNavData,string SatPrn,CommonTime ObsTime)查找并获取要计算的观测历元下的导航数据(二) 程序模块的连接关系1.分别用文件流打开相应的观测数据文件和星历文件;2.调用 ReadObsFile.ReadObsHeader()读取观测文件头文件;3.调用 ReadObsFile.ReadObsData()按照观测历元读取观测数据;4 调用 ReadNavFile.ReadNavHeader()读取导航文件
6、的头文件部分;5 调用 ReadNavFile.ReadNavData()读取导航文件的数据部分;6 利用循环并调用 ReadNavFile. SelectEpochNavData()获取观测历元的导航数据7 调用 PointPosition.ComputeSatCoor()计算卫星坐标8 利用 PointPosition.ComputeFactor()计算法方程的各个元素9 迭代得到结果。五 程序的不足之处1. 程序较多的出现类调其他类中的方法,从而类的独立性较差。2. 在坐标系统中,只进行了空间直角坐标系和大地坐标系的转换,空间直角坐标系和测站坐标系的转换,没有完全整理坐标转换。3. 计算的精度较低。4. 只利用 GPS 卫星的观测数据并没有利用 Glonass 卫星的观测数据,从而使数据为得到充分利用。