/openRouteFinder

This open source project is there to provide portable services (that can be implemented to web or embedded devices) for computations and plannings of the airway route in flight simulation platforms.

Primary LanguagePythonMIT LicenseMIT

Airway-Route-Finder

Airway Route Finder (openRouteFinder)

Airway Route Finder是一个开源的由Python编写的模拟飞行航路查询工具。 本项目依赖于airbusx_extended_v115_$(navCycle)导航数据,使用dijkstra算法求解两个机场之间的最短航路(尽管它并不一定最优,并且符合真实世界的规则)。

本分支作为默认分支,是稳定的旧版分支,目前正在编写基于c++的新版航路查询工具(openRouteFinder)。

特性

  • 可以静态调用我们对算法的实现,也可以直接提供航路查询的web API
  • 提供了前端页面,提供了完整的航路查询网站服务
  • 目前唯一的,能够允许用户选择进离场程序的,在线航路查询服务
  • 在我们的前端网页,你可以自由选择进离场程序,并且在地图上规划它们

在线演示

by HKYFLY社区:https://route.hkyfly.com/

导航数据的预处理

本项目需要对aerosoft提供的导航数据进行预处理。aerosoft提供的导航数据是存储在我们的磁盘上,如果直接使用dijkstra算法进行查询, 由于涉及到IO读写,效率会非常的低。因此我们需要将存储在文件系统中的航路全部加载进内存,并且将它们进行组织,方便我们算法的处理。将aerosoft提供的导航数据 组织为我们的数据结构就是所谓的预处理,是一个比较耗时的过程。预处理过程由packData.py完成。

在使用packData.py预处理数据前,请先配置好config.py,设置好

LOCAL_ASDATA_PATH = "USING YOUR OWN"

接着,你需要执行packData.py

$ python3 packData.py
Read Airports' data?(y/n strictly):

预处理分为两个部分。第一个部分是预处理机场的数据,第二个部分是预处理全球航路信息。输入小写y,就会预处理机场数据,并且把预处理的数据输出到 airport_$(navCycle).air。输入小写n,就会预处理全球航路信息,并且把数据输出到navidata_$(navCycle).map

需要注意的是,这个预处理可能会花费分钟级别的时间。

运行

以下步骤是在浏览器中启动航路查询:

  1. 克隆当前分支
  2. 配置config.py
  3. 运行python3 webFinder.py,此时你可以在浏览器打开http://127.0.0.1:9807/来查询航路
  4. 为你的服务配置反向代理(可忽略)

本项目总体上采用前后端分离的**,后端是由webFinder.py提供对网络请求的响应,前端 由static目录下的页面来实现与用户的交互。

如果你需要调库,你不想使用web API,请参考routefinder.py

关于代码的一些解释

代码是本人在高中时期编写的,代码写的比较乱,命名也不规范,很多代码还没来得及格式化,现在也很少有时间再来维护,但是本分支不会放弃维护,仍然欢迎任何形式的贡献。

关于

本项目使用十分宽松的MIT协议,特此授予任何人免费获得本软件和相关文档文件(“软件”)副本的许可, 不受限制地处理本软件,包括但不限于使用、复制、修改、合并 、发布、分发、再许可的权利。

而且,你不需要注明作者、来源等信息,你可以自由地使用、修改我的代码

遇到问题

请直接提issue。