[转载]卫星单点定位程序代码_拔剑-浆糊的传说_新浪博客

该博客介绍了卫星单点定位程序的C++实现,包括获取最佳导航电文历元、计算卫星位置及钟差的步骤。通过遍历观测数据,使用P1、P2或C1伪距观测值进行解算,最终得到定位结果。
摘要由CSDN通过智能技术生成
原文地址: 卫星单点定位程序代码 作者: 蓝色雨夜

#include "stdafx.h"
#include "GetPosition.h"
#include "Matrix.h"
//#include "Refraction_Delay.h"



//
using namespace math;           //
#ifndef _NO_TEMPLATE            //
typedef matrix<double> Matrix;  //
#else                           //
typedef matrix Matrix;          //
#endif                          //
//

 


list<PGMNREC>::iterator GetBestGMNREC(list<PGMNREC>& navRec, //   找到最佳导航电文历元   
    int& nPRN,PCOMMONTIME pctEpoch) //卫星号及其观测历元
{
 list<PGMNREC>::iterator pnavRec;
 double max=10000000;
 JULIANDAY sat_toe,sat_epoch;

 CommonTimeToJulianDay(pctEpoch,&sat_epoch);
 int i=0,nummax=0;
 for(pnavRec=navRec.begin();pnavRec!=navRec.end();pnavRec++,i++)
 {
  if((*pnavRec)->PRN==nPRN)
  {
   
   CommonTimeToJulianDay(&(*pnavRec)->TOC,&sat_toe);
   if(fabs(GetTimeDelta(&sat_epoch,&sat_toe))<max)
   {
    max=fabs(GetTimeDelta(&sat_epoch,&sat_toe));
    nummax=i;
   }
  }
 }
 if(max!=10000000)
 {
     pnavRec=navRec.begin();
  for(i=0;i<nummax;i++)
   pnavRec++;
  return pnavRec; 
 
 }
 else
 {  
  printf("找不到最佳历元!n");
  return navRec.begin();
 }
}

 

void GetOrbNClk(list<PGMNREC>::iterator theBestGMN,PCOMMONTIME pctEpoch,  PCRDCARTESIAN pcrdOrb,double* pdSVClkBias)//卫星位置 及钟差
{
 //计算卫星平均角速度
 double n0=sqrt(GM)/ pow((*theBestGMN)->SqrtA,3);

 //计算相对于星历参考历元的时间

  JU

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值