GPS課程設(shè)計(jì)報(bào)告_第1頁
GPS課程設(shè)計(jì)報(bào)告_第2頁
GPS課程設(shè)計(jì)報(bào)告_第3頁
GPS課程設(shè)計(jì)報(bào)告_第4頁
GPS課程設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

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

2、生活中。GPS衛(wèi)星位置計(jì)算思路:1.計(jì)算衛(wèi)星運(yùn)行的平均角速度n平均角速度:n0=/(a)3n=n0+n2.計(jì)算規(guī)劃時(shí)間tk對觀測時(shí)刻作衛(wèi)星鐘差改正:t=t'-tt=a0+a1(t'-toc)+a2(t'-toc)2tk=t-toe3.觀測時(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.攝動改正項(xiàng)u,r,i 的計(jì)算u=Cuccos(2k)+Cussin(2k)r=Crccos(2k)+Crssi

3、n(2k)i=Ciccos(2k)+Cissin(2k)8.計(jì)算經(jī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.觀測時(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程序源代碼及說明:/ GPS衛(wèi)星位置計(jì)算Dlg.cpp : 實(shí)現(xiàn)文件/#include "stdafx.h"

4、#include "GPS衛(wèi)星位置計(jì)算.h"#include "GPS衛(wèi)星位置計(jì)算Dlg.h"#include "afxdialogex.h"#ifdef _DEBUG#define new DEBUG_NEW#endif/ 用于應(yīng)用程序“關(guān)于”菜單項(xiàng)的 CAboutDlg 對話框class CAboutDlg : public CDialogExpublic:CAboutDlg();/ 對話框數(shù)據(jù)enum IDD = IDD_ABOUTBOX ;protected:virtual void DoDataExchange(CDataE

5、xchange* pDX); / DDX/DDV 支持/ 實(shí)現(xiàn)protected:DECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDialogEx(CAboutDlg:IDD)void CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialogEx:DoDataExchange(pDX);BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)END_MESSAGE_MAP()/ CGPS衛(wèi)星位置計(jì)算Dlg 對話框CGPS衛(wèi)星位置計(jì)算Dlg:CGPS衛(wèi)星位置計(jì)算Dlg(CWnd* p

6、Parent /*=NULL*/): CDialogEx(CGPS衛(wèi)星位置計(jì)算Dlg:IDD, pParent), datalist(_T(""), t(0), resultlist(_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, da

7、talist);DDX_Text(pDX, IDC_EDIT2, t);DDX_Text(pDX, IDC_EDIT3, resultlist);DDX_Text(pDX, IDC_EDIT6, toc);DDX_Text(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ì)算Dl

8、g:OnBnClickedButton1)ON_BN_CLICKED(IDC_BUTTON2, &CGPS衛(wèi)星位置計(jì)算Dlg:OnBnClickedButton2)ON_BN_CLICKED(IDC_BUTTON3, &CGPS衛(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()/

9、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)。ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL)BOOL bNameValid;CString strAboutM

10、enu;bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);ASSERT(bNameValid);if (!strAboutMenu.IsEmpty()pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ 設(shè)置此對話框的圖標(biāo)。 當(dāng)應(yīng)用程序主窗口不是對話框時(shí),框架將自動/ 執(zhí)行此操作SetIcon(m_hIcon, TRUE);/ 設(shè)置大圖標(biāo)SetIcon(m_hIcon, FALSE);/ 設(shè)置

11、小圖標(biāo)/ TODO: 在此添加額外的初始化代碼return TRUE; / 除非將焦點(diǎn)設(shè)置到控件,否則返回 TRUEvoid 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,則需要下面的代碼/ 來繪制該圖標(biāo)。 對于使用文檔/視圖模型的 MFC 應(yīng)用程序,/ 這將由框架自動完成。voi

12、d CGPS衛(wèi)星位置計(jì)算Dlg:OnPaint()if (IsIconic()CPaintDC dc(this); / 用于繪制的設(shè)備上下文SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc(), 0);/ 使圖標(biāo)在工作區(qū)矩形中居中int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Wi

13、dth() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;/ 繪制圖標(biāo)dc.DrawIcon(x, y, m_hIcon);elseCDialogEx:OnPaint();/當(dāng)用戶拖動最小化窗口時(shí)系統(tǒng)調(diào)用此函數(shù)取得光標(biāo)/顯示。HCURSOR CGPS衛(wèi)星位置計(jì)算Dlg:OnQueryDragIcon()return static_cast<HCURSOR>(m_hIcon);void CGPS衛(wèi)星位置計(jì)算Dlg:OnBnClickedButton1()/ TODO: 在此添加控件通知處理程序代碼/打開選定文件C

14、FileDialog dlgFile(TRUE, _T("txt"), NULL, OFN_EXPLORER, _T("(文本文件)|*.dat");if (dlgFile.DoModal() = IDCANCEL)return;CString strFileName = dlgFile.GetPathName();CStdioFile sf;if (!sf.Open(strFileName, CFile:modeRead)return;CString strLine;sf.ReadString(strLine);sf.ReadString(strLin

15、e);toe = _ttol(strLine.GetBuffer();sf.ReadString(strLine);sf.ReadString(strLine);sqrta = _wtof(strLine.GetBuffer();sf.ReadString(strLine); sf.ReadString(strLine);e = _wtof(strLine.GetBuffer();sf.ReadString(strLine); sf.ReadString(strLine);i0 = _wtof(strLine.GetBuffer();sf.ReadString(strLine);sf.Read

16、String(strLine);w = _wtof(strLine.GetBuffer();sf.ReadString(strLine);sf.ReadString(strLine);moic0 = _wtof(strLine.GetBuffer();sf.ReadString(strLine);sf.ReadString(strLine);M0 = _wtof(strLine.GetBuffer();sf.ReadString(strLine); sf.ReadString(strLine);dern = _wtof(strLine.GetBuffer();sf.ReadString(str

17、Line); sf.ReadString(strLine);moic = _wtof(strLine.GetBuffer();sf.ReadString(strLine); sf.ReadString(strLine);I = _wtof(strLine.GetBuffer();sf.ReadString(strLine); sf.ReadString(strLine);Cus = _wtof(strLine.GetBuffer();sf.ReadString(strLine);sf.ReadString(strLine);Cuc = _wtof(strLine.GetBuffer();sf.

18、ReadString(strLine);sf.ReadString(strLine);Cis = _wtof(strLine.GetBuffer();sf.ReadString(strLine); sf.ReadString(strLine);Cic = _wtof(strLine.GetBuffer();sf.ReadString(strLine);sf.ReadString(strLine);Crs = _wtof(strLine.GetBuffer();sf.ReadString(strLine); sf.ReadString(strLine);Crc = _wtof(strLine.G

19、etBuffer();sf.ReadString(strLine);sf.ReadString(strLine);a0 = _wtof(strLine.GetBuffer();sf.ReadString(strLine);sf.ReadString(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.

20、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=%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)

21、;UpdateData(false); void CGPS衛(wèi)星位置計(jì)算Dlg:OnBnClickedButton2()UpdateData(true);/計(jì)算衛(wèi)星運(yùn)行的平均角速度ndouble miU = 3.986005e14;double n0 = sqrt(miU) / 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 -

22、 toe;/觀測時(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);/真近點(diǎn)角Vk的計(jì)算double Vk;Vk = atan(sqrt(1 - e*e)*sin(Ek) / (cos(Ek) - e);/升交距角Fkdouble Fk = Vk + w;/攝動改正項(xiàng)Qu,Qr,Qi的計(jì)算double Qu, Qr, Qi;Qu = Cuc*cos(2 * Fk) + Cus*sin(2

23、 * Fk);Qr = Crc*cos(2 * Fk) + Crs*sin(2 * Fk);Qi = Cic*cos(2 * Fk) + Cis*sin(2 * Fk);/計(jì)算經(jīng)過攝動改正的升交距角uk、衛(wèi)星矢徑rk和軌道傾角ikdouble uk, rk, ik;uk = Fk+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);/觀測時(shí)刻升交點(diǎn)經(jīng)度moick的計(jì)算double moick, we;we

24、 = 7.29211567e-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(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->

溫馨提示

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

評論

0/150

提交評論