版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、精選文庫導航與定位上機實習報告學生姓名: 孔 令 周 班 學 號: 20101002021/11610211 指導教師: 黃鷹 、 徐戰(zhàn)亞 中國地質大學(武漢)信息工程學院 2011年 7月實習一 GPS設備使用【實驗目的】(1) 熟悉GPS設備的使用(2) 熟悉GPS絕對靜態(tài)定位和絕對動態(tài)定位(3) 使用GPS設備得出某一點、某一線、某一面的相關數據【實驗設備】動態(tài)GPS接收機、靜態(tài)GPS接收機、天線、GPS定位設備由于設別數目的限制,這次實習改用一個google的軟件,獲得GPS數據,此圖為軟件中的一張截圖,上面顯示了精準度157feet,衛(wèi)星數目,每顆衛(wèi)星的信號強度,這張圖則顯示了所在地
2、的經度和緯度分別為東經114度23分30.013秒北緯30度31分19.809秒?!緦嶒灢襟E】時間:2012年9月2日中午12點30開始,下午三點中結束。內容:1、 測量點:測量點在北區(qū),從藝術與傳媒學院開始,經過北宗,北區(qū)食堂,北門,北區(qū)體育館直到圖書館這一段路程,整個路線成G字型(如下圖)。2、 測量線:線的話主要是藝術與傳媒學院到北宗與隧道口延伸的路相交的 丁字路口,然后從該路口一直到北區(qū)食堂下面,在就走向北區(qū)校門,進而轉向體育館側邊的路,繞過體育館到達圖書館正門這樣一個路線(如下圖)。3、 測量面:該路線主要包括了圖書館,北區(qū)籃球場,排球場,北一樓,北 區(qū)圖書館,經管院樓還有外國語學院
3、樓。 【實驗結果】部分數據(全部數據在GPS_DATA.xls中):實習二 GPS定位接口解析與開發(fā)【實驗題目】GPS信號解析編寫小程序讀取GPS信號并進行解析,將解析結果以一定形式展現出來。 根據老師用GPS導航儀測量得到的測量數據進行解析,將track.txt中的數據進行解析,根據不同的格式按照NMEA-0183協議對導航電文進行GPS信息的解析:1、使用語言不限:C , C+ ,C# ,JAVA2、對于獲取信號可采用以一定時間間隔讀取文件中GPS信號的形式代替從串口中讀取信號。3、該實驗基本要求能解析出空間信息(即解析GPRMC格式的GPS信號),其他信號格式的解析以及星歷圖的繪制可在完
4、成基本要求之后進行擴展。 4、對解析出來的數據進行畫圖處理,得到真正的軌跡?!緦嶒炘怼縂PS設備通過對接收到的導航電文進行分析處理,計算出設備所在的經緯度、海拔、航速、航向等空間信息,并按照規(guī)定的協議將空間信息以及衛(wèi)星信息進行組織,將有組織的數據解析出來然后做應用。初始化串口打開串口按字節(jié)讀取串口發(fā)出的字符終止字符? 是 將所得到的字符拼接成字符串 否 根據字符串內容進行GSP解析GPS信號結果應用關閉串口【實驗設計】1、 設計思想根據提供的txt文檔,實現程序與文件之間的通信,讀取txt中的內容,然后根據GPS解析協議將其進行解析。得到經緯度坐標,然后將經緯度坐標進行操作得到真實的軌跡路線
5、圖做出顯示。2、 詳細設計聲明對文件的關聯對象Fielstream對象,聲明對文件進行讀取的對象Streamreader,然后對文件關聯對象進行關聯本地文件,然后用此關聯對象初始化文件讀取對象,然后對文件進行一步步的讀取,對讀取之后的數據進行立刻解析,根據解析協議的種類不同對不同類型的GPS數據進行解析,然后做輸出處理。根據文件的頭部信息我們可以知道經緯度在那些地方,由于我們只需要解析GPRMC數據,所以經緯度是很容易得到的數據,得到經緯度字符串之后就可以通過函數轉換成可操作的經緯度數據,得到經緯度數據之后就轉換成為屏幕坐標,然后就可以劃線了。經過劃線處理連續(xù)的劃線就成就了軌跡。關于平滑的問題
6、:由于畫出來的線可能會有一些點的問題會出現斷線的可能和不連續(xù),所以要做平滑處理,記錄多個點,每兩個點之間都劃線一條就能滿足平滑的要求。讀取數據準備文件關聯文件關聯準備文件解析讀取文件GPGSVGPRMCGPSGAGPGGA有效?無效數據 否 是使用經緯度繪圖得到經緯度使用經緯度繪圖【成果展示】【實驗心得】【調試報告】1. 第一個遇到的問題是讀文件的問題:因為要解析數據就必須要對文本進行解析,以前寫的C#程序都是比較簡單的程序,所有的操作都在內存中進行,只需要輸入輸出就夠了,但是大型的問題光靠內存是遠遠不夠的,數據量一大就不可能把所有的數據放在內存中,GPS這種數據大多來遙感數據和測繪數據,這些
7、數據量都是幾何倍數的增長,要在內存中進行處理根本不可能,所以這個問題也是學習GPS所必須面臨的問題,我第一次實習課基本就花在C#文件讀取上面了。一旦文件可以讀取其他的就好辦,主要是聲明一個文件流對象,然后將此文件流對象關聯文件,在用這個文件流對象初始化一個讀取流對象,然后調用讀取流對象的讀取方法。這樣就可以實現讀取了。2. tablecontrol控件:這是我第一次使用這個控件,真的挺好用的,效果也不錯??紤]到要對不同類型的GPS數據進行顯示,如果全部放在一個界面中就顯得非常臃腫,所以我將他們分開在幾個頁面中,這幾個頁面通過tablecontrol控件進行管理,這樣就顯得比較有組織。3. st
8、ring的分段:因為要對不同數據進行判斷,第一件事就是對數據集的頭進行判斷跟分類,可能是考慮到這一點,所有的GPS數據都是非常規(guī)矩的,頭的長度都是一樣長的,這樣判斷起來也比較方便,而且組織的時候都是用“,”做分段,這樣就比較容易對數據進行切割,然后處理。4. 經緯度坐標轉化成為屏幕坐標的方法:這是我早google上搜到的方法,首先把控制的警衛(wèi)框架找到,最大經度減去最小經度,得到經度差。最大緯度減去最小緯度,得到緯度差。然后將經度差乘以3600除以面板寬度,緯度差乘以3600除以面板寬度得到每秒經緯度代表的屏幕像素坐標。最后為了讓圖像分布均勻。將實際的經緯度轉化成秒,然后減去最小經度,然后除以每
9、秒經度代表的屏幕像素坐標。同理做緯度均勻。最后將坐標點得到然后劃線?!拘牡皿w會】 GPS是一個非常重要的技術,精確的GPS數據時一把雙刃劍。在好的一面他可以方便人們做很多東西,在今后的時代找東西將離不開地圖,而地圖如果要做到精確的話就不得不用到GPS數據。所以GPS數據是定量解析的基礎數據。所有的定量分析都需要解析并且處理這些數據,這在生活上會給我們很大的方便,不僅在查找,交通導航等等方面都會有重要的用途。所以這次實習對我們幫助很大,他讓我們了解到生活中的GPS數據的結構,讓我們學以致用,了解熟悉GPS并且愛上GPS,我們熟悉他,解析他,應用它??梢詣?chuàng)造出許多方便的應用于社會價值。在醫(yī)療,規(guī)劃
10、,建設等方方面面都是重要的。 壞的一方面是過于精確的GPS數據讓我們變得不安全,不僅是數據被盜竊之后可能造成國家的安全問題,對方的導彈什么的可以精確打擊。對我們的危險太大了。錯誤的解析也會造成許多社會問題,比如修的地鐵因為數據的偏差或解析的錯誤會造成重大的事故。所以我們處理GPS數據肩負十分重要的使命。我們會好好處理這些數據的。 然后對于做這樣一次實習我學到很多東西:認識到生活中真真正正的GPS數據的樣子和解析過程。他所遵循的結構規(guī)范,還有認識到公共接口的重要性,他 讓數據變得有規(guī)矩。讓我樹立了做好一名程序員的信心。讓我們知道了做好一個GPS解析與應用的重要性與基本方法。實習讓我們有了一些經驗
11、與許多信心。 最后做完期待已久的GPS室外實習以后,我感覺現在的衛(wèi)星技術已經非常發(fā)達了。在看不見的天上居然有至少7顆衛(wèi)星在飛著,想想都覺得不可思議。更不可思議的是我們可以與他對話,獲得他得到的信息。這更讓我感到GPS技術室一門很有前途很有魅力的技術!代碼:第一題:string foresix;FileStream sFile;StreamReader sReader;public int NextPage(string str) int flag = -1;for (int i = 0; i str.Length; i+) if (i 6) foresix += stri;textBox1.T
12、ext += stri;if (foresix = $GPGSA) tabctl.SelectedTab = GPGSA;flag = 3;else if (foresix = $GPGGA) tabctl.SelectedTab = GPGGA;flag = 2;else if (foresix = $GPRMC) tabctl.SelectedTab = GPRMC;flag = 1;else if (foresix = $GPGSV) tabctl.SelectedTab = GPGSV;flag = 4;else MessageBox.Show(不?存?在此?種?格?式?!?);for
13、esix = ;return flag;/顯示:public void ShowPage(int flag,string str) if (flag = 1) textBox2.Text = ;textBox3.Text = ;textBox4.Text = ;textBox5.Text = ;textBox6.Text = ;textBox7.Text = ;textBox8.Text = ;textBox9.Text = ;textBox10.Text = ;textBox11.Text = ;textBox12.Text = ;textBox13.Text = ;textBox14.Te
14、xt = ;for (int i = 7; i = 8; i+) textBox7.Text += stri;for (int i = 9; i = 10; i+) textBox6.Text += stri;for (int i = 11; i = 16; i+) textBox5.Text += stri;if (str18 = A) textBox12.Text = 有D效;else textBox12.Text = 無T效;for (int i = 20; i = 21; i+)textBox11.Text += stri;for (int i = 22; i = 28; i+) te
15、xtBox10.Text += stri;for (int i = 32; i = 34; i+) textBox9.Text += stri;for (int i = 35; i = 41; i+) textBox8.Text += stri;for (int i = 45; i = 49; i+) textBox13.Text += stri;for (int i = 51; i = 56; i+) textBox14.Text += stri;for (int i = 58; i = 59; i+) textBox4.Text += stri;for (int i = 60; i = 6
16、1; i+) textBox3.Text += stri; for (int i = 62; i = 63; i+) textBox2.Text += stri; tabctl.SelectedTab=START;sFile = new FileStream(track.txt, FileMode.Open, FileAccess.Read);sReader = new StreamReader(sFile);button1.Enabled = false;button2.Enabled = false;label55.Left -= 2;if (label55.Right 0)label55
17、.Left = this.Width;timer1.Enabled = false;string str = sReader.ReadLine();int flag=NextPage(str);button4.Enabled = false;button1.Enabled = true;button2.Enabled = true;ShowPage(flag, str);第二題:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Draw
18、ing;using System.Linq;using System.Text;using System.Windows.Forms;using System.IO;namespace GPS public partial class Form1 : Form Bitmap bitM; Graphics g; Pen pen = new Pen(new SolidBrush(Color.Black), 2.0f); Point point = new Point4; FileStream sFile; StreamReader sReader; int i = 4; int j = 0; do
19、uble scaleX, scaleY,minX,maxY; string textline = File.ReadAllLines(track.txt); int lines;/track共2有D多少行D public Form1() InitializeComponent(); bitM = new Bitmap(this.panel1.Width, this.panel1.Height); g = Graphics.FromImage(bitM); lines = textline.Length; private void button1_Click(object sender, Eve
20、ntArgs e) /panel1.Controls.Clear(); label1.Visible = false; pictureBox1.Visible = false; timer1.Enabled = true; sFile = new FileStream(track.txt, FileMode.Open, FileAccess.Read); sReader = new StreamReader(sFile); button1.Enabled = false; pictureBox2.Visible = true; pictureBox3.Visible = true; pictu
21、reBox4.Visible = true; pictureBox5.Visible = true; pictureBox6.Visible = true; pictureBox7.Visible = true; pictureBox8.Visible = true; pictureBox9.Visible = true; pictureBox10.Visible = true; pictureBox11.Visible = true; private void panel1_Paint(object sender, PaintEventArgs e) ControlPaint.DrawBor
22、der(e.Graphics,panel1.ClientRectangle,Color.Orange,ButtonBorderStyle.Solid); public void clin() textBox1.Text = ; textBox2.Text = ; textBox3.Text = ; textBox4.Text = ; textBox5.Text = ; if (lines 30) clin(); string tempstr1, tempstr2; string data; string str_time = new string4; string str_avaliable
23、= new string4; string str_jd = new string4; string str_wd = new string4; int x = new int4; int y = new int4; double screenX = new double4; double screenY = new double4; while (i 0 ) string str = sReader.ReadLine(); lines-; data = str.Split(,); str_avaliablej = data2;/有D效位? if (str3 = R & str4 = M &
24、str5 = C & str_avaliablej = A) i-; tempstr1 = data3; tempstr2 = data5; screenXj = double.Parse(tempstr2) * 3600 / scaleX - minX; screenYj = maxY - double.Parse(tempstr1) * 3600 / scaleY; xj = (int)screenXj; yj = (int)screenYj; str_timej = data1;/時間? str_jdj = data5; str_wdj = data3; j+; if (double.P
25、arse(str_time0) = 075245.000) pen = new Pen(new SolidBrush(Color.Red), 2.0f); for (int a = 0; a 4; a+) pointa.X = xa; pointa.Y = ya; for (int a = 0; a = 1; a+) textBox3.Text += str_time0a; for (int a = 2; a = 3; a+) textBox4.Text += str_time0a; for (int a = 4; a = 9; a+) textBox5.Text += str_time0a;
26、 textBox1.Text = str_jd0; textBox2.Text = str_wd0; if (str_avaliable0 = A) textBox6.Text = 有D效; else textBox6.Text = 無T效; clin(); g.DrawLine(pen, point0, point1); /this.panel1.BackgroundImage = bitM; /panel1.Refresh(); for (int a = 0; a = 1; a+) textBox3.Text += str_time1a; for (int a = 2; a = 3; a+
27、) textBox4.Text += str_time1a; for (int a = 4; a = 9; a+) textBox5.Text += str_time1a; textBox1.Text = str_jd1; textBox2.Text = str_wd1; if (str_avaliable1 = A) textBox6.Text = 有D效; else textBox6.Text = 無T效; clin(); g.DrawLine(pen, point1, point2); /this.panel1.BackgroundImage = bitM; /panel1.Refres
28、h(); for (int a = 0; a = 1; a+) textBox3.Text += str_time2a; for (int a = 2; a = 3; a+) textBox4.Text += str_time2a; for (int a = 4; a = 9; a+) textBox5.Text += str_time2a; textBox1.Text = str_jd2; textBox2.Text = str_wd2; if (str_avaliable2 = A) textBox6.Text = 有D效; else textBox6.Text = 無T效; clin(); /this.panel1.BackgroundImage = bitM; /panel1.Refresh(); g.DrawLine(pen, point2, point3); for (
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 不能玩火教案反思
- 海島冰輪初轉騰說課稿
- 農忙季節(jié)臨時幫工合同
- 通信設備公司人才引進合同樣板
- 車輛報廢回收企業(yè)管理辦法
- 通信工程配電房建設協議
- 人力資源服務審批指南
- 網絡應急演練
- 設備買賣合同簽訂預付款政策
- 肌腱斷裂術后護理及功能鍛煉
- GB/T 39415.1-2020包裝袋特征性能規(guī)范方法第1部分:紙袋
- GB 26512-2021商用車駕駛室乘員保護
- Tio2材料的性質及應用-課件
- 教育科研專題講座課件
- 語文課前三分鐘演講西塘古鎮(zhèn)課件
- 建筑工程常用英語詞匯
- 熱工基礎第一章
- 翻身拍背課件
- 2022版小學英語新課標詳細解讀中小學英語教師培訓PPT模板
- 全套課件-中文版AutoCAD-2020基礎教程-完整
- 中醫(yī)穴位養(yǎng)生保健課件
評論
0/150
提交評論