空间大地测量与GPS导航定位时间系统相互转换格里高利时通用时儒略日GPS时年积日相互转换讲解Word文档格式.docx
- 文档编号:22002392
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:13
- 大小:98.17KB
空间大地测量与GPS导航定位时间系统相互转换格里高利时通用时儒略日GPS时年积日相互转换讲解Word文档格式.docx
《空间大地测量与GPS导航定位时间系统相互转换格里高利时通用时儒略日GPS时年积日相互转换讲解Word文档格式.docx》由会员分享,可在线阅读,更多相关《空间大地测量与GPS导航定位时间系统相互转换格里高利时通用时儒略日GPS时年积日相互转换讲解Word文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
其中
如果M≤2,则y=Y-1,m=M+12
如果M>
2,则y=Y,m=M
JD为儒略日,Y为年,M为月,D为日,UT为世界时。
2.1.2由儒略日转换到通用时(JulianDayToCommonTime(pjd,pct))
2.2通用时与GPS时间间的相互转换
2.2.1由通用时转换到GPS时间(CommonTimeToGPSTime(pct,pgt))
主要分两步进行:
第一步:
计算GPS周
第二步:
计算一周内的秒数
2.2.2由GPS时间转换到通用时(GPSTimeToCommonTime(pgt,pct))
由GPS时间转换到儒略日
由儒略日转换到通用时
2.3儒略日与年积日之间的相互转换
2.3.1由儒略日转换到年积日(JulianDayToDOY(pjd,pdoy))
主要分三步进行:
计算出通用时
计算出当年1月1日的儒略日
第三步:
两个儒略日求差加1,得出年积日
2.3.2年积日转换到儒略日(DOYToJulianDay(pdoy,pjd))
主要分一下两步进行:
计算出当年1月1日的儒略日JD1
年积日加JD1减1得儒略日
2.4GPS时与年积日间的相互转换
参照儒略日与年积日之间转换方法进行就可以得到结果。
GPS时转换到年积日(GPSTimeToDOY(pgt,pdoy))
年积日转换到GPS时(DOYToGPSTime(pdoy,pgt))
3.算例及结果
通过在VC++6.0环境下编写了各个坐标系统的相互转换,并得到了转换的结果,在试验中使用的已知数据是即使数据,取的时间是当时时间2011年1月7日19时38分45.26秒,用这个已知数据代入函数中,分别求得各个时间系统的GPS时、儒略时、年积日时,并通过各个时间系统的各自相互转换,最后输出的结果如下图所示
通过上图我们可以看出,得到的结果还是非常满意的,程序基本完成了各个时间系统的相互转换,从各个时间相互转换后得到的时间结果,并还原成转换前的数据,得到的结果都是完全符合,由此可见我们的计算结果是正确的,
4.心得体会
这次编程试验,虽说这次试验比较简单,但还是花了较长的时间,修修改改的,以前看到过类似程序,觉得自己应该没啥问题,应该很简单,自己能轻易拿下,可真做起来并不是这么一回事,总是出现一些小bug,不知道问题出在那里,明明感觉公式输入对的,语法也没啥问题,偏偏结果不对,与期望的值差别很大,最后经过调试总算解决了这些问题,比如有次明明记得公式输入是正确的,最后发现还是不小心输错了,结果导致错误。
经过这次编程,这次试验,使自己的编程水平有了较大的提高,以前很多的时候都是只看程序,感觉很简单,并不自己动手,其实其中很多问题,只有自己亲自经历才知道一些简单的东西也会出问题,卡住思维,最后经过努力解决了问题,心里还是蛮开心的,有一定的成就感。
经过这次试验,学到了很多东西,有比较深的感触,对VC++不像以前那么排斥了,不像以前总感觉有点儿惧怕它,现在总算不抵触他了,希望在以后的学习中能够喜欢上它。
5.附录(程序中的源代码)
#include<
iostream>
usingnamespacestd;
typedefstructtagCOMMONTIME
{
intyear;
intmonth;
intday;
inthour;
intminute;
doublesecond;
}COMMONTIME;
//通用时
typedefCOMMONTIME*PCOMMONTIME;
typedefstructtagTOD
longsn;
//秒数的整数部分
doubletos;
//秒数的小数部分
}TOD;
typedefTOD*PTOD;
typedefstruct
longday;
//整数天数
TODtod;
//一天内的秒数
}JULIANDAY;
//儒略日
typedefJULIANDAY*PJULIANDAY;
typedefstructtagMJULIANDAY
}MJULIANDAY;
//新儒略日
typedefMJULIANDAY*PMJIANDAY;
typedefstructtagTOW
//秒整数部分
//秒小数部分
}TOW;
typedefTOW*PTOW;
typedefstructtagGPSTIME
intwn;
//周数
TOWtow;
//一周内的秒数
}GPSTIME;
//GPS时
typedefGPSTIME*PGPSTIME;
typedefstructtagDOY
unsignedshortyear;
unsignedshortday;
}DOY;
//年积日
typedefDOY*PDOY;
doubleFRAC(doublemorigin)
returnmorigin-long(morigin);
//取小数部分
}
voidCommonTimeToJulianDay(PCOMMONTIMEpct,PJULIANDAYpjd)//通用时到儒略日的转换
if(pct->
year<
1900)
{
if(pct->
80)
pct->
year+=2000;
elsepct->
year+=1900;
}
doubleut=pct->
hour+pct->
minute/60.0+pct->
second/3600.0;
month<
=2)
year-=1;
month+=12;
pjd->
day=int(365.25*pct->
year)+int(30.6001*(pct->
month+1))+pct->
day+int(ut/24+1720981.5);
tod.sn=((pct->
hour+12)%24)*3600+pct->
minute*60+(int)pct->
second;
//秒的整数部分
tod.tos=pct->
second-(int)pct->
//秒的小数部分
}
voidJulianDayToCommonTime(PJULIANDAYpjd,PCOMMONTIMEpct)//儒略日到通用时的转换
doublex=pjd->
day+(pjd->
tod.sn+pjd->
tod.tos)/(60.0*60.0*24);
inta=int(x+0.5);
intb=a+1537;
intc=int((b-122.1)/365.25);
intd=int(365.25*c);
inte=int((b-d)/30.6001);
pct->
day=b-d-int(30.6001*e);
month=e-1-12*int(e/14);
year=c-4715-int((7+pct->
month)/10);
hour=(pjd->
tod.sn/3600+12)%24;
minute=(pjd->
tod.sn%3600)/60;
second=pjd->
tod.sn%60+pjd->
tod.tos;
intN=a%7;
voidJulianDayToGPSTime(PJULIANDAYpjd,PGPSTIMEpgt)//儒略日到GPS时的转换
pgt->
wn=int((x-2444244.5)/7);
tow.sn=int(((pjd->
day-2444244)%7+(pjd->
tod.sn/(60.0*60.0*24)-0.5))*86400);
tow.tos=pjd->
voidGPSTimeToJulianDay(PGPSTIMEpgt,PJULIANDAYpjd)//GPS时到儒略日的转换
day=int(pgt->
wn*7+double(pgt->
tow.sn)/86400.0+2444244.5);
tod.sn=(pgt->
tow.sn+43200)%86400;
tod.tos=pgt->
tow.tos;
voidCommonTimeToGPSTime(PCOMMONTIMEpct,PGPSTIMEpgt)//通用时到GPS时的转换
PJULIANDAYpjd=newJULIANDAY;
CommonTimeToJulianDay(pct,pjd);
JulianDayToGPSTime(pjd,pgt);
voidGPSTimeToCommonTime(PGPSTIMEpgt,PCOMMONTIMEpct)//GPS时到通用时的转换
GPSTimeToJulianDay(pgt,pjd);
JulianDayToCommonTime(pjd,pct);
voidCommonTimeToDOY(PCOMMONTIMEpct,PDOYpdoy)
PCOMMONTIMEpcto=newCOMMONTIME;
pcto->
year=pct->
year;
month=1;
day=1;
hour=0;
minute=0;
second=0;
PJULIANDAYpjdo=newJULIANDAY;
doubleJD,JDO;
CommonTimeToJulianDay(pcto,pjdo);
JDO=pjdo->
day+(pjdo->
tod.sn+pjdo->
tod.tos)/86400;
JD=pjd->
pdoy->
day=short(JD-JDO+1);
tod.sn=long(pct->
hour*3600
+pct->
minute*60+pct->
second);
second-int(pct->
/*pct->
second-pdoy->
tod.sn;
*/
voidDOYToCommonTime(PDOYpdoy,PCOMMONTIMEpct)
year=pdoy->
JD=JDO+pdoy->
day+(pdoy->
tod.sn+pdoy->
tod.tos)/86400-1;
longa,b,c,d,e;
a=(long)(JD+0.5);
b=a+1537;
c=(long)((b-122.1)/365.25);
d=(long)(365.25*c);
e=(long)((b-d)/30.6001);
day=short(b-d-(long)(30.6001*e)+FRAC(JD+0.5));
month=short(e-1-12*(long)(e/14));
year=short(c-4715-(long)((7+pct->
month)/10));
hour=short((pdoy->
tod.tos)/3600);
minute=short((pdoy->
tod.tos
-pct->
hour*3600)/60);
second=pdoy->
hour*3600-pct->
minute*60;
voidGPSTimeToDOY(PGPSTIMEpgt,PDOYpdoy)
GPSTimeToJulianDay(pgt,pjd);
PCOMMONTIMEpct=newCOMMONTIME;
JulianDayToCommonTime(pjd,pct);
CommonTimeToDOY(pct,pdoy);
voidDOYToGPSTime(PDOYpdoy,PGPSTIMEpgt)
DOYToCommonTime(pdoy,pct);
CommonTimeToGPSTime(pct,pgt);
voidJulianDayToDOY(PJULIANDAYpjd,PDOYpdoy)
{
JulianDayToCommonTime(pjd,pct);
voidDOYToJulianDay(PDOYpdoy,PJULIANDAYpjd)
voidmain()
PJULIANDAYpjd=newJULIANDAY;
PDOYpdoy=newDOY;
PGPSTIMEpgt=newGPSTIME;
year=2011;
day=6;
hour=19;
minute=38;
second=45.26;
cout<
<
"
转换之前的通用时(当地时间):
;
cout<
pct->
"
day<
hour<
:
minute<
second<
endl;
CommonTimeToJulianDay(pct,pjd);
//通用时->
儒略日的转换
通用时->
儒略日的转换:
pjd->
tod.sn<
tod.tos<
JulianDayToCommonTime(pjd,pct);
//儒略日->
通用时的转换
儒略日->
通用时的转换:
JulianDayToGPSTime(pjd,pgt);
GPS时的转换
GPS时的转换:
pgt->
wn<
tow.sn<
tow.tos<
GPSTimeToJulianDay(pgt,pjd);
//GPS时->
GPS时->
CommonTimeToGPSTime(pct,pgt);
GPSTimeToCommonTime(pgt,pct);
CommonTimeToDOY(pct,pdoy);
年积日
年积日:
pdoy->
DOYToCommonTime(pdoy,pct);
//年积日->
通用时
年积日->
通用时:
GPSTimeToDOY(pgt,pdoy);
DOYToGPSTime(pdoy,pgt);
GPS时
GPS时:
JulianDayToDOY(pjd,pdoy);
DOYToJulianDay(pdoy,pjd);
儒略日
儒略日:
经过各种转换后还原得到的通用时:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 空间 大地测量 GPS 导航 定位 时间 系统 相互 转换 格里 高利 通用 时儒略日 时年积日 讲解
链接地址:https://www.bdocx.com/doc/22002392.html