GPS課程設(shè)計(jì)報(bào)告_第1頁(yè)
GPS課程設(shè)計(jì)報(bào)告_第2頁(yè)
GPS課程設(shè)計(jì)報(bào)告_第3頁(yè)
GPS課程設(shè)計(jì)報(bào)告_第4頁(yè)
GPS課程設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩12頁(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、GPS測(cè)量原理及應(yīng)用課程設(shè)計(jì)報(bào)告題 目:GPS衛(wèi)星位置計(jì)算器 專 業(yè): 測(cè)繪工程 班 級(jí): 2014級(jí)1班 學(xué) 號(hào): 姓 名: 王偉棟 指導(dǎo)老師: 陶庭葉 目錄 課程設(shè)計(jì)任務(wù)與目的 GPS衛(wèi)星位置計(jì)算思路 程序源代碼及說(shuō)明 運(yùn)算截圖 總結(jié)體會(huì) 參考文獻(xiàn)課程設(shè)計(jì)任務(wù)與目的:經(jīng)過(guò)四周的GPS測(cè)量原理及應(yīng)用學(xué)習(xí),我已經(jīng)對(duì)GPS衛(wèi)星定位有了初步的了解,但是沒有經(jīng)過(guò)實(shí)踐,對(duì)課本上的知識(shí)一知半解。經(jīng)老師要求,在規(guī)定時(shí)間內(nèi)編寫一個(gè)可以通過(guò)讀取衛(wèi)星星歷,并輸入觀測(cè)時(shí)刻和參考時(shí)刻,即可計(jì)算出衛(wèi)星坐標(biāo)的程序。本次課設(shè)通過(guò)設(shè)計(jì)GPS衛(wèi)星坐標(biāo)計(jì)算來(lái)鞏固課本知識(shí),熟練地運(yùn)用到日常學(xué)習(xí)生活中。GPS衛(wèi)星位置計(jì)算思路:1.

2、計(jì)算衛(wèi)星運(yùn)行的平均角速度n平均角速度:n0=/(a)3n=n0+n2.計(jì)算規(guī)劃時(shí)間tk對(duì)觀測(cè)時(shí)刻作衛(wèi)星鐘差改正:t=t-tt=a0+a1(t-toc)+a2(t-toc)2tk=t-toe3.觀測(cè)時(shí)刻衛(wèi)星平近點(diǎn)角Mk的計(jì)算Mk=M0+ntk4.計(jì)算偏近點(diǎn)角EkEk=Mk+esinEk 此處利用迭代法計(jì)算Ek5.真近點(diǎn)角Vk的計(jì)算Vk=arctan(1-e2sinEk)/(cosEk-e)6.升交距角k的計(jì)算k=Vk+7.攝動(dòng)改正項(xiàng)u,r,i 的計(jì)算u=Cuccos(2k)+Cussin(2k)r=Crccos(2k)+Crssin(2k)i=Ciccos(2k)+Cissin(2k)8.計(jì)算經(jīng)

3、過(guò)攝動(dòng)改正的升交距角uk,衛(wèi)星矢徑rk和軌道傾角ikuk=k+u rk=a(1-ecosEk)+r ik=i0+i+Itk9.計(jì)算衛(wèi)星在軌道平面坐標(biāo)系的坐標(biāo)xk=rkcosuk yk=rksinuk10.觀測(cè)時(shí)刻升交點(diǎn)經(jīng)度k的計(jì)算k=0+(-e)tk-etoe11.計(jì)算衛(wèi)星在地心固定坐標(biāo)系中的直角坐標(biāo)Xk=xkcosk-ykcosiksinkYk=xksink+ykcosikcoskZk=yksinik程序源代碼及說(shuō)明:/ GPS衛(wèi)星位置計(jì)算Dlg.cpp : 實(shí)現(xiàn)文件/#include stdafx.h#include GPS衛(wèi)星位置計(jì)算.h#include GPS衛(wèi)星位置計(jì)算Dlg.h#i

4、nclude afxdialogex.h#ifdef _DEBUG#define new DEBUG_NEW#endif/ 用于應(yīng)用程序“關(guān)于”菜單項(xiàng)的 CAboutDlg 對(duì)話框class CAboutDlg : public CDialogExpublic:CAboutDlg();/ 對(duì)話框數(shù)據(jù)enum IDD = IDD_ABOUTBOX ;protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV 支持/ 實(shí)現(xiàn)protected:DECLARE_MESSAGE_MAP();CAboutDlg:CAboutDl

5、g() : CDialogEx(CAboutDlg:IDD)void CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialogEx:DoDataExchange(pDX);BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)END_MESSAGE_MAP()/ CGPS衛(wèi)星位置計(jì)算Dlg 對(duì)話框CGPS衛(wèi)星位置計(jì)算Dlg:CGPS衛(wèi)星位置計(jì)算Dlg(CWnd* pParent /*=NULL*/): CDialogEx(CGPS衛(wèi)星位置計(jì)算Dlg:IDD, pParent), datalist(_T(), t(0), re

6、sultlist(_T(), toc(0), t1(0), t2(0)m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);void CGPS衛(wèi)星位置計(jì)算Dlg:DoDataExchange(CDataExchange* pDX)CDialogEx:DoDataExchange(pDX);DDX_Text(pDX, IDC_EDIT1, datalist);DDX_Text(pDX, IDC_EDIT2, t);DDX_Text(pDX, IDC_EDIT3, resultlist);DDX_Text(pDX, IDC_EDIT6, toc);DDX_Te

7、xt(pDX, IDC_EDIT4, t1);DDX_Text(pDX, IDC_EDIT5, t2);BEGIN_MESSAGE_MAP(CGPS衛(wèi)星位置計(jì)算Dlg, CDialogEx)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON1, &CGPS衛(wèi)星位置計(jì)算Dlg:OnBnClickedButton1)ON_BN_CLICKED(IDC_BUTTON2, &CGPS衛(wèi)星位置計(jì)算Dlg:OnBnClickedButton2)ON_BN_CLICKED(IDC_BUTTON3, &CGP

8、S衛(wèi)星位置計(jì)算Dlg:OnBnClickedButton3)ON_BN_CLICKED(IDC_BUTTON4, &CGPS衛(wèi)星位置計(jì)算Dlg:OnBnClickedButton4)ON_BN_CLICKED(IDC_BUTTON5, &CGPS衛(wèi)星位置計(jì)算Dlg:OnBnClickedButton5)END_MESSAGE_MAP()/ CGPS衛(wèi)星位置計(jì)算Dlg 消息處理程序BOOL CGPS衛(wèi)星位置計(jì)算Dlg:OnInitDialog()CDialogEx:OnInitDialog();/ 將“關(guān)于.”菜單項(xiàng)添加到系統(tǒng)菜單中。/ IDM_ABOUTBOX 必須在系統(tǒng)命令范圍內(nèi)。ASSER

