MENU

模拟飞行开发杂谈(一):GIS方向

February 15, 2021 • 折腾

  我其实觉得非常幸运,这两年我一直在接触到的是模拟飞行的这个领域。这两年模拟飞行给我带来的知识面是十分广泛的。飞行仿真行业也的的确确是一个非常综合的学科,各类一级学科都能在这里找到一丝身影。在这个系列的文章,我将简单聊聊这几年在模拟飞行领域下我的所学所思,希望多年以后,还能借此回味。

  今年是 2021 年,很巧 2021 也是那么多年以来在自己曾经参与管理的联飞平台的呼号。第一篇文章,我不想讲已经烂大街的航路查询,航图查询这类业务。他们的实现太过于简单了,或者确切地说,我们已经可以通过广泛的网络资料来快速搭建一个原型系统。
  GIS 地理信息系统这一方面的开发,我是从 2019 年的上半年开始接触的。当时我查阅了不少的模拟飞行方面以及运输行业的电子航情业务,比如适用于模拟飞行的 Navigraph,民航 AIS 单位以及海事海图单位下的一些非公开系统。想着能够自己去渲染一套 Mbtiles(适用于 TMS 服务,用于提供各个缩放层级预渲染瓦片图)。由于需要预渲染,因此需要大量的运算资源。考完大学之后购买的 8750H 和 16GRAM 在这样尺度下的工作量显得格外渺小。我也去阿里云租用了一台他们家内存拉满核心拉满的云服务器。结合着 QGIS 软件,跑了一晚上,花了我大概一百多块钱,很可惜效果不佳。事后回想,我就算渲染出来了,我也没有那么多地方来存储。更别说真的上线之后可以想象到的大量 CDN 费用了。
  QGIS 软件应该是我使用的众多 GIS 软件中比较好上手的一款。免费开源和社区资源是他脱颖而出的地方。当然我没有贬低商业软件的意思,我也试用过 ArcGIS 以及由 MapBox 开发的一款半成品软件 TileMill(目前已弃坑)。但复杂文档少(仅针对付费用户有培训和文档)和不稳定是让我放弃使用的第一诱因,毕竟工具要顺手。
  顺便说说为什么我今天想写 GIS,一家模拟飞行平台无非都是从论坛,呼号系统,联飞地图开始做起。论坛不用多说,有现成的开源系统。呼号系统本质上也就是表单数据入库的问题。而联飞地图,这个看似只是将飞行数据拍到地图上这样简单的业务,其实有不少地方可以深挖,可以细细学习。 在 SinoFSX 论坛当中就有一篇文章专门讲了。在那么多年之后他们的连飞地图有了哪些细致的变化,非常值得一看。我不得不提 ProjectFly 和 Volanta 这两个 FlightBook 向的应用网站,尤其是 Volanta。GIS 系统最重要的就是海量的地理信息数据存储和处理。
  Volanta 有一项非常吸引我的功能就是滑行道,跑道以及机位数据的展示。摘录一句群友的话:有了这个还要什么 EFB 啊。当然这种说法我觉得有点言过其实。因为它是基于一个 Web 的应用,无论从技术限制还是数据的版权角度而言,他都不太可能用视景软件的机场数据来生成这些内容。OpenSteetMap 是一个开源开放的 GIS 数据库,Volanta 的数据正是从中提取。
  有了数据源,一切都变得明朗起来。根据 Wiki,OSM 至少有 0.8T 的压缩数据。从海量的 OSM 数据当中直接过滤。在本地是一个几乎不可能的操作。直接的 GIS 数据库查询更是不可能的事。GIS 系统中,基本要素分为点(node),线(way)和关系(rel),点集的凸包用于形容各类多边形要素,各个要素的附加属性(Key-Value)描述了该要素对应的实体类型。OSM 提供了一种叫做 OverPassAPI 的查询方式。OverPassAPI 查出来的数据依旧是极其抽象的,尤其是复杂 rel 的结果。如果有任何数据库语言的基础,理解 OverPass 想必应该不困难。
  OverPassAPI 一般有 2 种查询方式,OverPass QL 以及 XML。其实只是不同的编码方式而已。QL 方式顾名思义 Query Language。

node/way/rel/nwr
    [{key}={value}];
    [{key}];
out;

比较常见的语句如上所示,筛选出有指定属性的元素。具体效果可以使用 OverPass Turbo

GIS 的数据一般是庞大的,处理起来很麻烦,与此同时,大量数据带来的图层效果调整,也是 GIS 项目耗费最大时间的一步。比如 ICON 缩放和 Zoom 对应关系之类的问题(瓦片文件制作)。查询方面还有像是 RoutePlan,基本上也有现成方案和算法可以使用。

vFlightMap-2103
上图是一个样例。

其实整个地图还有很多需要完善的地方,效果并不令我满意。当然,这个项目也算是我在 GIS 的领域第一次试试水,看看能有哪些能做的。相信对不少模拟飞行玩家来说,这样的地图称不上惊艳,但也令人眼前一亮了。

Last Modified: August 28, 2022
Archives QR Code
QR Code for this page
Tipping QR Code