""" 航路点定义(兼容 ARINC 424 字段) """ from dataclasses import dataclass from typing import Optional @dataclass class Waypoint: """航路点(兼容 ARINC 424 核心字段)""" # ── 基本信息 ── identifier: str = "" # 航路点标识符(如 "ZBAA", "WP001") latitude: float = 0.0 # 纬度(度) longitude: float = 0.0 # 经度(度) altitude: float = 0.0 # 高度(米,MSL) name: str = "" # 全称 # ── 速度约束 ── speed: float = 0.0 # 过点速度(m/s) speed_limit: Optional[float] = None # 速度限制(m/s) # ── 高度约束 ── alt_constraint: Optional[str] = None # "AT", "AT_OR_ABOVE", "AT_OR_BELOW" alt_value: Optional[float] = None # 约束高度(米) alt_descriptor: str = "" # ── 转弯参数 ── turn_radius: float = 0.0 # 过点转弯半径(米,0=自动计算) fly_over: bool = False # True=飞越点,False=飞越前转弯(Fly-by) # ── ARINC 424 字段 ── path_terminator: str = "TF" # 路径终止符(TF/CF/DF/IF/RF/AF等) course_angle: Optional[float] = None # 指定进场航道(度) waypoint_type: str = "FIX" # FIX/AIRPORT/VOR/NDB/RUNWAY def __str__(self) -> str: return (f"WP[{self.identifier}] " f"({self.latitude:.4f}°, {self.longitude:.4f}°, {self.altitude:.0f}m) " f"Spd={self.speed:.1f}m/s PT={self.path_terminator}")