空間大地測(cè)量與GPS導(dǎo)航定位時(shí)間系統(tǒng)相互轉(zhuǎn)換,格里高利時(shí)通用時(shí)儒略日,GPS時(shí),年積日相互轉(zhuǎn)換_第1頁(yè)
空間大地測(cè)量與GPS導(dǎo)航定位時(shí)間系統(tǒng)相互轉(zhuǎn)換,格里高利時(shí)通用時(shí)儒略日,GPS時(shí),年積日相互轉(zhuǎn)換_第2頁(yè)
空間大地測(cè)量與GPS導(dǎo)航定位時(shí)間系統(tǒng)相互轉(zhuǎn)換,格里高利時(shí)通用時(shí)儒略日,GPS時(shí),年積日相互轉(zhuǎn)換_第3頁(yè)
空間大地測(cè)量與GPS導(dǎo)航定位時(shí)間系統(tǒng)相互轉(zhuǎn)換,格里高利時(shí)通用時(shí)儒略日,GPS時(shí),年積日相互轉(zhuǎn)換_第4頁(yè)
空間大地測(cè)量與GPS導(dǎo)航定位時(shí)間系統(tǒng)相互轉(zhuǎn)換,格里高利時(shí)通用時(shí)儒略日,GPS時(shí),年積日相互轉(zhuǎn)換_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、進(jìn)行空間大地測(cè)量所需時(shí)間系統(tǒng)的相互轉(zhuǎn)換 1.時(shí)間標(biāo)示法從古至今,世界各國(guó)曾出現(xiàn)過(guò)多種歷法,如羅馬歷、儒略日、格里高利以及我國(guó)的農(nóng)歷等,目前世界上廣泛采用的歷法是格里高利歷。1.1.格里高利時(shí)(通用時(shí))格里高利歷也稱公歷,現(xiàn)被世界各國(guó)廣泛采用。格里高利歷是一個(gè)由146097天所組成的400年周期為基礎(chǔ),1年的平均長(zhǎng)度為365.2425天。根據(jù)格里高利歷1年被劃分為12個(gè)月。其標(biāo)示時(shí)間時(shí)采用年、月、日、時(shí)、分、秒的方法。這種計(jì)時(shí)反映季節(jié)變化,與日常生活密切相關(guān),但非連續(xù),不利于數(shù)學(xué)表達(dá)和科學(xué)計(jì)算1.2.儒略日儒略日是一種不涉及年、月等概念的長(zhǎng)期連續(xù)的記日法,在天文學(xué)、空間大地測(cè)量和衛(wèi)星導(dǎo)航定位中經(jīng)

2、常使用。這種方法是由Scaliger于1583年提出的,為紀(jì)念他的父親儒略而命名為儒略日。儒略日的起點(diǎn)訂在公元前4713年(天文學(xué)上記為 -4712 年)1月1日格林威治時(shí)間平午(世界時(shí)12:00),即JD 0 指定為 4713 B.C. 1月1日12:00 UT到4713 B.C. 1月2日12:00 UT的24小時(shí)。每一天賦予了一個(gè)唯一的數(shù)字。由于儒略日數(shù)字位數(shù)太多,國(guó)際天文學(xué)聯(lián)合會(huì)于1973年采用簡(jiǎn)化儒略日(MJD),其定義為 MJD = JD - 2400000.5。MJD相應(yīng)的起點(diǎn)是1858年11月17日世界時(shí)0時(shí)。 例如1979年10月1日零時(shí)儒略日數(shù)為2,444,147.5。1.

3、3.GPS時(shí)GPS系統(tǒng)內(nèi)部所采用的時(shí)間系統(tǒng)是GPS時(shí)間,GPS時(shí)以1980年1月6日子夜為起點(diǎn),用周數(shù)(一個(gè)星期七天)和周內(nèi)的秒數(shù)來(lái)表示1.4.年積日所謂年積日就是指的是從每年的1月1日起開始累計(jì)的天數(shù),計(jì)數(shù)從1開始(即每年1月1日的年積日為1),如2004年5月1日的年積日為122。用他可以方便的求出一年內(nèi)兩個(gè)時(shí)刻T1和T2間的時(shí)間間隔。2.各個(gè)時(shí)間系統(tǒng)的相互轉(zhuǎn)換各個(gè)時(shí)間系統(tǒng)都有嚴(yán)格的轉(zhuǎn)換公式,其轉(zhuǎn)換的主要思想是把通用時(shí)、GPS時(shí)間、和年積日分別轉(zhuǎn)換為儒略日,然后以儒略日為媒介,實(shí)現(xiàn)任意兩個(gè)時(shí)間系統(tǒng)的相互轉(zhuǎn)換,如下圖所示:轉(zhuǎn)換思想2.1通用時(shí)與儒略日間的相互轉(zhuǎn)換2.1.1由通用時(shí)轉(zhuǎn)換到儒略日

