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
。
需要注意的是,这个预处理可能会花费分钟级别的时间。
以下步骤是在浏览器中启动航路查询:
- 克隆当前分支
- 配置
config.py
- 运行
python3 webFinder.py
,此时你可以在浏览器打开http://127.0.0.1:9807/
来查询航路 - 为你的服务配置反向代理(可忽略)
本项目总体上采用前后端分离的思想,后端是由webFinder.py
提供对网络请求的响应,前端
由static
目录下的页面来实现与用户的交互。
如果你需要调库,你不想使用web API,请参考routefinder.py
代码是本人在高中时期编写的,代码写的比较乱,命名也不规范,很多代码还没来得及格式化,现在也很少有时间再来维护,但是本分支不会放弃维护,仍然欢迎任何形式的贡献。
本项目使用十分宽松的MIT
协议,特此授予任何人免费获得本软件和相关文档文件(“软件”)副本的许可,
不受限制地处理本软件,包括但不限于使用、复制、修改、合并 、发布、分发、再许可的权利。
而且,你不需要注明作者、来源等信息,你可以自由地使用、修改我的代码。
请直接提issue。