calculate the arrival route

This commit is contained in:
Sven Czarnian
2021-11-11 23:22:15 +01:00
parent 1a23499f61
commit 559ab1fa03

View File

@@ -9,6 +9,7 @@ from aman.com import AircraftReport_pb2
from aman.config.AirportSequencing import AirportSequencing from aman.config.AirportSequencing import AirportSequencing
from aman.formats.SctEseFormat import SctEseFormat from aman.formats.SctEseFormat import SctEseFormat
from aman.sys.WeatherModel import WeatherModel from aman.sys.WeatherModel import WeatherModel
from aman.types.ArrivalWaypoint import ArrivalWaypoint
from aman.types.PerformanceData import PerformanceData from aman.types.PerformanceData import PerformanceData
from aman.types.ArrivalRoute import ArrivalRoute from aman.types.ArrivalRoute import ArrivalRoute
from aman.types.ArrivalData import ArrivalData from aman.types.ArrivalData import ArrivalData
@@ -57,7 +58,7 @@ class Inbound:
star = self.findArrivalRoute(identifier.Runway, navData) star = self.findArrivalRoute(identifier.Runway, navData)
if None != star: if None != star:
flightTime, flightTimeUntilIaf, trackmiles = self.arrivalEstimation(identifier.Runway, star, weatherModel) flightTime, flightTimeUntilIaf, trackmiles, arrivalRoute = self.arrivalEstimation(identifier.Runway, star, weatherModel)
avgSpeed = trackmiles / (float(flightTime.seconds) / 3600.0) avgSpeed = trackmiles / (float(flightTime.seconds) / 3600.0)
ttg = flightTime - timedelta(minutes = (trackmiles / (avgSpeed * 1.1)) * 60) ttg = flightTime - timedelta(minutes = (trackmiles / (avgSpeed * 1.1)) * 60)
@@ -131,6 +132,7 @@ class Inbound:
flightTimeSeconds = 0 flightTimeSeconds = 0
nextWaypointIndex = 0 nextWaypointIndex = 0
flownDistance = 0.0 flownDistance = 0.0
arrivalRoute = [ ArrivalWaypoint(waypoint = star.Route[0], trackmiles = distanceToWaypoint) ]
while True: while True:
# check if a constraint cleanup is needed and if a speed-update is needed # check if a constraint cleanup is needed and if a speed-update is needed
@@ -181,6 +183,10 @@ class Inbound:
lastWaypointIndex = nextWaypointIndex lastWaypointIndex = nextWaypointIndex
nextWaypointIndex += 1 nextWaypointIndex += 1
arrivalRoute[-1].FlightTime = timedelta(seconds = flightTimeSeconds)
arrivalRoute[-1].ETA = self.ReportTime + arrivalRoute[-1].FlightTime
arrivalRoute[-1].PTA = arrivalRoute[-1].ETA
# check if a skip from base to final turn waypoints is needed # check if a skip from base to final turn waypoints is needed
if -1 != turnIndices[0] and nextWaypointIndex > turnIndices[0] and nextWaypointIndex < turnIndices[1]: if -1 != turnIndices[0] and nextWaypointIndex > turnIndices[0] and nextWaypointIndex < turnIndices[1]:
nextWaypointIndex = turnIndices[1] nextWaypointIndex = turnIndices[1]
@@ -191,4 +197,6 @@ class Inbound:
currentHeading = star.Route[lastWaypointIndex].bearing(star.Route[nextWaypointIndex]) currentHeading = star.Route[lastWaypointIndex].bearing(star.Route[nextWaypointIndex])
currentPosition[1] = min(weather.calculateGS(currentPosition[0], currentIAS, currentHeading), currentPosition[1]) currentPosition[1] = min(weather.calculateGS(currentPosition[0], currentIAS, currentHeading), currentPosition[1])
return timedelta(seconds = flightTimeSeconds), timedelta(seconds = flightTimeUntilIafSeconds), trackmiles arrivalRoute.append(ArrivalWaypoint(waypoint = star.Route[nextWaypointIndex], trackmiles = arrivalRoute[-1].Trackmiles + distanceToWaypoint))
return timedelta(seconds = flightTimeSeconds), timedelta(seconds = flightTimeUntilIafSeconds), trackmiles, arrivalRoute