4、(CommonTimeToJulianDay( pct, pjd))其中如果M2,則y=Y-1,m=M+12如果M>2,則y=Y,m=MJD為儒略日,Y為年,M為月,D為日,UT為世界時(shí)。2.1.2由儒略日轉(zhuǎn)換到通用時(shí)(JulianDayToCommonTime( pjd, pct))2.2通用時(shí)與GPS時(shí)間間的相互轉(zhuǎn)換2.2.1由通用時(shí)轉(zhuǎn)換到GPS時(shí)間(CommonTimeToGPSTime( pct, pgt))主要分兩步進(jìn)行:第一步:計(jì)算GPS周第二步:計(jì)算一周內(nèi)的秒數(shù)2.2.2由GPS時(shí)間轉(zhuǎn)換到通用時(shí)(GPSTimeToCommonTime( pgt, pct))第一步:由GPS

5、時(shí)間轉(zhuǎn)換到儒略日第二步:由儒略日轉(zhuǎn)換到通用時(shí)2.3儒略日與年積日之間的相互轉(zhuǎn)換2.3.1由儒略日轉(zhuǎn)換到年積日(JulianDayToDOY (pjd, pdoy)主要分三步進(jìn)行:第一步:計(jì)算出通用時(shí)第二步:計(jì)算出當(dāng)年1月1日的儒略日第三步:兩個(gè)儒略日求差加1,得出年積日2.3.2年積日轉(zhuǎn)換到儒略日(DOYToJulianDay ( pdoy, pjd)主要分一下兩步進(jìn)行:第一步:計(jì)算出當(dāng)年1月1日的儒略日J(rèn)D1第二步:年積日加JD1減1得儒略日2.4GPS時(shí)與年積日間的相互轉(zhuǎn)換參照儒略日與年積日之間轉(zhuǎn)換方法進(jìn)行就可以得到結(jié)果。GPS時(shí)轉(zhuǎn)換到年積日(GPSTimeToDOY ( pgt, pdo

6、y))年積日轉(zhuǎn)換到GPS時(shí)(DOYToGPSTime (pdoy, pgt))3.算例及結(jié)果通過(guò)在VC+6.0環(huán)境下編寫了各個(gè)坐標(biāo)系統(tǒng)的相互轉(zhuǎn)換,并得到了轉(zhuǎn)換的結(jié)果,在試驗(yàn)中使用的已知數(shù)據(jù)是即使數(shù)據(jù),取的時(shí)間是當(dāng)時(shí)時(shí)間2011年1月7日19時(shí)38分45.26秒,用這個(gè)已知數(shù)據(jù)代入函數(shù)中,分別求得各個(gè)時(shí)間系統(tǒng)的GPS時(shí)、儒略時(shí)、年積日時(shí),并通過(guò)各個(gè)時(shí)間系統(tǒng)的各自相互轉(zhuǎn)換,最后輸出的結(jié)果如下圖所示通過(guò)上圖我們可以看出,得到的結(jié)果還是非常滿意的,程序基本完成了各個(gè)時(shí)間系統(tǒng)的相互轉(zhuǎn)換,從各個(gè)時(shí)間相互轉(zhuǎn)換后得到的時(shí)間結(jié)果,并還原成轉(zhuǎn)換前的數(shù)據(jù),得到的結(jié)果都是完全符合,由此可見我們的計(jì)算結(jié)果是正確的,4.

7、心得體會(huì)這次編程試驗(yàn),雖說(shuō)這次試驗(yàn)比較簡(jiǎn)單,但還是花了較長(zhǎng)的時(shí)間,修修改改的,以前看到過(guò)類似程序,覺(jué)得自己應(yīng)該沒(méi)啥問(wèn)題,應(yīng)該很簡(jiǎn)單,自己能輕易拿下,可真做起來(lái)并不是這么一回事,總是出現(xiàn)一些小bug,不知道問(wèn)題出在那里,明明感覺(jué)公式輸入對(duì)的,語(yǔ)法也沒(méi)啥問(wèn)題,偏偏結(jié)果不對(duì),與期望的值差別很大,最后經(jīng)過(guò)調(diào)試總算解決了這些問(wèn)題,比如有次明明記得公式輸入是正確的,最后發(fā)現(xiàn)還是不小心輸錯(cuò)了,結(jié)果導(dǎo)致錯(cuò)誤。經(jīng)過(guò)這次編程,這次試驗(yàn),使自己的編程水平有了較大的提高,以前很多的時(shí)候都是只看程序,感覺(jué)很簡(jiǎn)單,并不自己動(dòng)手,其實(shí)其中很多問(wèn)題,只有自己親自經(jīng)歷才知道一些簡(jiǎn)單的東西也會(huì)出問(wèn)題,卡住思維,最后經(jīng)過(guò)努力解決了

8、問(wèn)題,心里還是蠻開心的,有一定的成就感。經(jīng)過(guò)這次試驗(yàn),學(xué)到了很多東西,有比較深的感觸,對(duì)VC+不像以前那么排斥了,不像以前總感覺(jué)有點(diǎn)兒懼怕它,現(xiàn)在總算不抵觸他了,希望在以后的學(xué)習(xí)中能夠喜歡上它。5.附錄(程序中的源代碼)#include<iostream>using namespace std;typedef struct tagCOMMONTIMEint year;int month; int day; int hour;int minute;double second;COMMONTIME;/通用時(shí)typedef COMMONTIME *PCOMMONTIME; typedef

9、 struct tagTODlong sn; /秒數(shù)的整數(shù)部分double tos;/秒數(shù)的小數(shù)部分TOD;typedef TOD *PTOD;typedef structlong day; /整數(shù)天數(shù)TOD tod; /一天內(nèi)的秒數(shù)JULIANDAY;/儒略日typedef JULIANDAY *PJULIANDAY;typedef struct tagMJULIANDAYlong day;TOD tod;MJULIANDAY;/新儒略日typedef MJULIANDAY *PMJIANDAY;typedef struct tagTOWlong sn;/秒整數(shù)部分double tos;/秒

10、小數(shù)部分TOW;typedef TOW *PTOW;typedef struct tagGPSTIMEint wn; /周數(shù)TOW tow;/一周內(nèi)的秒數(shù)GPSTIME;/GPS時(shí)typedef GPSTIME *PGPSTIME;typedef struct tagDOYunsigned short year;unsigned short day;TOD tod;DOY;/年積日typedef DOY *PDOY;double FRAC(double morigin)return morigin-long(morigin);/ 取小數(shù)部分void CommonTimeToJulianDay(

11、PCOMMONTIME pct,PJULIANDAY pjd) /通用時(shí)到儒略日的轉(zhuǎn)換 if(pct->year<1900)if(pct->year<80)pct->year+=2000;else pct->year+=1900;double ut=pct->hour + pct->minute/60.0 + pct->second/3600.0;if(pct->month<=2)pct->year-=1;pct->month+=12;pjd->day=int(365.25*pct->year)+int(

12、30.6001*(pct->month+1)+pct->day+int(ut/24+1720981.5);pjd->tod.sn= (pct->hour+12)%24)*3600+pct->minute*60+(int)pct->second;/秒的整數(shù)部分pjd->tod.tos=pct->second-(int)pct->second;/秒的小數(shù)部分 void JulianDayToCommonTime(PJULIANDAY pjd,PCOMMONTIME pct)/儒略日到通用時(shí)的轉(zhuǎn)換double x=pjd->day+(pjd

13、->tod.sn+pjd->tod.tos)/(60.0*60.0*24);int a=int(x+0.5);int b=a+1537;int c=int(b-122.1)/365.25);int d=int(365.25*c);int e=int(b-d)/30.6001);pct->day=b-d-int(30.6001*e);pct->month=e-1-12*int(e/14);pct->year=c-4715-int(7+pct->month)/10);pct->hour=(pjd->tod.sn/3600+12)%24;pct->

