连载:基于安卓平台的电子飞行包(四)
说明:
本文是北京航空航天大学 盖玉杰 硕士的2015年的毕业论文,经许可在公众号发表。本文著作权归作者盖玉杰先生,如需转载请联系本站或作者本人。
该项目是与民航研究院一同开展,对国内电子飞行包的研究发展起了重要的补充,但很遗憾的是目前该项目已经中止。
基于Android平台的
电子飞行包(EFB)
设计与实现
Design and Implementation of Electronic Flight Bag (EFB)Based On Android Platform
作者:盖玉杰
指导教授:龙翔
前文回顾:
摘要
绪论
电子飞行包简介
电子飞行包的含义
电子飞行包的功能分析
研究的背景和意义
研究目标及内容
本文的组织结构
电子飞行包的对比分析
Jeppesen Mobile FliteDeck
FlyQ EFB
GlobalNavSource EFB
Avplan EFB
Android平台上EFB功能分析
小结
连载接下来一起学习:
3.4 飞行计划导航
飞行计划是指在每次航班飞行前,都应当根据具体的气象资料、航行情报、航空器 性能、空中领航和航行规则计算出确定可带的商载以及完成本次航班飞行所需的飞行时 间和燃油油量,其目的是为了保证航班飞行的安全性和提高运营的经济性SI。
飞行计划的主要内容是确定最大起飞重量和最大着陆重量,以便尽可能提高商载能 力。根据需要选定飞行剖面中各段的速度和高度,以便节约燃油。计算各飞行阶段所需 要的燃油量和时间,并由此得到该航班飞行所需的总燃油量和总时间。
给出的有关航路 资料,包括航路点的位置、经纬度、导航设备的电台频率、呼号、各航段的航路代号、 各航段的航向、距离等。同时飞行计划在一套完整的空中交通管制系统中居于十分重要的地位。
根据飞行计划,航路信息,飞机性能参数可以预测一定时间飞机将要到达的物理位置,为冲突告警提供可靠判据;飞行计划与航迹的自动耦合,减轻了管制员的操作负担,而且可以使管制人员直观了解航空器的飞行意向,从而做出正确的指挥决策;根据飞行计划的航路信息,可以判断当前航空器是否偏航;还可以根据飞行计划生成计划航迹,这项功能对于 航空器经过雷达盲区是很有意义的,此时可以给管制人员提供合理的参考。
航空图表大部分都是1页,不需要翻页等操作,而飞行计划是有多页的(编者按:数字化飞行计划其实无需按页显示),并且飞行计划在飞行过程中使用非常的频繁,所以在查阅信息时,电子化飞行计划的查阅并不一定比纸质飞行计划的查阅更加的节省时间(需要根据数字化特点进行相应的设计)。
一项对10位26岁到48岁之间的飞行员使用纸质资料和电子飞行包获取需要的信息所花费的时间的调研,纸质资料使用了Jeppeen公司标准的航图等资料,电子飞行包系统 使用了JeppView FliteDeck (JPFD),并将需要的信息分为查阅比较容易、查阅不容易和查阅比较难。
通过对比可知,在工作量比较小的时候,通过纸质资料和电子飞行包获 取需要的信息的所花费的时间差不多,而当工作量增大的时候,使用电子飞行包查阅所 需信息所花费的时间会超过直接使用纸质材料查阅信息需要的时间。测试结果如图24 所示。

所以在飞行员飞行过程中,如果只是简单的将飞行计划进行电子化,需要飞行员每次使用的时候都去翻阅,那么查阅飞行计划的效率会比直接查阅纸质的飞行计划需要更多的时间(此外还有一个飞行员是否熟悉了使用EFB的背景)。
为了方便飞行员查阅,将飞行计划的展示分为两部分:
飞行计划内容的展示和飞行计划与移动GIS结合信息的展示。
飞行计划内容的展示将以放行单、飞行计划、航行通告和气象信息四个部分展示,通过将飞行计划中的内容进行提取展示,当用户需要查询信息时,可以直接在电子飞行包系统中查找,然后直接跳转到飞行计划相应的页码。如图25所示。

