3 个版本 (破坏性)
0.3.1 | 2023年2月8日 |
---|---|
0.2.0 | 2023年1月11日 |
0.1.0 | 2023年1月5日 |
#1464 in 命令行工具
33KB
491 行
使用 Google Earth 的 .kml
文件制作 FlightGear 飞行计划
流行的网站 SimBrief 可以为您提供模拟的综合飞行文档。它允许您 下载您的飞行计划为 Google Earth .kml 文件,但没有下载 FlightGear 飞行计划的选择。
此工具允许您将此 .kml 文件转换为 .fgfp,即 FlightGear 飞行计划。
安装
要安装此应用程序,您需要安装 Rust 语言的 cargo。如果您还没有,可以参考这里的安装说明。
然后,您只需在终端中运行以下命令
$ cargo install kml_to_fgfp
可执行二进制文件的用法
目前,二进制文件至少需要两个参数
-
第一个参数 指的是 源文件,预期为 .kml 文件。
-
第二个参数 指的是目标文件,即生成的 .fgfp 文件。
请注意,如果 .fgfp 文件已存在,它将被覆盖。
以下是一个示例
$ kml_to_fgfp YSSYSAEZ.kml YSSYSAEZ.fgfp
如果您的终端中没有看到输出,请不要担心,这是预期行为。
您还可以指定出发和目的地机场,这将使用机场航路点完成飞行计划
$ kml_to_fgfp YSSYSAEZ.kml YSSYSAEZ.fgfp YSSY/34L SAEZ/11
当程序检测到 .kml 文件中的无效数据时(可能已被手动编辑且存在错误),它会输出警告。
$ kml_to_fgfp YSSYSAEZ.kml YSSYSAEZ.fgfp
Dropping ARSOT waypoint: invalid float literal
在此示例中,程序不会为 ARSOT 导航台生成航路点,因为它发现数据中存在错误。
还有一个帮助菜单,可以通过 --help
和 -h
参数访问。
$ kml_to_fgfp --help
Usage:
kml_to_fgfp INPUT OUTPUT [DEPARTURE_AIRPORT] [DESTINATION AIRPORT]
INPUT is the Google Earth (.kml) file.
OUTPUT is the name of the generated FlightGear flight plan (.fgfp) file.
[DEPARTURE_AIRPORT] is an optional argument detailing the departure airport's
ICAO designation. It would look something like `YSSY`. You can also type a `/`
to add a specific runway, so it would look like `YSSY/34L`.
[DESTINATION_AIRPORT] is an optional argument detailing the destination
airport's ICAO designation. It would look something like `SAEZ`. You can also
type a `/` to add a specific runway, so it would look like `SAEZ/11`.
Version: 0.1.0, MIT License
库 API 的用法
-
创建一个
EventWriter
,它将用于写入输出文件。let mut output_file = File::create(output_filepath)?; let mut writer = EmitterConfig::new() .perform_indent(true) .create_writer(&mut output_file);
-
使用
write_start_of_tree
函数写入 .fgfp xml 树的开始部分。kml_to_fgfp::write_start_of_tree(&mut writer)?;
-
创建 2 个
Option<kml_to_fgfp::Airport>
设置值,如果飞行计划中没有出发或目的地机场,则设置为None
。然后调用
write_airports
函数,将前面的选项作为参数传递。let departure = kml_to_fgfp::Airport { ident: String::from("YSSY"), runway: Some(String::from("34L")), }; let destination = kml_to_fgfp::Airport { ident: String::from("SAEZ"), runway: Some(String::from("11")), }; kml_to_fgfp::write_airports(&mut writer, &departure, &destination)?;
-
创建一个
EventReader
,它将被用于读取 .kml 文件。let input_file = File::open(input_filepath)?; let input_file = BufReader::new(input_file); let parser = EventReader::new(input_file);
-
调用
transform_route
函数,该函数需要 xmlEventReader
、EventWriter
以及 2 个机场选项。该函数将使用 .kml 文件中的信息创建 .fgfp 的路线。kml_to_fgfp::transform_route( parser, &mut writer, &departure, &destination, )?;
-
通过调用
close_tree
函数关闭 xml 树。kml_to_fgfp::close_tree(&mut writer)?;
如果您需要示例,可以参考 runner
模块中的 run
函数。
关于
此程序和存储库在 MIT 许可证 下可用。
依赖项
~255KB