14、;minute=(pjd->tod.sn%3600)/60;pct->second=pjd->tod.sn%60+pjd->tod.tos;int N=a%7; void JulianDayToGPSTime(PJULIANDAY pjd,PGPSTIME pgt)/儒略日到GPS時(shí)的轉(zhuǎn)換double x=pjd->day+(pjd->tod.sn+pjd->tod.tos)/(60.0*60.0*24);pgt->wn=int(x-2444244.5)/7);pgt->tow.sn=int(pjd->day-2444244)%7+(

15、pjd->tod.sn/(60.0*60.0*24)-0.5)*86400);pgt->tow.tos=pjd->tod.tos;void GPSTimeToJulianDay(PGPSTIME pgt,PJULIANDAY pjd)/GPS時(shí)到儒略日的轉(zhuǎn)換pjd->day=int(pgt->wn*7+double(pgt->tow.sn)/86400.0+2444244.5);pjd->tod.sn=(pgt->tow.sn+43200)%86400;pjd->tod.tos=pgt->tow.tos;void CommonTime

16、ToGPSTime(PCOMMONTIME pct,PGPSTIME pgt)/通用時(shí)到GPS時(shí)的轉(zhuǎn)換PJULIANDAY pjd=new JULIANDAY;CommonTimeToJulianDay(pct,pjd); JulianDayToGPSTime(pjd,pgt);void GPSTimeToCommonTime(PGPSTIME pgt,PCOMMONTIME pct)/GPS時(shí)到通用時(shí)的轉(zhuǎn)換PJULIANDAY pjd=new JULIANDAY;GPSTimeToJulianDay(pgt,pjd);JulianDayToCommonTime(pjd,pct);void C