飞行计划与移动GIS结合,通过GPS获得飞机的位置,将飞机的位置显示在地图上,并且基于飞行计划导航的上下文可以进行航路点信息如天气、油耗等信息的查询。
在导航的过程中,会将飞机飞行过程中的GPS信息如经纬度和高度保存起来,可以待飞机降落之后,将飞机的飞行路径进行回放,同时这也是一个可以扩展的接口,当民 航ADS-B设备在全国广泛的推广开时,可以很方便的使用这个接口将飞机的位置信息发送出去。
本设计中,将会解析飞行计划中的航路点和情报区的内容,并将各航路点和情报区的信息提取出来,与SuperMap移动GIS结合,以图形化的方式展示飞行计划,进行飞行计划导航。
3.4.2飞行计划导航实现
飞行计划内容的展示会在地面系统中把飞行计划的放行单、飞行计划和气象信息的 页码解析出来,连同飞行计划文档一起发送到电子飞行包平板上,这样就可以实现放行 单、飞行计划和气象信息跳转到正确的页码。
航行通告会复杂一些,在飞行计划文档中 有多个航行通告,这样就需要在地面系统中将飞行计划中的航行通告和相应的航行通告 的页码一起提取出来发送到Android平板上,供飞行计划文档查看时使用。
飞行计划导航部分采用了桌面系统对飞行计划进行分析,生成飞行计划数据库,然 后通过3G网络或者蓝牙将数据传送到Android平台上,数据库会在导航功能部分跟 SuperMap GIS系统进行结合,以图形化的方式快速的将飞行计划展示出来。制作流程图 如图26所示:

两个数据库文件Weather.db和Waypointdb里面的数据是从飞行计划里面提取出来的,里面包含了飞机飞行过程中的重要的数据。其中在Weather.db数据库中有一个表 Weather,里面放置了飞行过程中航路点FL、W/S和T数据,并不是所有的航路点都有 这些数据,Weather.db数据库的表项,如表7所示。

表7 Weather.db数据库表项而在Waypoints.db数据库文件中有一个此次飞行的数据表,数据库里包含了经纬度(LAT、LON)、油耗(FUEL)和温度(TMP)等,如表8所示。

表8 Waypoints.db数据库表项展示航线时,会调用Waypoints.db里面的航路点的名字(PointName)、经度(LON) 和纬度(LAT) 0将PointNiiw- ArrayList里面,同时将对应的航路点的经纬度 保存在 SuperMap iMobile 的 Point2Ds 类型里面,使用 SuperMap iMobile 的 CallOut 对象 绘制航路点的的位置和图标。
在绘制过程中需要对相邻两个航路点的经纬度差进行判断, 如果相邻的两个航路点的经纬度差过于大,那么就应该在显示时让航路点一个正立显示, 一个倒立显示。当点击到具体的某个航路点的时候,会调用Waypoints.db和Weather.db 里面相应的航路点的信息,并使用Android PopupWindow展示航路点的信息,这样就可 以在此界面上完成导航和信息查询,在此上下文下进行航路点的查询可以节省离开此导 航界面,去查阅飞行计划文档的时间。
飞行计划导航可以帮助飞行员对整个飞行过程进行良好的导航。北京飞往九寨的飞 行计划的航路点的信息和SuperMap GIS地图进行结合如图27所示。

