资源简介
利用基站和移动站的RINEX文件,差分计算移动站的位置
结果输出到output.txt
附有matlab画出的XYZ和钟差的变化程序
代码片段和文件信息
// Code difference.cpp : Defines the entry point for the console application.
//
#include “stdafx.h“
#include
#include
#include
#include
#include
#include
#include
#include
using namespace Eigen;
using namespace std;
const double c=299792458; //light speed
const double GM=3.986005e14;
const double we=7.292115e-5; //地球自转速度
//-------------------------------------------------------------------
typedef vector> Mat;
//民用时转化为GPS时
void gpstime(int yearint monthint dayint hour int minute double second int &week double &secofweek)
{
int ry[12]={312931303130313130313031}fry[12]={312831303130313130313031};
if(year > 80)
year = 1900 + year;
else
year = 2000 + year;
int z=0;
for(int i1=1980; i1 < year+1; i1++)
{
if(i1%4 == 0 && i1%400 != 0)
z++; //记闰年数
}
if(year%4 == 0 && year%100 != 0)
{
for(int i2 = 0; i2 < month-1; i2++)
day += ry[i2];
}
else
{
for(int i3=0; i3 < month-1; i3++)
day += fry[i3];
}
day += (year-1980)*365 + z - 5;
week = day/7;
secofweek= day%7*24*3600 + hour*3600 + minute*60 + second ;
}
//观测文件类
class ReadObsFile //观测文件类
{
public:
double X0Y0Z0; //估计坐标
int epochNum;
vectorsvNum; //卫星个数
vector >c1p1p2l1l2d1d2;
vector >prn;//卫星的prn号二维向量
int week;
vectorsecofweek;
void ReadObsHeader(string ofile)
{
//用文件流读文件
ifstream in_o(ofile.c_str());
if(in_o)
cout<<“打开O文件成功“< else
cerr<<“未找到O文件“< string str;
//定位到初始坐标
while(str.find(“APPROX POSITION XYZ“) == string::npos)
{
getline(in_ostr);
}
stringstream ss(str); //用字符串流提取出来初始坐标
ss>>X0>>Y0>>Z0; //初始坐标提取
//--------------------------------------------------------------------
//定位到数据头
while(str.find(“END OF HEADER“) == string::npos)
{
getline(in_ostr);
}
//计算历元数
epochNum=0;
while(in_o)
{
getline(in_ostr);
for(int i = 0; (size_t)i < str.length(); i++)
if(str[i] == ‘G‘)
{
epochNum++;
break;
}
}
} //end of function ReadObsHeader
void ReadObsData(string ofile)
{
//定位到文件头
ifstream in_o1(ofile.c_str());
string str;
//定位到数据头
while(str.find(“END OF HEADER“) == string::npos)
{
getline(in_o1str);
}
//用历元数定义向量的列数
c1.resize(epochNum);
p1.resize(epochNum);
p2.resize(epochNum);
l1.resize(epochNum);
l2.resize(epochNum);
d1.resize(epochNum);
d2.resize(epochNum);
prn.resize(epochNum);
svNum.resize(epochNum);
secofweek.resize(epochNum);
vector second(epochNum);
int year = 0month = 0day = 0hour = 0minute = 0mark = 0;
week=0;
char g;
for(int i = 0; i < epochNum; i++) //每个历元
{
//week和secofweek提取
in_o1>>year>>month>>day>>hour>>minute>>second[i]>>mark;
//cout<
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 15962 2015-06-08 09:56 codeDifference\codeDifference\ba
文件 6219816 2015-06-08 09:56 codeDifference\codeDifference\ba
文件 15254 2015-06-09 16:25 codeDifference\codeDifference\codeDifference.cpp
文件 4380 2015-06-08 11:18 codeDifference\codeDifference\codeDifference.vcxproj
文件 1318 2015-06-08 11:18 codeDifference\codeDifference\codeDifference.vcxproj.filters
文件 143 2015-06-08 11:18 codeDifference\codeDifference\codeDifference.vcxproj.user
文件 1762 2015-06-09 15:58 codeDifference\codeDifference\Debug\cl.command.1.tlog
文件 35962 2015-06-09 15:58 codeDifference\codeDifference\Debug\CL.read.1.tlog
文件 1034 2015-06-09 15:58 codeDifference\codeDifference\Debug\CL.write.1.tlog
文件 406 2015-06-08 11:19 codeDifference\codeDifference\Debug\codeDifference.exe.em
文件 472 2015-06-08 11:19 codeDifference\codeDifference\Debug\codeDifference.exe.em
文件 381 2015-06-09 15:58 codeDifference\codeDifference\Debug\codeDifference.exe.intermediate.manifest
文件 66 2015-06-09 15:58 codeDifference\codeDifference\Debug\codeDifference.lastbuildstate
文件 2448 2015-06-09 15:58 codeDifference\codeDifference\Debug\codeDifference.log
文件 2176058 2015-06-09 15:58 codeDifference\codeDifference\Debug\codeDifference.obj
文件 1179648 2015-06-08 11:19 codeDifference\codeDifference\Debug\codeDifference.pch
文件 713 2015-06-08 11:19 codeDifference\codeDifference\Debug\codeDifference.vcxprojResolveAssemblyReference.cache
文件 0 2015-06-08 11:19 codeDifference\codeDifference\Debug\codeDifference.write.1.tlog
文件 218 2015-06-08 11:19 codeDifference\codeDifference\Debug\codeDifference_manifest.rc
文件 2 2015-06-09 15:58 codeDifference\codeDifference\Debug\li
文件 2 2015-06-09 15:58 codeDifference\codeDifference\Debug\li
文件 2 2015-06-09 15:58 codeDifference\codeDifference\Debug\li
文件 2 2015-06-09 15:58 codeDifference\codeDifference\Debug\li
文件 2 2015-06-09 15:58 codeDifference\codeDifference\Debug\li
文件 2 2015-06-09 15:58 codeDifference\codeDifference\Debug\li
文件 2 2015-06-09 15:58 codeDifference\codeDifference\Debug\li
文件 2 2015-06-09 15:58 codeDifference\codeDifference\Debug\li
文件 2 2015-06-09 15:58 codeDifference\codeDifference\Debug\li
文件 2 2015-06-09 15:58 codeDifference\codeDifference\Debug\li
文件 2 2015-06-09 15:58 codeDifference\codeDifference\Debug\li
............此处省略69个文件信息
- 上一篇:VC++6.0从入门到精通
- 下一篇:MFC画有角度的椭圆
评论
共有 条评论