17、ommonTimeToDOY (PCOMMONTIME pct, PDOY pdoy)PCOMMONTIME pcto=new COMMONTIME;pcto->year=pct->year;pcto->month=1;pcto->day=1;pcto->hour=0;pcto->minute=0;pcto->second=0;PJULIANDAY pjdo=new JULIANDAY;double JD,JDO;CommonTimeToJulianDay(pcto,pjdo);JDO=pjdo->day+(pjdo->tod.sn+pjd

18、o->tod.tos)/86400;PJULIANDAY pjd=new JULIANDAY;CommonTimeToJulianDay(pct,pjd);JD=pjd->day+(pjd->tod.sn+pjd->tod.tos)/86400;pdoy->day=short(JD-JDO+1);pdoy->year=pct->year;pdoy->tod.sn=long(pct->hour*3600+pct->minute*60+pct->second); pdoy->tod.tos=pct->second-int

19、(pct->second); /*pct->hour*3600+pct->minute*60+pct->second-pdoy->tod.sn;*/void DOYToCommonTime (PDOY pdoy, PCOMMONTIME pct)PCOMMONTIME pcto=new COMMONTIME;pcto->year=pdoy->year;pcto->month=1;pcto->day=1;pcto->hour=0;pcto->minute=0;pcto->second=0;PJULIANDAY pjdo=ne

20、w JULIANDAY; double JD,JDO;CommonTimeToJulianDay(pcto,pjdo);JDO=pjdo->day+(pjdo->tod.sn+pjdo->tod.tos)/86400;JD=JDO+pdoy->day+(pdoy->tod.sn+pdoy->tod.tos)/86400-1;long a,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);pct->da

21、y=short(b-d-(long)(30.6001*e)+FRAC(JD+0.5);pct->month=short(e-1-12*(long)(e/14);pct->year=short(c-4715-(long)(7+pct->month)/10);pct->hour=short(pdoy->tod.sn+pdoy->tod.tos)/3600);pct->minute=short(pdoy->tod.sn+pdoy->tod.tos-pct->hour*3600)/60);pct->second=pdoy->tod

22、.sn+pdoy->tod.tos-pct->hour*3600-pct->minute*60;void GPSTimeToDOY (PGPSTIME pgt, PDOY pdoy)PJULIANDAY pjd=new JULIANDAY;GPSTimeToJulianDay (pgt, pjd);PCOMMONTIME pct=new COMMONTIME;JulianDayToCommonTime (pjd,pct); CommonTimeToDOY (pct,pdoy);void DOYToGPSTime (PDOY pdoy, PGPSTIME pgt) PCOMMO

