2 个版本
0.2.1 | 2022年1月16日 |
---|---|
0.2.0 | 2022年1月16日 |
#1287 in 数据库接口
16KB
304 行
uap
uap 是一个 Rust crate,支持从 FAA 数据库和/或 Mictronics 数据库查找飞机注册和类型信息。
lib.rs
:
此 crate 提供了访问全球飞机信息的统一接口,包括注册和类型信息。
主要用例是如果您有飞机的 ICAO 代码(又称 Mode S 代码),则查找飞机的注册(“尾号”)。ICAO 代码可以由飞机应答机广播,因此如果您正在查看应答机数据包并想了解更多关于发送该数据包的飞机的信息,第一步通常是查找其注册信息。
此 crate 目前支持两个信息来源,这两个来源都可以由公众下载
- FAA 注册数据库。FAA 数据库包含所有具有民用注册的在美国的飞机信息。
- Mictronics 数据库;具体来说,是包含在 此链接 中的“Complete database for old readsb (非协议缓冲区版本)”zip 文件。Microntronics 数据库试图收集关于世界上所有飞机的信息,包括军用飞机。
要使用此 crate,您需要
- 下载 FAA 数据库 zip 文件,或 Mictronics 数据库,或两者都下载。
- 将数据库(们)解压到目录中。
- 使用目录中包含数据库文件的目录调用 [
faa::Faa::from_dir()
] 或 [mictronics::Mictronics::from_dir()
]。 - 使用要获取信息的飞机的 Mode S 代码调用返回结构的
lookup_mode_s
函数。
use uap::Database;
use uap::faa::Faa;
use uap::mictronics::Mictronics;
use std::str::FromStr;
// ./tests/data/faa is a directory containing the FAA CSV files.
let faa = Faa::from_dir(&std::path::PathBuf::from_str("./tests/data/faa").unwrap()).unwrap();
let aircraft = faa.lookup_mode_s("A44360").unwrap().unwrap();
assert_eq!(aircraft.registration, Some("N374HK".to_string()));
assert_eq!(aircraft.registrant.unwrap().name, "GENERAL ATOMICS AERONAUTICAL SYSTEMS INC".to_string());
assert_eq!(aircraft.kind, None);
// ./tests/data/mictronics is a directory containing the FAA CSV files.
let mictronics = Mictronics::from_dir(
&std::path::PathBuf::from_str("./tests/data/mictronics").unwrap(),
)
.unwrap();
let aircraft = mictronics.lookup_mode_s("A44360").unwrap().unwrap();
assert_eq!(aircraft.registration, Some("N374HK".to_string()));
assert_eq!(aircraft.kind, Some("UHK97000-12".to_string()));
依赖项
~5MB
~75K SLoC