欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    毕业设计(论文)基于Google Earth的飞行模拟系统.doc

    • 资源ID:3979237       资源大小:839KB        全文页数:25页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    毕业设计(论文)基于Google Earth的飞行模拟系统.doc

    摘要Google Earth是一款Google公司开发的虚拟地球仪软件,它把卫星照片、航空照相和GIS布置在一个地球的三维模型上。其使用了公共领域的图片、受许可的航空照相图片、KeyHole间谍卫星的图片和很多其他卫星所拍摄的城镇照片。甚至提供Google Maps所没有的图片。鉴于GPS在导航定位领域的霸主地位和Google Earth的3维实景地图服务功能的日益增强,将二者结合起来便可以随时知道使用者所在的位置及行走速度和方向, 起到卫星地图导航作用。Google Earth可让你前往世界上任何地方,以查看卫星图像,地图,地形,3D建筑物,来自外层空间的星系的峡谷海洋。您可以探索丰富的地理内容,保存你的参观场所和与其他人分享。全球定位系统GPS (Global Positioning System)具备高精度、全天候、全球覆盖、高效率、自动化等显著特点,使得卫星导航技术的发展已逐渐取代了无线电导航、天文导航等传统导航技术,而成为一种普遍采用的导航定位技术。本文首先介绍了飞行模拟的优缺点,其次是介绍GPS发展状态和趋势,接着是GPS接收机的通讯协议,以及串口数据通讯的方法。本文用了Win32API类、RECT类、NativeMethods类、DoublePoint类来解决了鼠标事件和获取Google Earth事件,用Timer来控制整个模拟飞行,以及精确的算出航线距离。用串口类SerialPort来解决GPS和计算机间的数据传输,并动态的显示记录NMEA-0183原始语句。结合Google Earth进行动态的飞行模拟及导航定位。该系统把Google Earth和飞行模拟相结合,可进行模拟飞行,精确算出实际飞行距离(地面距离、航空距离),GPS导航定位,为以今后这方面的发展奠定了基石。关键字:飞行模拟;导航定位;GPS;Google Earth;NMEA-0183目 录摘要1第一章 绪论21.1 开发背景21.2 研究意义41.3 技术支持4第二章 需求分析102.1 项目提出者102.2 承接者102.3 项目提出的原因102.4 项目编写的目的102.5 项目的名称102.6 系统的功能11第三章 系统设计概要123.1 系统设计方案123.2 系统流程图12第四章 详细设计134.1 登录及锁定功能的实现134.2 文档加载和鼠标操作144.3 系统时间和右键菜单的控制154.4 飞行模拟的实现154.5 GPS数据的传输174.6距离的测算194.7图层模块的具体实现21第五章 软件测试225.1软件测试的含义225.2软件测试的环境和配置225.3软件测试的方法和步骤225.4软件的测试结果及缺陷分析22第六章 总结23致谢24参考文献25第一章 绪论1.1 开发背景Google Earth是Google公司于2005年推出的三维地图服务业务。通过它,你能看到全世界任何角落的三维地图。Google Earth是一款完全免费的全球卫星地图集成软件,它可以经计算得出三维地图,最高精度达到5年前军用级水平,能清楚地看到地面上的汽车和树木,低精度也相当于在5000m高空中俯瞰地球,可以看清楚每条路。它能让你足不出户浏览世界,随心所欲地观察到世界的每一个角落。Google Earth采用了成熟的宽带技术,能实时地为用户提供3D图形及图标的基础数据,可以从任意角度浏览到你所观察区域的高清晰地形地貌。Google Earth的主要功能有:结合卫星图片、地图,以及强大的Google搜索技术,提供全球地理信息;目的地输入,直接放大;搜索学校、公园、餐馆、酒店、机场等公用建筑或设施;获取驾车指南;提供3D地形和建筑物影像,其浏览视角支持倾斜或旋转;保存和共享搜索到收藏夹;添加自己的注释。Google Earth软件为适应不同的操作系统还有Mac版和Linus版,在Windows系统下有3种常见版本: 免费版( Google Earth-Free Version)、增强版(Google Earth2Plus)和专业版( Google Earth Pro)。这几个版本其区别是增强版、专业版增加了一些譬如绘制线条/多边形、GPS导航、统计等功能,但它们的全球的地貌影像与3D数据都是一样的,并不存在增强版、专业版的图象质量更好的说法。免费版可以不限时间自由使用,应用极为广泛。由于全球定位系统GPS (Global Positioning System)具备高精度、全天候、全球覆盖、高效率、自动化等显著特点,使得卫星导航技术的发展已逐渐取代了无线电导航、天文导航等传统导航技术,而成为一种普遍采用的导航定位技术,并在精度、实时性、全天候等方面取得了长足进步。现不仅应用于物理勘探、电离层测量和航天器导航等诸多民用领域,在军事领域更是取得了广泛的应用:在弹道导弹、野战指挥系统、精确弹道测量以及军用图快速测绘等领域均大量采用了卫星导航定位技术。正如人们所说:“GPS 的应用,仅受人们的想象力制约。”GPS 问世以来,已充分显示了其在导航、定位领域的霸主地位,许多领域也由于GPS 的出现而产生革命性变化。目前,几乎全世界所有需要导航、定位的用户,都被GPS 的高精度、全天候、全球覆盖、方便灵活和优质价廉所吸引。基于单点定位的GPS 技术,可应用于地面车辆、船舶等概略导航定位的精度为30-100 米的伪距单点定位。而基于实时差分定位的GPS 技术,则可应用于第二次全国土地利用现状调查的定位、野外校核检查以及今后的年度土地变更调查,将外业采集到内业数据处理做到电子化,可以简化土地调查程序、降低工作强度、提高外业调查的精度和效率,为土地利用数据库及时更新提供了有效的工具。国家测绘局2009 年春节前夕做出战略决策:启动“国家地理信息公共服务平台”建设工程,打造中国的“Google Earth”(谷歌地球)。李德仁院士告诉记者,2008 年11 月底,国家测绘科技委员会在上海召开会议,提出了启动该工程的建议。资料显示,地理信息服务的市场潜力巨大,目前“Google Earth”能吸引10 亿美元广告,印度等国已着手建立自己的平台。基于这种考虑,李德仁等专家提出,将这个平台建成信息共享系统,同时分别建设它的政务网和公众网,两个网络从物理上隔离,提供不同清晰度、精准度的信息服务,两者相得益彰。随后,他参与的专家组确认了基本方案:定位于地理信息共享服务,将政务网与公众网分开建设。网络上有不少的飞行模拟游戏,而本文的飞行模拟却与它们完全不同,本文采用的是先画出一条航迹轨迹,在沿着该轨迹进行飞行,但是目前效果做的还不是很佳。但是也可以基本满足用户享受一把飞行的感觉,也可以测算出飞行的距离。1.2 研究意义有鉴于Google Earth 和GPS集成的深远意义,和Google Earth结合飞行模拟具有很大的开发前景,因此本系统用Google Com API调用Google Earth在进行航迹的飞行模拟;采用国内NMEA-0183数据接口协议的GPS和计算机之间的数据通讯及与Google Earth之间的数据通讯进行定位。1.3 技术支持1.3.1 C#.NET简介Visual Studio 是一套完整的开发工具集,用于生成 ASP.NET Web 应用程序、XML Web Services、桌面应用程序和移动应用程序。Visual Basic、Visual C+、Visual C#和Visual J#全都使用相同的集成开发环境 (IDE),利用此IDE 可以共享工具且有助于创建混合语言解决方案。另外,这些语言利用了.NET Framework 的功能,通过此框架可使用简化ASP Web 应用程序和XML Web Services 开发的关键技术。C#.NET 则是一种高级的面向组件的编程语言;C#.NET 采用了内存垃圾的回收技术,即内存的分配是自动完成的,当被C#的对象占用的内存在该对象不再被使用时,将被释放;C#.NET 中的对象会被自动地转换成C#.NET 模式;总之,C#.NET 是一种类型安全的、现代的、简单的,由C 和C+衍生出来的面向对象的编程语言,兼具Visual Basic的开发时间短和C+的效率高的特点。1.3.2 Google Com API接口Google Earth 采用的3D 地图定位技术能够把Google Map 上的最新卫星图片推向一个新水平。用户可以在3D 地图上搜索特定区域,放大缩小虚拟图片,然后形成行车指南。此外,Google Earth 还精心制作了一个特别选项鸟瞰旅途,让驾车人士的活力油然而生。Google Earth 主要通过访问Keyhole 的航天和卫星图片扩展数据库来实现这些上述功能。该数据库能够进行不断更新,它含有美国宇航局提供的大量地形数据,未来还将覆盖更多的地形,涉及田园,荒地等。Google Earth 的卫星影像,并非单一数据来源,而是卫星影像与航拍的数据整合。其卫星影像部分来自于美国DigitalGlobe 公司的QuickBird(捷鸟)商业卫星与EarthSat 公司(,美国公司,影像来源于陆地卫星LANDSAT-7 卫星居多), 航拍部分的来源有BlueSky 公司(www.bluesky-,英国公司,以航拍、GIS/GPS 相关业务为主)、Sanborn 公司(,美国公司,以GIS、地理数据、空中勘测等业务为主)等。Google 地球可带您飞往地球上的任何地方,您可以在 Google 地球上看到卫星图像、地图、地形和 3D 建筑,包括外太空的银河系以及大洋峡谷。您可以探索丰富的地理知识,保存游览过的地点,并将其与他人分享。Google Earth 整合Google 的本地搜索以及驾车指南两项服务,能够鸟瞰世界,将取代目前的桌面搜索软件。他可以让你在虚拟世界中如同一只雄鹰在大峡谷中自由飞翔,登陆峡谷顶峰,潜入峡谷深渊。针对Google Earth 的开发有两种方式,一种是基于Google Earth 的Com API,一种是基于KML。基于 Com API 的开发方式主要用来控制Google Earth 的视角、实现动画效果,而基于KML 的开发方式主要用来生成地理要素,实现数据的动态更新等。在实际应用中,需要结合这两种开发方式,这样才能得到比较理想的效果。Google Earth COM API 是Google 最近向外界公布的一组接口,利用Google Earth COM API 我们可以通过设计软件对Google Earth 发送指令进行信息查询。通过外部应用,我们可以方便地查询当前视图,控制3D 视角,加载KML 元素等等。Google Earth COM API 接口主要有以下五部分构成:IApplicationGE 接口是Google Earth COM API 主要部分ICameraInfoGE 接口可以详细描述在Google Earth 中的元素的相机(camera)视角和相对于元素的方向以及方位IFeatureCollectionGE 接口是元素集合的一类接口IFeatureGE 接口描述了KML 元素的基本信息IViewExtentsGE 接口描述了由经度和纬度确定的在Google Earth 中的观察范围(1)IFeatureGEIFeatureGE 是描述加载到Google Earth 中的KML 元素的简单功能的接口,本系统用到的IFeatureGE 接口的方法和其对应功能见表1-1(表1-1)(2)IApplicationGE外部应用软件可以通过IApplicationGE 接口对Google Earth 进行查询和控制,本系统用到的IApplicationGE 接口方法和其对应功能见表1-2(表1-2)1.3.3 KML对象概述KML全称Keyhole Markup Language最初是由地理可视化公司Keyhole开发的,基于XML(eXtensible Markup Language,可扩展标记语言) 语法和文件格式的、用来描述和保存地理信息如点、线、面、图像、多边形和3D 模型等的编码规范,可以被Google Earth和Google Maps识别并显示。谷歌在2004年收购了这家公司,微软在2008年10月在其虚拟地球地理应用程序中增加了对KML的支持。KML在吸收和借鉴开放地理信息系统协会OGC(Open Geospatial Consortium)制定的GML(Geography Markup Language)标准的基础上, 舍弃地理模型中拓扑关系的描述, 精简描述元素, 使用一种基于标签(tags)的语法格式来描述地理信息, 使KML文件在Google Earth 的显示过程与HTML网页被浏览器处理过程类似, 即利用KML标准形成的KML文件是通过Google Earth浏览器解释并在Google Earth 浏览器表现出来的。Google Earth中的地图数据、地物地标及其他一些附加的信息图层大多是通过KML(Keyhole Markup Language)/KMZ文件来组织的。2008年4月,在微软的OOXML(OfficeOpen XML file formats)成为国际标准之后,Google公司宣布正式放弃了对KeyholeMarkup Language(KML)的控制权,开放地理信息联盟(OGC)将接管KML 语言,并将“Google Earth”及“Google Maps”中使用的KML语言变为一个国际标准。KML格式的文件通过网络传输,用户可以使用 KML 来与其他Google Earth或Google Maps用户分享地标与信息。Google Earth和Google Maps处理KML文件的方式与网页浏览器处理HTML和XML文件的方式类似。像HTML一样,KML使用包含名称、属性的标签(tag)来确定显示方式。因此,用户可将Google Earth和Google Maps视为KML文件浏览器。KML文件能够定义一个XML方法以便用二维或三维的方式显示地理数据。KML 提供的常用的地理元素有如下几个:(1)Coordinates元素 即坐标序列元素,一个地理坐标对定义为:经度,纬度,高度。坐标序列的坐标对之间用以空格为分隔符。(2)Point元素 即点元素,用来编码几何点类,每一个Point元素包括一个Coordinates元素,包括一个而且仅仅一个坐标对。(3)LineString元素 即折线元素,是由一序列的坐标对所组成的直线段连接起来的折线。(4)LinearRing元素 即环元素,是一个简单的线形闭合环,是由起点坐标与终点坐标相同的序列的坐标对所组成的直线段连接起来的折线环。(5)Polygon元素 即多边形元素,是一个连接的平面,按面域之间的包含关系可分为无岛面域、有岛面域,其外边界由outerBoundaryIs定义,内边界由innerBoundaryIs 定义。(6)MultiGeometry元素 即复合对象元素,作为包含任意几何元素(点、线、面等几何图形)的容器。一个MultiGeometry元素可以包含基本的几何元素如: Point、LineString、Polygon等,甚至包括其它MultiGeometry元素。 1.3.4 GPS通讯协议GPS 接收机的通讯协议有NMEA 数据接口协议和Garmin 公司GPS 的专用Garmin 协议。Garmin 自己的地图软件都只支持Garmin 协议,另外Google EarthPro/Plus 和OziExplorer 目前也支持Garmin 协议。NMEA 协议是美国国家海洋电子协会制定,为了在不同的GPS 导航设备中建立统一的标准, 此标准定义了电子信号所需要的传输协议,传输数据时间、并且指明了信息格式需要一个4800bps 的串行数据接口。设备需要有信息源和接收端,传送端发送数据到另一个NMEA-0183 的设备,信息源和接收端分别用来传送和接受8 位ASCII 码的数据。NMEA 协议有0180 、0182和0183 等3 种版本,其中NEMA-0183 是目前使用最为广泛的一种。NMEA-0183 的输出采用ASCII 码,其波特率为4800、数据位为8bit、无奇偶校验位、开始位1bit、停止位1bit。目前许多GPS 厂商遵循NEMA0183 协议开发出许多导航型GPS 产品。大多数GPS接收机都能输出符合NEMA0183 标准的ASCII 码形式的数据信息,NEMA0183 通信标准格式的语句达数十种之多,各种数据句型均以“$”开头,数据主要由帧头、帧尾和帧内数据组成。通常的GPS 定位信息格式是NEMA0183 格式,数据内容较少,因此多用RS-232串口将定位信息从GPS 接收机传送到计算机中进行信息提取处理,符合NMEAO183 标准的GPS 接收机的硬件接口能够兼容计算机的RS-232C 协议串口。对于嵌入式设备,采用CF 卡GPS 或者SD 卡GPS 信号接收机,该类型设备被映射为一个标准的串行口设备,GPS 数据的获取也与通常的串行口通信相同。第二章 需求分析需求分析是在可行性研究的基础上,将用户对系统的描述,通过开发人员的分析概括,抽象为完整的需求定义,再形成一系列文档的过程。可行性研究旨在评估目标系统是否值得去开发,问题是否能够解决,而需求分析旨在回答"系统做什么"的问题,确保将来开发出来的软件产品能够真正满足用户的需要。2.1 项目提出者2.2 承接者组长:组员: 2.3 项目提出的原因模拟飞行系统建设的任务是利用Google Earth、计算机与数据库技术、宽带多媒体网络及虚拟仿真技术,将在实际演练的真实效果反映出来。充分的将训练时将发生的一切意外降到最低,并且能够准确完美的达到预期的演练效果。模拟飞行是随着信息技术、计算机技术、空间技术、现代军事化技术的发展应运而生的。在发展现代化军事的今天,模拟飞行技术已经成为战场中必不可少的军事模式。2.4 项目编写的目的实现模拟飞行与GPS导航,让用户体验虚拟世界为现实世界带来方面2.5 项目的名称基于Google Earth的飞行模拟系统2.6 系统的功能该系统主要模块可划分为四大模块:(1)登录模块模拟登录模块主要采用一个Switchcase语句来进行实现内置登录账号和密码。内置两个登录用户,在输入密码时候就去判断哪个是会员用户,哪个是普通用户。因为是模拟登录,所以没必要调用到数据库数据;(2)航线模块登录到主界面之后就会看到航线模块,它包含了很多功能,比如:鼠标操作、搜索、锁定、测距、飞行、清除、添加、显示等功能;(3)导航模块导航模块主要是GPS简单定位的实现,需要连接GPS接收机才能完成该操作;(4)图层模块图层模块是去获取Google Earth中的图层信息,显示在该模块,可进行相关的选择操作。第三章 系统设计概要3.1 系统设计方案设计方案如下:首先我们在Microsoft Visual Studio软件中把界面设计好,拖入需要的控件,把控件改好名字;然后在每个控件中加入相应的代码以实现它的功能;再把Google Earth软件装载到我们设计的那个界面窗体中;然后到网上去下一个飞机模型放到相应的文件中,最后实现飞机的模拟飞行。简要来说就是:界面设计、代码的添加、装载Google Earth、模拟飞行。3.2 系统流程图(图1-1)第四章 详细设计4.1 登录及锁定功能的实现4.1.1登录模块的实现(1)写入一个中间类myclass来传递输入的数据值static string strName;public bool writeInfo(string strInfo) strName = strInfo;if (strName != "")return true;elsereturn false; public string readInfo() return strName; (2)设定好内置的账号密码用Switchcase来完成switch (txt_zhanghao.Text) 当账号为tao的时候去判断密码,如果密码正确就显示出主窗体,登录界面隐藏掉myclass tc = new myclass();tc.writeInfo(txt_zhanghao.Text);Form2 fm = new Form2(this);fm.Show(); (3)在加载主窗体的时候去中间类中读取登录的账号信息判断是否开启某些功能tc.readInfo()=“登录账号名”4.1.2锁定功能的实现锁定功能就跟搜索功能基本相同,设计的本来目的是这样的:输入汉字地名可进行搜索,那输入准确的地理坐标信息能否进行搜索呢?因此便设计了锁定功能。(1)一般的搜索功能的实现appGE.SearchController.Search(txt_Search.Text.Trim();(2)简单的锁定的实现 首先获取文本框中数据信息j = Convert.ToDouble(txt_JD.Text);w = Convert.ToDouble(txt_WD.Text); 将获取后的信息转化为屏幕可识别的坐标信息weidu = w + "º" + "N"jingdu = j + "º" + "E" 写入判断,如果输入信息为正或负,该经纬度是东西、南北,在进行锁定appGE.SearchController.Search(weidu + "," + jingdu);4.2 文档加载和鼠标操作4.2.1打开KML文档并加载到谷歌地球中 (1)首先是需要打开文档OpenFileDialog ofd = new OpenFileDialog();ofd.Filter = "Google Earth的KML文件(*.KML)|*.KML" (2)读取KML文档里的<coordinates>坐标信息string strPath = ofd.FileName;StreamReader sr = new StreamReader(strPath);string strAll = sr.ReadToEnd();int nStart = strAll.IndexOf("<coordinates>") + 13;int nEnd = strAll.IndexOf("</coordinates>");string strcoords = strAll.Substring(nStart, nEnd - nStart).Trim();int n = strcoords.Length; (3)加载数据信息到谷歌地球中去appGE.OpenKmlFile(strPath, 1);4.2.2鼠标操作模块 为了更方便在谷歌地球中的操作,设计了鼠标添加、删除、移动坐标点,如果要开启这些功能需要点击开始,停止是关闭这些功能。(1)需要写入几个构造函数,比如:添加点的构造函数、删除点的构造函数、移动点的构造函数,还有就是要写入坐标转换函数。也就要去涉及到一些为这些构造函数提供的类,如:DoublePoint类、NativeMethods类、RECT类、Win32API类 当我写坐标函数的时候就会去调用DoublePoint类DoublePoint dpoint = new DoublePoint(); X轴的转换: dpoint.X = (Convert.ToDouble(point.X) / (double)this.plGE.Width) * 2.0) - 1.0; Y轴的转换:dpoint.Y = -(Convert.ToDouble(point.Y) / (double)this.plGE.Height) * 2.0) - 1.0);最后返回转换好的点: return dpoint;4.3 系统时间和右键菜单的控制4.3.1系统时间的控制 需要一个timer控件来控制系统时间的显示 toolStripStatusLabel4.Text = System.DateTime.Now.ToString();4.3.2右键菜单的实现(1)单项删除ListPoint.Items.RemoveAt(nidex);ListPoint.Refresh();UpDatekml();(2)全部删除ListPoint.Items.Clear();ListPoint.Refresh();UpDatekml();(3)航点编辑需要通过类将修改的值传回到LitsBox里面string JWG = ListPoint.SelectedItem.ToString();nidex = ListPoint.SelectedIndex;string strJWG = JWG.Split(',');myclass.jd = strJWG0;myclass.wd = strJWG1;myclass.gd = strJWG2;frmEdit fe = new frmEdit();fe.ShowDialog();4.4 飞行模拟的实现飞行需要满足的条件是必须要形成航迹线,与往常的飞行模拟不一样的是他们着重是飞机的飞行状态,本系统是模拟航线的轨迹。具体实现如下:(1)首先需要准备一个timer控件控制飞行的速度;需要KML语言编写一个KML文档,将获取的坐标信息保存到KML文档里。(2)当启动飞行按钮的时候,就开启timer控件timer1.Enabled = true; timer控件启动之后就会触发timer控件的事件timer-Tick先去判断listBox文本框里的行数是否大于2行或者以上,是否进行到最后一行,如果进行到最后一行就跳出循环 if (i < ListPoint.Items.Count) 执行循环 else 关闭timer控件 (3)在listBox里去获取数据,在封装到数组里,以“,”来拆分开jw = ListPoint.Itemsi.ToString();string JW = jw.Split(',');将封装好的数据放入构造函数SetFly里面 SetFly(JW1, JW0, JW2); JW1里是经度,JW0里是纬度,JW2里是高度。接着传值到SetFly构造函数里 先添加飞机的KML文档XmlDocument doc = new XmlDocument();doc.Load(Application.StartupPath + "Fly.kml");XmlElement root = doc.DocumentElement;(4)修改视角的纬度、经度、高度root.ChildNodes0.ChildNodes3.ChildNodes2.InnerText = wd;root.ChildNodes0.ChildNodes3.ChildNodes3.InnerText = jd;root.ChildNodes0.ChildNodes3.ChildNodes5.InnerText = gd;root.ChildNodes0.ChildNodes4.ChildNodes3.ChildNodes1.ChildNodes0.InnerText = wd; root.ChildNodes0.ChildNodes4.ChildNodes3.ChildNodes1.ChildNodes1.InnerText = jd; root.ChildNodes0.ChildNodes4.ChildNodes3.ChildNodes1.ChildNodes2.InnerText = gd;将数据信息保存KML文档doc.Save(Application.StartupPath + "Fly.kml");(5)再将值传回来 appGE.OpenKmlFile(Application.StartupPath + "Fly.kml", 1);飞行模拟appGE.SetCameraParams(double.Parse(JW1),double.Parse(JW0),double.Parse(JW2), AltitudeModeGE.RelativeToGroundAltitudeGE, 600, 45, 30, 0.1);飞行时间的控制 timer1.Interval = 10000;(6)飞行模拟的流程图(图1-2)4.5 GPS数据的传输4.5.1串行数据传输方法 在Microsoft.Net技术广泛应用的今天,可以不再采用第三方控件的方法来设计串口通讯程序。.NET Framework 2.0 类库包含了SerialPort 类,方便地实现了所需要串口通讯的多种功能。System.IO.Ports命名空间包含了控制串口重要的SerialPort类,该类提供了同步 I/O 、事件驱动的 I/O以及对串行驱动程序属性的访问。SerialPort 类重要的属性与方法、事件:PortName 串口名称,COM1, COM2等BaudRate 波特率,也就是串口通讯的速度Parity 奇偶校验,可以选取枚举Parity 中的值DataBits 数据位StopBits 停止位,可以选取枚举StopBits 中的值Open()方法打开串口Close()方法关闭串口ReadExisting()方法来读取数据。该方法读取当前所能读到的数据,以字符串的形式返回。4.5.2 NMEA语句的解析 NMEA 通讯协议所规定的通讯语句都已是以ASCII 码为基础的,NMEA-0183 协议语句的数据格式如下:“$”为语句起始标志;“,”为域分隔符;“ *”为校验和识别符,其后面的两位数为校验和,代表了“$”和“*”之间所有字符的按位异或值(不包括这两个字符);“/”为终止符,所有的语句必须以此来结束,也就是ASCII 字符的“回车”和“换行”。由于每个语句内各数据段由逗号分割,因此在处理缓存数据时一般是通过搜寻ASCII 码“$”来判断是否是起始位,在对起始位的类别进行识别后再通过对所经历逗号个数的计数来判断出当前正在处理的是哪一种定位导航参数,并做出相应的处理。4.5.3 定位 (1)当点击GPS之后进行初始化,串口号和波特率都要进行设置,根据GPS接收机进行相关的设置。 (2)打开串口接收数据流 实例化串口类 SerialPort sp = new SerialPort(); 串口号 sp.PortName = cbComId.Text; 波特率 sp.BaudRate = Convert.ToInt32(cbBand.Text); 打开串口 sp.Open(); (3)读取缓冲区的数据 txtGPSInfo.AppendText(sp.ReadLine(); (4)将原始语句信息以“,”分开获取里面的经纬度信息strText = strText.Substring(0, nxh);string str = strText.Split(',');strWeiDu = str2;strJingDu = str4; (5)转化经纬度信息double dWD = Convert.ToDouble(strWeiDu);double dJD = Convert.ToDouble(strJingDu); (6)导航定位appGE.SetCameraParams(dWD, dJD, 50.0, AltitudeModeGE.AbsoluteAltitudeGE, 600, 0, 0, 0.5);appGE.SearchController.Search(strWeiDu+","+strJingDu);(7)GPS功能模块的流程图(图1-3)GPS接收机只要处于工作状态就会不断地把GPS信息通过串口传送到计算机中。在没有进一步处理之前缓存中是一长串字节流,这些信息在没有经过分类提取之前是无法加以利用的。因此,必须通过程序将各个字段的信息从缓存字节流中提取出来,将其转化成有实际意义的,可供高层决策使用的定位信息数据。4.6距离的测算当添加的航迹点连成一条条线的时候,可以考虑这条线在现实生活中到底有多长,根据移动的速度,可以计算出时间,所以测距是必要的。如何来完成测距的呢?(1)首先必须获取listBox里面的行数int jj = Convert.ToInt32(ListPoint.Items.Count);(2)接着先算出第一条线段的长度。一条线需要两个端点,算出两个端点相差的经纬度,他们平方的和在开方在乘以111KM,就是现实中的实际距离。 第一个坐标点:Double cc = Convert.ToDouble(aa.Substring(0, 16);Double dd = Convert.ToDouble(aa.Substring(17, 16); 第二个坐标点:Double ee = Convert.ToDouble(bb.Substring(0, 16);Double ff = Convert.ToDouble(bb.Substring(17, 16); 计算:Double gg = ee - cc;Double hh = ff - dd;Double kk = Math.Sqrt(gg * gg + hh * hh) * 111000;(3)开方的后的为第一条线段的,如果多条线段,那就每条线段相加就可以算出总长度。如果有高度,那就去获取高度的值在做一个勾股定理运算即可算出。(4)流程图(图1-4)4.7图层模块的具体实现(1)首先需要初始化图层并进行类的实例化 this.treeView1.Nodes.Clear();

    注意事项

    本文(毕业设计(论文)基于Google Earth的飞行模拟系统.doc)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开