




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、進行空間大地測量所需時間系統(tǒng)的相互轉換1. 時間標示法從古至今,世界各國曾出現(xiàn)過多種歷法,如羅馬歷、儒略日、格里高利以及 我國的農(nóng)歷等,目前世界上廣泛采用的歷法是格里高利歷。1.1. 格里高利時(通用時)格里高利歷也稱公歷,現(xiàn)被世界各國廣泛采用。格里高利歷是一個由146097 天所組成的400年周期為基礎,1年的平均長度為365.2425天。根據(jù)格里高利歷 1年被劃分為12個月。其標示時間時采用年、月、日、時、分、秒的方法。這 種計時反映季節(jié)變化,與日常生活密切相關,但非連續(xù),不利于數(shù)學表達和科學 計算1.2. 儒略日儒略日是一種不涉及年、月等概念的長期連續(xù)的記日法,在天文學、空間大 地測量和
2、衛(wèi)星導航定位中經(jīng)常使用。這種方法是有Scaliger與1583年提出的,為紀念他的父親儒略而命名為儒略日。儒略日的起點訂在公元前4713年(天文學上記為-4712年)1月1日格林威治時間平午(世界時12:00),即JD0 指定為 4713 B.C. 1 月 1 日 12:00 UT 到 4713 B.C. 1 月 2 日 12:00 UT 的 24小時。每一天賦予了一個唯一的數(shù)字。由于儒略日數(shù)字位數(shù)太多,國際 天文學聯(lián)合會于1973年采用簡化儒略日(MJD ),其定義為 MJD = JD -2400000.5。MJD相應的起點是 1858年11月17日世界時 0時。 例如1979 年10月1日
3、零時儒略日數(shù)為 2,444,147.5。1.3. GPS 時GPS系統(tǒng)內部所采用的時間系統(tǒng)是GPS時間,GPS時以1980年1月6日子夜為起點,用周數(shù)(一個星期七天)和周內的秒數(shù)來表示1.4. 年積日所謂年積日就是指的是從每年的 1月1日起開始累計的天數(shù), 計數(shù)從1 開始(即每年1月1日的年積日為1),如2004年5月1日的年積日為122。 用他可以方便的求出一年內兩個時刻T1和T2問的時間間隔。2. 各個時間系統(tǒng)的相互轉換各個時間系統(tǒng)都有嚴格的轉換公式,其轉換的主要思想是把通用時、GPS時間、和年積日分別轉換為儒略日,然后以儒略日為媒介,實現(xiàn)任意 兩個時間系統(tǒng)的相互轉換,如下圖所示:轉換思想
4、2.1通用時與儒略日間的相互轉換2.1.1 由通用時轉換到儒略日(CommonTimeToJulianDay( pct, pjd)JD =INT365.25y 1 INT |30.6001 m 1D UT.,24 1720981.5其中如果 MK 2,則 y=Y-1, m=M+12如果 M>2 貝U y=Y, m=MJD為儒略日,Y為年,M為月,D為日,UT為世界時。2.1.2 由儒略日轉換到通用時(JulianDayToCommonTime( pjd, pct)a =INT I.JD 0.51b =a 1537c =IN"b -122.1 365.25d =INT 065.2
5、5.cle =INT 伽-d 30.6001D =b -d - INT 00.6001el FRAC I.JD 0.5】 日M =e1 12 INT le/14】(月)Y =c -4715 -IN"7 M 10(年)N =mod “NT JD+0.5】,7(星期幾。N=0,星期一;N =1,星期二;.)2.2通用時與GPS時間問的相互轉換2.2.1 由通用時轉換到 GPS 時間(CommonTimeToGPSTime( pct, pgt主要分兩步進行:第一步:計算GPS周GPSWEEK=INT JD-2444244.5 7第二步:計算一周內的秒數(shù)2.2.2 由 GPS 時間轉換到通用
6、時(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時與年積日間的相互轉換參照儒略日與年積日之間轉換方法進行就
7、可以得到結果。GPS 時轉換到年積日(GPSTimeToDOY ( pgt, pdoy)年積日轉換到 GPS 時(DOYToGPSTime (pdoy, pgt)3. 算例及結果通過在VC+6.0環(huán)境下編寫了各個坐標系統(tǒng)的相互轉換,并得到了轉換的 結果,在試驗中使用的已知數(shù)據(jù)是即使數(shù)據(jù),取的時間是當時時間2011年1月7日19時38分45.26秒,用這個已知數(shù)據(jù)代入函數(shù)中,分別求得各個時間系統(tǒng) 的GPS時、儒略時、年積日時,并通過各個時間系統(tǒng)的各自相互轉換,最后輸 出的結果如下圖所示TDocuments and SetiingBAdmini stratoFS ti meDebugW me.ex
8、e1轉換之前的通用時(當?shù)貢r間):2BM 1 6 19:38 =45.26 建用時儒略日的轉換= 2455568 27525 0.26 儒略日-通用時的轉換:2011 1 6 19:38:45-26 儒略日->GPS時的轉換:161? 416325 0.26 卯$時-儒略日的轉換= 24SSS68 27525 0*26 畫用時_>GPS時的轉換: 1617 416325 0.26 =P£ 時-, 通用時的轉換= 2011 1 6 19:38:45.26 11用時一>年積日 宓日1© 6 7072S 0.2&年積日通用時:2010 1 6 19:38
9、:45.26 泗時-,年積日德010 6 70725 0.26 年積日->GPS 時 T56S 329925 0.26 儒略日年積日湖 1© 6 70725 0.2& 年積日_>儒略日二24弱2國3 27525 0.26 經(jīng)過各種轉換后還原得到的通用時= 2010 16 19:38:45.26 Pfbww any 卜號¥ ctmtinue通過上圖我們可以看出,得到的結果還是非常滿意的,程序基本完成了各 個時間系統(tǒng)的相互轉換,從各個時間相互轉換后得到的時間結果,并還原成轉換 前的數(shù)據(jù),得到的結果都是完全符合,由此可見我們的計算結果是正確的,4. 心得體會這
10、次編程試驗,雖說這次試驗比較簡單,但還是花了較長的時間,修修改改 的,以前看到過類似程序,覺得自己應該沒啥問題,應該很簡單,自己能輕易拿 下,可真做起來并不是這么一回事,總是出現(xiàn)一些小bug,不知道問題出在那里, 明明感覺公式輸入對的,語法也沒啥問題,偏偏結果不對,與期望的值差別很大, 最后經(jīng)過調試總算解決了這些問題,比如有次明明記得公式輸入是正確的,最后 發(fā)現(xiàn)還是不小心輸錯了,結果導致錯誤。經(jīng)過這次編程,這次試驗,使自己的編 程水平有了較大的提高,以前很多的時候都是只看程序,感覺很簡單,并不自己動手,其實其中很多問題,只有自己親自經(jīng)歷才知道一些簡單的東西也會出問題, 卡住思維,最后經(jīng)過努力解
11、決了問題,心里還是蠻開心的,有一定的成就感。經(jīng) 過這次試驗,學到了很多東西,有比較深的感觸,對VC+不像以前那么排斥了, 不像以前總感覺有點兒懼怕它,現(xiàn)在總算不抵觸他了,希望在以后的學習中能夠 喜歡上它。5. 附錄(程序中的源代碼)#include<iostream>using namespace std;typedef struct tagCOMMONTIMEint year;int month;int day;int hour;int minute;double second;COMMONTIME;/ 通用時typedef COMMONTIME *PCOMMONTIME;typ
12、edef struct tagTODlong sn; 秒數(shù)的整數(shù)部分double tos;/秒數(shù)的小數(shù)部分TOD;typedef TOD *PTOD;typedef structlong day; 整數(shù)天數(shù)TOD tod; 一天內的秒數(shù)JULIANDAY;/ 儒略日typedef JULIANDAY *PJULIANDAY;typedef struct tagMJULIANDAYlong day;TOD tod;MJULIANDAY;/ 新儒略日typedef MJULIANDAY *PMJIANDAY;typedef struct tagTOWlong sn;/砂整數(shù)部分double tos
13、;/秒小數(shù)部分TOW;typedef TOW *PTOW;typedef struct tagGPSTIMEint wn; 周數(shù)TOW tow;/ 一周內的秒數(shù)GPSTIME;/GPS 時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 CommonTimeToJulian
14、Day(PCOMMONTIME pct,PJULIANDAY pjd) / 通 用時到儒略日的轉換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->yea
15、r)+int(30.6001*(pct->month+1)+pct->day+in t(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)儒 略日到通用時的轉換(double x=pjd->
16、;day+(pjd->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)%2
17、4;pct->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)/ 儒略日至U GPS 時的轉換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-
18、2444244)%7+(pjd->tod.sn/(60.0*60.0*24)-0.5)*86400);pgt->tow.tos=pjd->tod.tos;void GPSTimeToJulianDay(PGPSTIME pgt,PJULIANDAY pjd)/GPS 時到儒略 日的轉換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;v
19、oid CommonTimeToGPSTime(PCOMMONTIME pct,PGPSTIME pgt)/通用 時到GPS時的轉換PJULIANDAY pjd=new JULIANDAY;CommonTimeToJulianDay(pct,pjd);JulianDayToGPSTime(pjd,pgt);void GPSTimeToCommonTime(PGPSTIME pgt,PCOMMONTIME pct)/GPS 時到通用時的轉換PJULIANDAY pjd=new JULIANDAY;GPSTimeToJulianDay(pgt,pjd);JulianDayToCommonTime(
20、pjd,pct);void CommonTimeToDOY (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+(pjd
21、o->tod.sn+pjdo->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
22、->second-int(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;PJU
23、LIANDAY pjdo=new 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.60
24、01);pct->day=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->secon
25、d=pdoy->tod.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, PGPSTIM
26、E pgt)PCOMMONTIME 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
27、COMMONTIME;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;coutvv”轉換之前的通
28、用時(當?shù)貢r間):cout«pct->year«" "«pct->month«" "«pct->day«""«pct->hour«":"«pct->minute«":"«pct->second«endl;cout«endl;CommonTimeToJulianDay( pct, pjd);通用時->儒略日的轉換 cout
29、71;"通用時->儒略日的轉換:"cout«pjd->day«" "«pjd->tod.sn«" "«pjd->tod.tos«endl;cout«endl;JulianDayToCommonTime( pjd, pct);/儒略日->通用時的轉換 coutvv”儒略日->通用時的轉換:"cout«pct->year«" "«pct->month«&
30、quot; "«pct->day«""«pct->hour«":"«pct->minute«":"«pct->second«endl;cout«endl;JulianDayToGPSTime( pjd, pgt);/(需略日->GPS 時的轉換 coutvv”儒略日->GPS時的轉換:"cout«pgt->wn«" "«pgt->
31、tow.sn«" "«pgt->tow.tos«endl;cout«endl;GPSTimeToJulianDay( pgt, pjd);/GPS時->儒略日的轉換 cout«"GPS時->儒略日的轉換:"cout«pjd->day«" "«pjd->tod.sn«" "«pjd->tod.tos«endl; cout«endl;CommonTimeToGPST
32、ime( pct, pgt);/fi用時->GPS 時的轉換 cout«"通用時->GPS時的轉換:"cout«pgt->wn«" "«pgt->tow.sn«" "«pgt->tow.tos«endl;cout«endl;GPSTimeToCommonTime( pgt, pct);/GPS時->通用時的轉換 cout«"GPS時->通用時的轉換:"cout«pct->
33、;year«" "«pct->month«" "«pct->day«""«pct->hour«":"«pct->minute«":"«pct->second«endl;cout«endl;CommonTimeToDOY ( pct, pdoy);通用時->年積日 cout«"通用時->年積日:"cout
34、171;pdoy->year«" "«pdoy->day«" "«pdoy->tod.sn«""«pdoy->tod.tos«endl;cout«endl;DOYToCommonTime (pdoy, pct);/年積日->通用時 cout«"年積日->通用時:"cout«pct->year«" "«pct->month«" "«pct->day«""«pct->hour«":"«pct->minute«":"«pct->second«endl;cou
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國鑄銅產(chǎn)品市場運行現(xiàn)狀與發(fā)展前景分析報告
- 2025-2030年中國視頻監(jiān)控設備行業(yè)運行動態(tài)分析與營銷策略研究報告
- 2025-2030年中國腸衣市場運營狀況及發(fā)展趨勢分析報告
- 2025-2030年中國聚乙二醇單甲醚行業(yè)發(fā)展趨勢規(guī)劃分析報告
- 2025-2030年中國皮革化料行業(yè)發(fā)展趨勢規(guī)劃研究報告
- 2025年公共場所室內停車場所租賃合同范文
- 2025年辦公場所購買合同模板
- 2025年衛(wèi)生用品供貨合同歸納
- 2025年勞務合同與標準范本
- 2025年帶司機汽車租賃合同協(xié)議樣本
- 2025年中華工商時報社事業(yè)單位招聘12人歷年高頻重點模擬試卷提升(共500題附帶答案詳解)
- 安全生產(chǎn)事故調查與案例分析(第3版)課件 呂淑然 第1-4章 緒論-應急預案編制與應急管理
- 《職業(yè)技能等級評價規(guī)范編制指南編制說明》
- 《教育強國建設規(guī)劃綱要(2024-2035年)》解讀講座
- 2024-2025學年廣東省深圳市寶安區(qū)高一(上)期末數(shù)學試卷(含答案)
- 畜禽養(yǎng)殖場惡臭污染物排放及其處理技術研究進展
- 超聲內鏡引導下穿刺活檢術的配合及護理
- 同濟大學《線性代數(shù)》-課件
- 新生兒常見的產(chǎn)傷及護理
- 申請兩癌補助申請書
- 香港審計合同范例
評論
0/150
提交評論