资源简介
在用GPS信号进行导航定位以及制订观测计划时,都必须已知GPS卫星在空间的瞬间位置。卫星位置的计算是根据卫星电文所提供的轨道参数按一定的公式计算的。本节专门讲解观测瞬间GPS卫星在地固坐标系中坐标的计算方法

代码片段和文件信息
//基本广播星历块
struct EPHEMERISBLOCK
//每小时一个卫星对应一个基本星历块
{
//PRN号
int i1PRN;
double f8a0f8a1f8a2;//时间改正数
//六个轨道参数
double f8IODEf8Crsf8Deltanf8M0;// ORBIT - 1
double f8Cucf8ef8Cusf8SqrtA;// ORBIT - 2
double f8Toef8Cicf8OMEGAf8Cis;// ORBIT - 3
double f8i0f8Crcf8omegaf8OMEGAdot;// ORBIT - 4
double f8IDOTf8GpsWeekNumberf8L2Cf8L2P;// ORBIT - 5
double f8SatAccuracyf8SatHealthf8TGDf8IODC;// ORBIT - 6
};
struct XYZ
{
int prn;
double xyz;
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*参数定义如下,在DOC类中,EPHEMERISBLOCK *m_pGpsEphemeris;
XYZ *m_pxyz;
int m_i4EphemerisBlockNum;
CGpsTime为一个类,部分代码如下
int CGpsTime::InitgGpsTime (int nYear int nMounth int nDay int nHour int nMinute double dSecond)
{
int DayofMonth = 0;
int DayofYear = 0;
int weekno = 0;
int dayofweek;
int m;
if (nYear < 1980 || nMounth < 1 || nMounth > 12 || nDay < 1 || nDay > 31) return -1;
//计算从1980年到当前的前一年的天数
for( m = 1980 ; m < nYear ; m++ )
{
if ( (m%4 == 0 && m%100 != 0) || (m%400 == 0) )
{
DayofYear += 366;
}
else
DayofYear += 365;
}
//计算当前一年内从元月到当前前一月的天数
for( m = 1;m < nMounth; m++)
{
if(m==1 || m==3 || m==5 || m==7 || m==8 || m==10 || m==12)
DayofMonth += 31;
else if (m==4 || m==6 || m==9 || m==11)
DayofMonth += 30;
else if (m ==2)
{
if ( (nYear%4 == 0 && nYear%100 != 0) || (nYear%400 == 0) )
DayofMonth += 29;
else
DayofMonth += 28;
}
}
DayofMonth = DayofMonth + nDay - 6;//加上当月天数/减去1980年元月的6日
weekno = (DayofYear + DayofMonth) / 7;//计算GPS周
dayofweek = (DayofYear + DayofMonth) % 7;
//计算GPS 周秒时间
m_dWeekSecond = dayofweek*86400 + nHour*3600 + nMinute*60 + dSecond;
m_nWeek = weekno;
return weekno;
}
*////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////strEpheNam为广博星历文件,如:c:\15372370.06n
int CGpsPosDoc::ReadBrodcastEphemeris(CString strEpheNam)
{
int i4HeadLineNum = 0;
//打开文件
CStdioFile pfEph;
BOOL IsEn = pfEph.Open(strEpheNam CFile::modeRead);
if(!IsEn) return 0;
//读入头文件
CString strLine;
while(IsEn)
{
IsEn = pfEph.ReadString(strLine);
i4HeadLineNum++;
int index = strLine.Find(“END OF HEADER“);
if( -1 != index )
break;
}
//计算星历块数
int AllNum = 0;
while(IsEn)
{
IsEn = pfEph.ReadString(strLine);
AllNum++;
}
//临时读入星历块
int i4AllBlockNum = (AllNum + 1) / 8;
EPHEMERISBLOCK *pTemEpheme = new EPHEMERISBLOCK[i4AllBlockNum];
CGpsTime *pGpsTime = new CGpsTime[i4AllBlockNum];
if(!pTemEpheme || !pGpsTime) return 0;
//将文件指针调整到数据位置
pfEph.SeekToBegin();
for(int i=0; i IsEn = pfEph.ReadString(strLine);
//定义读取的参数
int mPrn;//卫星号PRNo
int yearmonthdayhourminute;//卫星钟参考时刻
double msecond;
double a0a1a2;//卫星钟飘参数
double IO
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 9411 2009-08-19 09:56 通过GPS广播星历计算卫星坐标\代码.c
目录 0 2009-08-19 09:53 通过GPS广播星历计算卫星坐标
----------- --------- ---------- ----- ----
9411 2
相关资源
- 武汉大学 科傻GPS 静态后处理软件
- 开源的nmealib
- 相干与非相干实现捕获与跟踪GPS
- 天文钟GPS对时程序
- 用切比雪夫多项式标准化GPS卫星轨道
- 起算点点位不同对GPS-RTK测高的影响
- GPS-RTK技术在公婆泉矿区详查中的应用
-
A web-ba
sed interview platform with geospat - 根据GPS数据计算航向公式
- Excel在GPS坐标转换计算中的应用
- GPS-RTK技术及EPSW全息测绘软件在沉陷治
- 基于GPS数据的露天矿道路网自动提取
- 基于GPS-RTK与全站仪的城市道路改扩建
- GPS-RTK、全站仪联合作业在化石沟铜矿
- 基于GPS一机多天线技术的尾矿坝全自
- GPS技术在山区边坡监测中的应用
- GPS-RTK与全站仪联合作业在山谷型采石
- 论变形监测技术的现状与发展趋势
- GPS技术在大采深采区建筑物变形监测
- 探讨GPS技术在地形复杂矿山变形监测
- 全球地名地址及GPS坐标数据库
- 工作/生活照片归档管理/Exif查看器/
- gps程序、算法
- STM32+陀螺仪+GPS代码
- 基于单片机的GPS定位及显示系统设计
- GPS模拟仿真GPS卫星定位模拟仿真
- GPS数据转换X.Y坐标
- 伊敏露天矿三期卡车调度系统应用效
- STM32+BC20通过HTTP传输GPS北斗定位到湖畔
- NemaStudio1.36 NMEA模拟工具软件最新+注册
评论
共有 条评论