基于Google Earth的模拟飞行轨迹显示系统研究

时间:2022-04-27 08:55:52

基于Google Earth的模拟飞行轨迹显示系统研究

摘 要:本文研究分析了微软模拟飞行10及Google Earth的二次开发技术,如SimConnect SDK、Google Earth COM API、KML,在此基础上建立了基于Google Earth的模拟飞行轨迹显示系统的系统功能架构,为系统的具体实现提供了指导。

关键词:Google Earth;模拟飞行;KML

0 前言

笔者于2011年3月发表了“基于Google Maps的模拟飞行轨迹显示系统的设计与实现”一文,其中实现了基于Google Maps的模拟飞行轨迹显示系统,该系统利用Google Maps API、Apache服务器以及Ajax技术,将SEMINOLE/TB20模拟飞行训练系统的模拟飞行数据,动态地显示到二维的Google Maps地图上[1]。由于Google Earth在三维视景方面的优势,使得它在运用上比Google Maps更为广泛,故而在Google Earth上实现模拟飞行轨迹的三维动态显示,就显得较为具有吸引力。不同的是,此次模拟飞行软件将选择微软模拟飞行10(Microsoft Flight Simulator X,FSX),对其进行模拟飞行数据的提取,并最终呈现在Google Earth上。

1 微软模拟飞行10

微软模拟飞行10(Microsoft Flight Simulator X,FSX)自面世以来,受到了广大模拟飞行爱好者的青睐,其在画面和视觉效果的拟真程度上达到了顶峰,FSX良好的视景系统,给模拟飞行爱好者带来一场视觉盛宴。鉴于FSX的良好视景系统,利用其对初始飞行员进行初始训练会带来较好的训练效果。目前在飞行学生的培养与教学过程中,模拟训练实施后的效果被证明是有利于真实飞行,并且能给予飞行学生在飞行技术与技能上自我巩固与更正和提高的平台[2]。

FSX提供的二次开发平台SDK(Software Develop

ment Kit)能够为编程者带来极大的方便,通过SDK能够使得外部程序与FSX进行交互操作,这为实现模拟飞行的轨迹显示系统提供了技术支持。SDK中最为重要的是核心通用工具(Core Utilities Kit),这部分包含了一个新的SimConnect SDK,它是FSX的程序员接口,并包含了外部程序可以使用的变量表。在具体的编程过程中,为了适应FSX的新特性,在建立SimConnect的插件时,需要使用Visual Studio 2005或更高版本,或者Visual C++ 2005以上版本,否则在软件编译时会报错。

2 Google Earth 的二次开发

Google Earth是一款虚拟地球仪软件,它提供地球的虚拟三维视景,能够给使用者以良好的地图视觉体验。将Google Earth和FSX的飞行轨迹显示结合起来,可以增加使用者的直观感受,也能够为初始飞行训练提供辅助功能。

针对Google Earth的开发有两种方式,一种是基于Google Earth的COM API,一种是基于KML。基于COM API的开发方式主要用来控制Google Earth的视角、实现动画效果,而基于KML的开发方式主要用来生成地理要素,实现数据的动态更新等。在实际应用中,需要结合这两种开发方式,这样才能得到比较理想的效果。

Google Earth COM API是Google Earth 组件的公用接口,通过调用Google Earth COM API可以实现外部程序对Google Earth的访问和调用,从而实现交互功能。Google Earth COM API包含11个类库,第三方软件可以通过调用这些类库实现对Google Earth的控制、管理、查询、搜索等功能。其中,IApplicationGE类是最主要的类,也是主要进入到Google Earth的类。其成员函数OpenKmlFile () 和LoadKmlData () 分别是加载一个KML 文件和一个KML 数据流。

KML是Keyhole Markup Language的简称,它是基于XML语法的标记语言。KML用来描述和保存地理信息,例如点、线、面、图片和模型等,并能够在Google Earth和Google Maps中显示出来。当需要对实时数据进行更新时,就需要使用动态数据更新技术。此时利用KML中的和< refreshMode>标签可以实现数据的实时更新。将refreshMode设置为onInterval模式,并在< refreshInterval >中设置间隔时间,那么Google Earth将间隔指定的时间来刷新一下标签中的链接地址,这个链接地址可以是本地磁盘上的一个文件,也可以是一个网络链接。

3 基于Google Earth的模拟飞行显示系统功能模型

图1 系统功能结构

利用FSX的SDK和Google Earth COM API的技术优势,可以方便地设计实现如下功能:在Google Earth中动态显示FSX中的模拟飞行的位置信息(飞机的经纬度、速度、高度、航向等)、模拟飞行航迹信息等,从而实现FSX模拟飞行的飞行轨迹动态显示,见图1。为Google Earth提供动态数据,需要用到KML动态数据更新技术。我们可以采取一个更好的解决方案,即:架构动态数据提供服务器。这种方法类似于B/S架构,Browser就是Google Earth,Server就是架设的服务器,Server提供的是动态的符合KML规范的模拟飞行数据,Google Earth间隔一定时间去服务器上获更新数据。

参考文献:

[1] 李卫东,刘银.基于Google Maps的模拟飞行轨迹显示系统的设计与实现[J].中国民航飞行学院学报,2011,22(2):5-7.

[2] 刘天.FSX 在飞行教学中的研究与应用[J].才智,2010.

[3] 江宽,龚小鹏.Google API开发详解:Google Maps与Google Earth双剑合璧[M].北京:电子工业出版社,2010.

基金项目支持:中国民航飞行学院青年基金项目(项目编号:Q2012-011)。

上一篇:日本近百年的三代富豪 下一篇:领土争端时 中国说什么