3.5数据维护和增量更新
在电子飞行包系统未出现之前,航图资料的更新是以人工换插页的形式进行的,这 样的会导致资料更新周期过长,而且容易出现更新不及时或者更新错误的情况。同时随 着航空业的迅速发展,需要维护的资料文档逐年增长,航空公司的资料维护和更新任务 已经非常艰巨。
电子飞行包系统作为航图资料电子化的平台,需要解决资料管理和更新 的问题,使用SVN的特点可以有效的解决对文档的版本控制和增量更新的问题。
3.5.1数据维护和增量更新设计
SVN是一款免费的、开源的版本控制软件。SVN管理随时间改变的数据,这些数 据放置在一个版本库(repository)中。这个版本库很像一个普通的文件服务器,但是它会 记录每一次文件和目录的改动,这样就可以把数据恢复到旧的版本,或是浏览数据的变 动历史,版本控制主要涉及如下概念:
(1)版本、版本项。版本代表一个演化对象的状态,版本项是版本代表的实体。
(2)增量。多个版本会共享版本项的某些部分,对版本的保存只要存储不同版本 间的差异,这种差异即增量。
(3)版本规则。创建、删除、合并、选择版本的策略。
(4)粒度。版本项的范围,可以是文件、目录或两者兼有。
(5)作区和事务处理。工作区是进行并行开发的开发者的工作场所或存储空间, 它被广泛应用于检入/检出模式。事务是一段时间内的版本变化,事务的特点是整体性, 即版本的变化是全变或都不变。
尽管SVN是为大型分布式的代码管理而生,但是稍加转变就能成为航空公司文档管理很好的工具。航空公司内部多个工作人员可以同时对航图和手册等资料文件进行修改,并将修改及时提交至服务器(数据仓库),省去了为了控制文档版本的额外开销, 如交接、人为定制文档版本等工作。飞行驾驶员可以在每次飞行前将文档更新到最新的版本,保证航图和手册的正确性,因为SVN版本控制中增量的概念DI,所以每次只会对跟Android设备上那些不同的文档进行更新,更新速度大大提升。
SVN的使用离不开SVN服务器对数据的版本控制。SVN服务器可以有如下几种选 择:CollabNet, SilksSVN, VisualSVN Server,这些都是不同的组织利用同一 SVN内核开发的SVN的不同版本,在电子飞行包系统设计中将会使用VisualSVN Server,因为 它集成了 Apache组件,使得客户端可以通过HTTP协议访问服务器,同时还提供了图 形化的管理界面,更加适合用户的使用〔33], Android端使用SVN客户端OASVN。
在电子飞行包系统中,航图等文档的管理、维护和更新使用了 SVN版本管理方法。它主要包括桌面SVN服务器和SVN客户端的安装和使用以及Android端OASVN客户 端的集成使用。在Visual SVN Server中需要建立的仓库有飞行计划仓库Flyplan、机场 航空图表仓库Airport、机场资料仓库Company和性能计算数据库仓库等。飞行计划仓 库Flyplan中主要放飞行计划文档和飞行计划信息数据库,航空图表仓库Airport则放置 机场航空图表,机场资料仓库Company里放置了公司资料如运行手册、规章标准和机 型手册。SVN使用方式如图28所示。

SVN并非新兴事物,在电子飞行包系统中加入SVN版本控制和增量更新的功能, 可以提高航空公司资料更新和维护的效率,也是SVN的全新应用。
3.5.2 Visual SVN Server服务器数据仓库部署
在电子飞行包系统中,文档管理和更新SVN服务器最终使用了 VisualSVN Server, 并使用了 TortoiseSVN客户端软件来增加、删除和修改文档。TortoiseSVN是扩展 Windows Shell的一套工具,可以看作Windows资源管理器的插件,安装之后Windows 就可以识别SVN的工作目录。
在Windows平台上,可以很容易的安装Visual SVN Server和TortoiseSVNo安装完 Visual SVN Server之后就可以使用VisualSVN Server Manager创建数据仓库、用户组和用户,并为用户设置访问权限。向Visual SVN Server中导入数据的方式有两种,使用 Visual SVN Manager提供的加入文件或文件夹的功能和TortoiseSVN提供的加入文件或 文件夹的功能。在基于Android平台的电子飞行包设计与实现中,将完全采用 TortoiseSVN来管理Visual SVN Server上面的数据。VisualSVN上数据仓库的建立如图 29所示

3.5.3 OASVN航图资料更新
在Android平台上,主要靠OASVN来实现文档的增量更新。OASVN项目主要分 为四个模块:数据库模块、模型模块、UI模块和Application模块。在电子飞行包系统 的设计与实现中,主要是使用Application模块调用OASVN的文件更新功能,同时还会 定制SVN设置界面。
(1) OASVNAppfcation实现增量更新
Application 和 Activity, Service 一样是 Android 框架的一个系统组件,当 Android 程序启动时系统会创建一个Application对象,用来存储系统的一些信息。Android系统 自动会为每个程序运行时创建一个Application类的对象且只创建一个,所以Application 可以说是单例(Singleton)模式的一个类。Application对象的生命周期是整个程序中最 长的,它的生命周期就等于这个程序的生命周期。因为它是全局的单例的,所以在不同 的Activity, Service中获得的对象都是同一个对象。
OASVN中的Application 类是OASVNApplication,
只要在AndroidManifest.xml 文 件的application中配置自定义的application,就可以在任何想使用SVN功能的地方通过 获得 OASVNApplication 对象来实现。AndroidManifest.xml 文件中 application 的配置:android :name= "co m.valleytg.oasvn.android.application.O AS VNApplication"
在其他Activity中可以荻得OASVNApplication对象,异步调用更新数据的函数进 行数据的增量更新。更新数据的异步函数采用了 CheckoutThread和UpdateThread两个 异步函数。
它们继承了 Android平台上的轻量级异步类Async Task, Async Task简单快捷,过程可控,只需要实现 0nPreExecute。、doInBackground()和 onPostExecute()函数就 可以。通过OASVNApplication调用更新文档异步类的代码如表9所示。

