calculate the arrival route
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user