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 |