Inbound.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #!/usr/bin/env python
  2. import pytz
  3. from datetime import datetime
  4. from aman.com import AircraftReport_pb2
  5. from aman.sys.WeatherModel import WeatherModel
  6. from aman.types.PerformanceData import PerformanceData
  7. class Inbound:
  8. def __init__(self, report : AircraftReport_pb2.AircraftReport, performanceData : PerformanceData):
  9. self.Report = report
  10. self.Callsign = report.aircraft.callsign
  11. self.CurrentPosition = report.position
  12. self.ReportTime = datetime.strptime(report.reportTime + '+0000', '%Y%m%d%H%M%S%z').replace(tzinfo = pytz.UTC)
  13. self.EnrouteArrivalTime = None
  14. self.InitialArrivalTime = None
  15. self.RequestedRunway = None
  16. self.PlannedArrivalTime = None
  17. self.PlannedRunway = None
  18. self.PlannedStar = None
  19. self.PlannedArrivalRoute = None
  20. self.PlannedTrackmiles = None
  21. self.FixedSequence = False
  22. self.WTC = None
  23. # analyze the WTC
  24. wtc = report.aircraft.wtc.upper()
  25. if 'L' == wtc or 'M' == wtc or 'H' == wtc or 'J' == wtc:
  26. self.WTC = wtc
  27. # analyze the requested runway
  28. if '' != report.requestedRunway:
  29. self.RequestedRunway = report.requestedRunway
  30. # search performance data -> fallback to A320
  31. if self.Report.aircraft.type in performanceData.Aircrafts:
  32. self.PerformanceData = performanceData.Aircrafts[self.Report.aircraft.type]
  33. if None == self.PerformanceData:
  34. self.PerformanceData = performanceData.Aircrafts['A320']