Zum Inhalt

ProcedureQueryHandler.LoadAirway

Eigenschaft Wert
Modul NavDb
Klasse ProcedureQueryHandler
Typ Function
Sichtbarkeit Public
Datei NavDb/ProcedureQueryHandler.vb

Beschreibung

Expandiert einen Airway zwischen zwei benannten Fixes und gibt die geordnete Waypoint-Liste zurueck. Die Methode liest alle Segmente des Airway aus der ATS-Tabelle, loest die Waypoint-IDs ueber den waypointLookup-Delegate auf und sucht das Segment, das beide Fixes enthaelt. Beide Richtungen (vorwaerts/rueckwaerts) werden unterstuetzt. Gibt AirwayResult(False, Nothing) zurueck, wenn kein passendes Segment gefunden wird.

Signatur

Public Function LoadAirway(airwayName As String, fromFix As String, toFix As String) As AirwayResult

Parameter

Name Typ Beschreibung Standard
airwayName String Name des Airway (z.B. "UL9", "T161", "Y163")
fromFix String Identifier des Start-Fix (Waypoint-Name, z.B. "ANEKI")
toFix String Identifier des Ziel-Fix (Waypoint-Name, z.B. "LOGAN")

Rückgabewert

Typ Beschreibung
AirwayResult Ergebnisobjekt mit Found-Flag und AirwayRecord (Name + geordnete Waypoint-Liste), oder Nothing bei Fehler

Ablaufdiagramm

flowchart TD
    A[Start] --> B["SQL: SELECT IDATS, IDWayp, Terminate FROM ATS WHERE ATS = ?"]
    B --> C[Segmente nach IDATS gruppieren]
    C --> D[Waypoint-IDs ueber _WaypointLookup aufloesen]
    D --> E{Segment mit beiden Fixes?}
    E -- Nein --> F[Naechstes Segment pruefen]
    F --> E
    E -- Alle geprueft, nicht gefunden --> G["Return AirwayResult(False, Nothing)"]
    E -- Ja --> H{fromIdx <= toIdx?}
    H -- Ja --> I[Waypoints vorwaerts kopieren]
    H -- Nein --> J[Waypoints rueckwaerts kopieren]
    I --> K["Return AirwayResult(True, airway)"]
    J --> K

Aufgerufen von

Modul Sub/Function Kontext
NavDb NavDbActor.Receive(Of LoadAirway) Beantwortet Airway-Abfragen vom Akka-Nachrichtensystem
Mcdu McduActor Airway-Expansion bei Flugplaneingabe (Insert Airway)

Ruft auf

Modul Sub/Function Kontext
System.Data.OleDb OleDbConnection / OleDbCommand Datenbankabfrage auf die ATS-Tabelle in ASTNAV.mdb
NavDb _WaypointLookup (Delegate) Loest Waypoint-IDs zu WaypointRecords auf (NavaidQueryHandler.LookupWaypointById)
NavDb AirwayRecord (Konstruktor) Erstellt das Ergebnisobjekt mit dem Airway-Namen

Beispiel

Dim handler As New ProcedureQueryHandler("C:\NavData\ASTNAV.mdb",
    AddressOf navaidHandler.LookupWaypointById)

' Airway UL9 von ANEKI nach LOGAN expandieren
Dim result As AirwayResult = handler.LoadAirway("UL9", "ANEKI", "LOGAN")
If result.Found Then
    Console.WriteLine($"Airway {result.Airway.Name}: {result.Airway.Waypoints.Count} Waypoints")
    For Each wp As WaypointRecord In result.Airway.Waypoints
        Console.WriteLine($"  {wp.Identifier}")
    Next
Else
    Console.WriteLine("Airway-Segment nicht gefunden")
End If

Änderungshistorie

Version Datum Änderung
1.0 2026-04-16 Erstdokumentation