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}")
|