9、T(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ 設(shè)置此對(duì)話框的圖標(biāo)。 當(dāng)應(yīng)用程序主窗口不是對(duì)話框時(shí),框架將自動(dòng)/ 執(zhí)行此操作SetIcon(m_hIcon, TRUE);/ 設(shè)置大圖標(biāo)SetIcon(m_hIcon, FALSE);/ 設(shè)置小圖標(biāo)/ TODO: 在此添加額外的初始化代碼return TRUE; / 除非將焦點(diǎn)設(shè)置到控件,否則返回 TRU

10、Evoid CGPS衛(wèi)星位置計(jì)算Dlg:OnSysCommand(UINT nID, LPARAM lParam)if (nID & 0xFFF0) = IDM_ABOUTBOX)CAboutDlg dlgAbout;dlgAbout.DoModal();elseCDialogEx:OnSysCommand(nID, lParam);/ 如果向?qū)υ捒蛱砑幼钚』粹o,則需要下面的代碼/ 來(lái)繪制該圖標(biāo)。 對(duì)于使用文檔/視圖模型的 MFC 應(yīng)用程序,/ 這將由框架自動(dòng)完成。void CGPS衛(wèi)星位置計(jì)算Dlg:OnPaint()if (IsIconic()CPaintDC dc(this); / 用

11、于繪制的設(shè)備上下文SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc(), 0);/ 使圖標(biāo)在工作區(qū)矩形中居中int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;/ 繪制圖標(biāo)dc.DrawI

