41 lines
1.6 KiB
Python
41 lines
1.6 KiB
Python
|
|
"""
|
|||
|
|
航路点定义(兼容 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}")
|