/
FlightEntry.py
executable file
·85 lines (77 loc) · 2.54 KB
/
FlightEntry.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#import Assertions
import FlightTypes
import Airport
import Airspace
import Units
import Aircraft
from collections import namedtuple
FlightEntry = namedtuple('FlightEntry', [
'Id',
'Position', # : Spatial.Position
'DepartureAirport', # : string
'ArrivalAirport', # : string
'Payload', # : Payload
'InitialFuel', # : float<FuelPounds>
'ConsumedFuel', # : float<FuelPounds>
'ScheduledGateDepartureTime', # : float<Time>
'ActualGateDepartureTime', # : float<Time>
'ScheduledRunwayArrivalTime', # : float<Time>
'ScheduledGateArrivalTime' #: float<Time>
])
FlightParameters = namedtuple('FlightParameters', [
'FlightId',
'Direction',
'AircraftType',
'DestinationAirport',
'Payload',
'InitialFuel',
'ScheduledGateDepartureTime',
'ActualGateDepartureTime',
'ScheduledGateArrivalTime',
'ScheduledRunwayArrivalTime'
])
FlightState = namedtuple('FlightState', [
'AircraftPosition',
'AirSpeed',
'GroundSpeed',
'TimeElapsed',
'FuelConsumed',
'IntersectedAirspace',
'TimeElapsedInTurbulence',
'Messages'
])
def generateParametersAndState(airports, entry):
# TODO (niwang)
# airports: a dict of AirportID to Airport object
# the original list of Airport is a tuple of Airport and Environment, now we only keep
# the Airport Object
# entry: FlightEntry
aircraftType = Aircraft.mediumRange
departureAirport = airports[entry.DepartureAirport] #['Airport.Code']
arrivalAirport = airports[entry.ArrivalAirport] #['Airport.Code']
timeElapsed = Units.timeDifference(0.0, entry.ActualGateDepartureTime)
maximumFuel = Units.fuelGallonsToFuelPounds(aircraftType.FuelCapacity)
initialFuel = entry.InitialFuel
fuelConsumed = entry.ConsumedFuel
flightParameters = FlightParameters(
entry.Id,
'Eastbound' if departureAirport.Position.PositionX < \
arrivalAirport.Position.PositionX else 'Westbound',
aircraftType,
arrivalAirport,
entry.Payload,
initialFuel,
entry.ScheduledGateDepartureTime,
entry.ActualGateDepartureTime,
entry.ScheduledGateArrivalTime,
entry.ScheduledRunwayArrivalTime)
flightState = FlightState(
entry.Position,
0.0,
0.0,
timeElapsed,
fuelConsumed,
Airspace.emptyIntersection,
0.0,
[])
return (flightParameters, flightState)