12、con(x, y, m_hIcon);elseCDialogEx:OnPaint();/當(dāng)用戶拖動(dòng)最小化窗口時(shí)系統(tǒng)調(diào)用此函數(shù)取得光標(biāo)/顯示。HCURSOR CGPS衛(wèi)星位置計(jì)算Dlg:OnQueryDragIcon()return static_cast(m_hIcon);void CGPS衛(wèi)星位置計(jì)算Dlg:OnBnClickedButton1()/ TODO: 在此添加控件通知處理程序代碼/打開選定文件CFileDialog dlgFile(TRUE, _T(txt), NULL, OFN_EXPLORER, _T(文本文件)|*.dat);if (dlgFile.DoModal() =

13、IDCANCEL)return;CString strFileName = dlgFile.GetPathName();CStdioFile sf;if (!sf.Open(strFileName, CFile:modeRead)return;CString strLine;sf.ReadString(strLine);sf.ReadString(strLine);toe = _ttol(strLine.GetBuffer();sf.ReadString(strLine);sf.ReadString(strLine);sqrta = _wtof(strLine.GetBuffer();sf.R

14、eadString(strLine); sf.ReadString(strLine);e = _wtof(strLine.GetBuffer();sf.ReadString(strLine); sf.ReadString(strLine);i0 = _wtof(strLine.GetBuffer();sf.ReadString(strLine);sf.ReadString(strLine);w = _wtof(strLine.GetBuffer();sf.ReadString(strLine);sf.ReadString(strLine);moic0 = _wtof(strLine.GetBu

15、ffer();sf.ReadString(strLine);sf.ReadString(strLine);M0 = _wtof(strLine.GetBuffer();sf.ReadString(strLine); sf.ReadString(strLine);dern = _wtof(strLine.GetBuffer();sf.ReadString(strLine); sf.ReadString(strLine);moic = _wtof(strLine.GetBuffer();sf.ReadString(strLine); sf.ReadString(strLine);I = _wtof

16、(strLine.GetBuffer();sf.ReadString(strLine); sf.ReadString(strLine);Cus = _wtof(strLine.GetBuffer();sf.ReadString(strLine);sf.ReadString(strLine);Cuc = _wtof(strLine.GetBuffer();sf.ReadString(strLine);sf.ReadString(strLine);Cis = _wtof(strLine.GetBuffer();sf.ReadString(strLine); sf.ReadString(strLin

17、e);Cic = _wtof(strLine.GetBuffer();sf.ReadString(strLine);sf.ReadString(strLine);Crs = _wtof(strLine.GetBuffer();sf.ReadString(strLine); sf.ReadString(strLine);Crc = _wtof(strLine.GetBuffer();sf.ReadString(strLine);sf.ReadString(strLine);a0 = _wtof(strLine.GetBuffer();sf.ReadString(strLine);sf.ReadS

18、tring(strLine);a1 = _wtof(strLine.GetBuffer();sf.ReadString(strLine);sf.ReadString(strLine);a2 = _wtof(strLine.GetBuffer();datalist.Format(_T(toe=%5.20f rnsqrta=%5.20f rne=%5.20f rni0=%5.20f rnw=%5.20f rnmoic0=%5.20f rnM0=%5.20f rndern=%5.20f rnmoic=%5.20f rnI=%5.20f rnCus=%5.20f rnCuc=%5.20f rnCis=

19、%5.20f rnCic=%5.20f rnCrs=%5.20f rnCrc=%5.20f rna0=%5.20f rna1=%5.20f rna2=%5.20f),toe, sqrta, e, i0, w, moic0, M0, dern, moic, I, Cus, Cuc, Cis, Cic, Crs, Crc,a0,a1,a2);UpdateData(false); void CGPS衛(wèi)星位置計(jì)算Dlg:OnBnClickedButton2()UpdateData(true);/計(jì)算衛(wèi)星運(yùn)行的平均角速度ndouble miU = 3.e14;double n0 = sqrt(miU)

20、/ pow(sqrta, 3);double n = n0 + dern;/計(jì)算歸化時(shí)間tkdouble T,dn,t0;t0 = t * 3600 + t1 * 60 + t2;dn = a0 + a1*(t0- toc) + a2*(t0 - toc)*(t0 - toc);T=t0-dn;double tk = T - toe;/觀測(cè)時(shí)刻衛(wèi)星平近點(diǎn)角Mk的計(jì)算double Mk = M0 + n*tk;/計(jì)算偏近點(diǎn)角Ekdouble Ek = Mk;double Ek2;doEk2 = Ek;Ek = Mk + e*sin(Ek); while (fabs(Ek2-Ek)1e-9);/真

21、近點(diǎn)角Vk的計(jì)算double Vk;Vk = atan(sqrt(1 - e*e)*sin(Ek) / (cos(Ek) - e);/升交距角Fkdouble Fk = Vk + w;/攝動(dòng)改正項(xiàng)Qu,Qr,Qi的計(jì)算double Qu, Qr, Qi;Qu = Cuc*cos(2 * Fk) + Cus*sin(2 * Fk);Qr = Crc*cos(2 * Fk) + Crs*sin(2 * Fk);Qi = Cic*cos(2 * Fk) + Cis*sin(2 * Fk);/計(jì)算經(jīng)過(guò)攝動(dòng)改正的升交距角uk、衛(wèi)星矢徑rk和軌道傾角ikdouble uk, rk, ik;uk = Fk+

22、Qu;rk = sqrta*sqrta*(1 - e*cos(Ek) + Qr;ik = i0 + Qi + I*tk;/計(jì)算衛(wèi)星在軌道平面坐標(biāo)系的坐標(biāo)double xk, yk;xk = rk*cos(uk);yk = rk*sin(uk);/觀測(cè)時(shí)刻升交點(diǎn)經(jīng)度moick的計(jì)算double moick, we;we = 7.e-5;moick = moic0 + (moic - we)*tk - we*toe;/計(jì)算衛(wèi)星在地心固定坐標(biāo)系中的直角坐標(biāo)double Xk, Yk, Zk;Xk = xk*cos(moick) - yk*cos(ik)*sin(moick);Yk = xk*sin(

23、moick) + yk*cos(ik)*cos(moick);Zk = yk*sin(ik);resultlist.Format(_T(Xk=%f rnYk=%f rnZk=%f), Xk, Yk, Zk);UpdateData(false);void CGPS衛(wèi)星位置計(jì)算Dlg:OnBnClickedButton3()/ TODO: 在此添加控件通知處理程序代碼/退出程序exit(0);void CGPS衛(wèi)星位置計(jì)算Dlg:OnBnClickedButton4()/用于清除程序框內(nèi)的數(shù)據(jù)CWnd *pWnd = GetWindow(GW_CHILD);TCHAR szBuf256;while (pWnd != NULL)GetClassName(pWnd-m_hWnd, szBuf, 256);if (_tcsicmp(szBuf, _T(Edit) = 0)pWnd-SetWindowText(_T();pWnd = pWnd-GetNextWindow();void CGPS衛(wèi)星位置計(jì)算Dlg:OnBnClickedButton5()/ TODO: 在此添加控件通知處理程序代碼/用于新建txt文件來(lái)保存衛(wèi)星坐標(biāo)數(shù)據(jù)。

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論