23、NTIME pct=new COMMONTIME;DOYToCommonTime (pdoy,pct); CommonTimeToGPSTime (pct, pgt);void JulianDayToDOY (PJULIANDAY pjd, PDOY pdoy) PCOMMONTIME pct=new COMMONTIME;JulianDayToCommonTime (pjd, pct);CommonTimeToDOY (pct,pdoy);void DOYToJulianDay (PDOY pdoy, PJULIANDAY pjd)PCOMMONTIME pct=new COMMONTIME

24、;DOYToCommonTime (pdoy,pct);CommonTimeToJulianDay(pct,pjd);void main() PCOMMONTIME pct=new COMMONTIME; PJULIANDAY pjd=new JULIANDAY; PDOY pdoy=new DOY; PGPSTIME pgt= new GPSTIME; pct->year=2011; pct->month=1; pct->day=6; pct->hour=19; pct->minute=38; pct->second=45.26; cout<<

25、"轉(zhuǎn)換之前的通用時(shí)(當(dāng)?shù)貢r(shí)間):" cout<<pct->year<<" "<<pct->month<<" "<<pct->day<<" "<<pct->hour<<":"<<pct->minute<<":"<<pct->second<<endl; cout<<endl; CommonT

26、imeToJulianDay( pct, pjd);/通用時(shí)->儒略日的轉(zhuǎn)換 cout<<"通用時(shí)->儒略日的轉(zhuǎn)換:" cout<<pjd->day<<" "<<pjd->tod.sn<<" "<<pjd->tod.tos<<endl; cout<<endl; JulianDayToCommonTime( pjd, pct);/儒略日->通用時(shí)的轉(zhuǎn)換 cout<<"儒略日->通

27、用時(shí)的轉(zhuǎn)換:" cout<<pct->year<<" "<<pct->month<<" "<<pct->day<<" "<<pct->hour<<":"<<pct->minute<<":"<<pct->second<<endl; cout<<endl; JulianDayToGPSTime( pj

28、d, pgt);/儒略日->GPS時(shí)的轉(zhuǎn)換 cout<<"儒略日->GPS時(shí)的轉(zhuǎn)換:" cout<<pgt->wn<<" "<<pgt->tow.sn<<" "<<pgt->tow.tos<<endl; cout<<endl; GPSTimeToJulianDay( pgt, pjd);/GPS時(shí)->儒略日的轉(zhuǎn)換 cout<<"GPS時(shí)->儒略日的轉(zhuǎn)換:" cout&

29、lt;<pjd->day<<" "<<pjd->tod.sn<<" "<<pjd->tod.tos<<endl; cout<<endl; CommonTimeToGPSTime( pct, pgt);/通用時(shí)->GPS時(shí)的轉(zhuǎn)換 cout<<"通用時(shí)->GPS時(shí)的轉(zhuǎn)換:" cout<<pgt->wn<<" "<<pgt->tow.sn<<&

30、quot; "<<pgt->tow.tos<<endl; cout<<endl; GPSTimeToCommonTime( pgt, pct);/GPS時(shí)->通用時(shí)的轉(zhuǎn)換 cout<<"GPS時(shí)->通用時(shí)的轉(zhuǎn)換:" cout<<pct->year<<" "<<pct->month<<" "<<pct->day<<" "<<pct->h

31、our<<":"<<pct->minute<<":"<<pct->second<<endl; cout<<endl; CommonTimeToDOY ( pct, pdoy);/通用時(shí)->年積日 cout<<"通用時(shí)->年積日:" cout<<pdoy->year<<" "<<pdoy->day<<" "<<pdoy-

32、>tod.sn<<" "<<pdoy->tod.tos<<endl; cout<<endl; DOYToCommonTime (pdoy, pct);/年積日->通用時(shí) cout<<"年積日->通用時(shí):" cout<<pct->year<<" "<<pct->month<<" "<<pct->day<<" "<<

33、pct->hour<<":"<<pct->minute<<":"<<pct->second<<endl; cout<<endl; GPSTimeToDOY ( pgt, pdoy);/GPS時(shí)->年積日 cout<<"GPS時(shí)->年積日:" cout<<pdoy->year<<" "<<pdoy->day<<" "<<

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論