OASVN界面设置
OASVN本身有相应的仓库设置界面和修改界面,为了在电子飞行包系统能够更加 方便的使用系统需要的功能界面,在设计和实现OASVN的功能界面的时候,只保留了三个界面:
SVN仓库浏览界面
SVN仓库添加界面
SVN仓库连接删除修改界面。
特 别是在SVN仓库的删除和修改界面中,将很多其他的功能加入了进来,减少了其他界 面的使用。OASVN的飞行计划仓库删除和修改界面如图30所示。

通过在地面支持系统中使用Visual SVN Server提供数据的版本管理和维护, Android使用OASVN客户端,实现了航图和手册的及时增量更新,避免了每次都需要 花大量时间进行全部文件的拷贝。
3.6全国航路图展示
在电子飞行包系统的航图资料中,全国航路图是一个大小为8.8M并且只有一个页面的PDF文档,这个PDF文档图层比较多,信息量也比较大,在Android系统上使用 Adobe Reader等其他PDF阅读器都需要10秒以上的时间才能完全打开,每次缩放渲染的时间也比较长,这种情况对用户来说是很难接受的。为了满足飞行员能够快速的查看全国航路图的需求,在本文所设计的电子飞行包系统中,采用了将PDF矢量图转化成 瓦片地图的技术方案,实现地图的快速查阅,同时结合GPS和地图的经纬度信息,实 现定位和航行路径的绘制。
3.6.1 PDF矢量图转瓦片地图
在电子飞行包系统中,实现全国航图由PDF矢量图转瓦片地图需要一定的硬件环 境和软件环境。
实现的硬件环境有:Machinel (Windows操作系统,如Win7 64位)和Machine2 (Linux操作系统,如Ubuntu)。
实现的软件环境有:Machinel上需要安装SuperMap iServer、GlobalMapper、 SuperMap Deskpro .Net 6R 和 Sqlite;Machinie2 需要安装分布式文件系统 FastDFS 。同时 还需要保持Machine 1和Machine2连接。
实现PDF矢量图转瓦片地图的过程为:
用GlobalMapper从全国航路图的PDF文档 中获取图片,存储为ECW格式,保存为a.ECW文件;
启动Supermap Deskpro .Net 6R, 导入a.ECW (默认给地图产生SDB数据集);
创建UDB数据集,将a.ECW复制到UDB 数据集,并将UDB数据集保存为b.smwu工作空间;
启动SuperMap iServer;
通过IE 访问 iServer(htp://172.16.3;.'208:8090/iServer/),将 b.smwu 工作空间发布到 SuperMap iServer;通过IE访问iServer,盘真珥I片功能;
启动切片功能;当图片较大或切割比例 较小时,生产数据较大,需较多时间;切片后的瓦片文件存储在FastDFS 中,故Machine2需要留出足够-的硬盘空间。
切片完毕后,可在IE界面上通过iServer 将瓦片文件下载到本地,存储为*.mbtiles文件(本质上是Sqlite数据库)。如果*.Mbtiles 文件在android程序中不可用,可通过调试信息logcat查找问题。
本文在切图过程中发现mbtiles数据库中的metadata表中的"crs_wkt"栏读取异常,导致无法使用切图,可 以从可用的mbtiles数据库中,将“crs_wkt”栏数据拷贝并覆盖掉不可用“crs_wkt”栏 数据。
通过软硬件环境实现PDF矢量图转瓦片地图的具体实现方式如图31所示:

3.7导航数据导入和对比
导航数据库是电子飞行包系统的地面支持系统中非常重要的一部分,它可以给航图 的更新和飞行计划的制作提供强大的数据支持,将已有的导航数据导入数据库,对机场发来的新的数据跟数据库中的数据进行对比分析,并且更新数据库信息,但是在此导航 数据库的设计与实现中,将不会讨论导航数据库对航图更新和飞行计划的支持实现,如 图32所示。

未完待续,欢迎继续关注
下一小节:3.7.1下面将从导航数据库的制作流程等方面介绍导航数据库的设计与实现。
配图 | 网络
编辑 | 小玉
校准 | 采虹兔
投稿 | 1644134@qq.com
