parse the constraints and create the waypoint list out of it
This commit is contained in:
@@ -9,6 +9,7 @@ from aman.config.RHC import RHC
|
|||||||
from aman.config.AirportSequencing import AirportSequencing
|
from aman.config.AirportSequencing import AirportSequencing
|
||||||
from aman.config.RunwaySequencing import RunwaySequencing
|
from aman.config.RunwaySequencing import RunwaySequencing
|
||||||
from aman.formats.SctEseFormat import SctEseFormat
|
from aman.formats.SctEseFormat import SctEseFormat
|
||||||
|
from aman.types.Waypoint import Waypoint
|
||||||
|
|
||||||
class Airport:
|
class Airport:
|
||||||
def findGngData(data, path):
|
def findGngData(data, path):
|
||||||
@@ -103,11 +104,65 @@ class Airport:
|
|||||||
for i in range(0, len(dependencies), 2):
|
for i in range(0, len(dependencies), 2):
|
||||||
self.DefaultSequencing.addDependency(dependencies[i], dependencies[i + 1])
|
self.DefaultSequencing.addDependency(dependencies[i], dependencies[i + 1])
|
||||||
|
|
||||||
def parseConstraints(self, icao : str, planning):
|
def parseConstraints(self, planning):
|
||||||
|
self.ArrivalRouteConstraints = {}
|
||||||
|
|
||||||
for key in planning:
|
for key in planning:
|
||||||
if True == key.startswith('constraints'):
|
if True == key.startswith('constraints'):
|
||||||
star = key.replace('constraints', '').upper()
|
star = key.replace('constraints', '').upper()
|
||||||
#print(star)
|
if '' != star:
|
||||||
|
elements = list(filter(None, planning[key].split(':')))
|
||||||
|
if 3 > len(elements):
|
||||||
|
sys.stderr.write('Invalid constraint line: ' + key + '=' + planning[key])
|
||||||
|
sys.exit(-1)
|
||||||
|
|
||||||
|
waypoints = []
|
||||||
|
|
||||||
|
# values for the waypoint constraints
|
||||||
|
waypointName = elements[0]
|
||||||
|
constraints = [-1, -1]
|
||||||
|
isBaseTurn = False
|
||||||
|
isFinalTurn = False
|
||||||
|
|
||||||
|
index = 1
|
||||||
|
while index < len(elements):
|
||||||
|
if 'A' == elements[index] or 'S' == elements[index]:
|
||||||
|
if index + 1 == len(elements) or False == elements[index + 1].isnumeric():
|
||||||
|
sys.stderr.write('Invalid constraint line: ' + key + '=' + planning[key])
|
||||||
|
sys.exit(-1)
|
||||||
|
|
||||||
|
if 'A' == elements[index]:
|
||||||
|
constraints[0] = int(elements[index + 1])
|
||||||
|
else:
|
||||||
|
constraints[1] = int(elements[index + 1])
|
||||||
|
index += 1
|
||||||
|
elif 'B' == elements[index]:
|
||||||
|
isBaseTurn = True
|
||||||
|
elif 'F' == elements[index]:
|
||||||
|
isFinalTurn = True
|
||||||
|
else:
|
||||||
|
if False == isBaseTurn and False == isFinalTurn and -1 == constraints[0] and -1 == constraints[1] and '' == waypointName:
|
||||||
|
sys.stderr.write('Invalid constraint line: ' + key + '=' + planning[key])
|
||||||
|
sys.exit(-1)
|
||||||
|
if True == isBaseTurn and True == isFinalTurn:
|
||||||
|
sys.stderr.write('Invalid constraint line: ' + key + '=' + planning[key])
|
||||||
|
sys.exit(-1)
|
||||||
|
|
||||||
|
waypoints.append(Waypoint(name = waypointName, base = isBaseTurn, final = isFinalTurn))
|
||||||
|
if -1 != constraints[0]:
|
||||||
|
waypoints[-1].Altitude = constraints[0]
|
||||||
|
if -1 != constraints[1]:
|
||||||
|
waypoints[-1].Speed = constraints[1]
|
||||||
|
|
||||||
|
# reset temporary data
|
||||||
|
waypointName = elements[index]
|
||||||
|
constraints = [-1, -1]
|
||||||
|
isBaseTurn = False
|
||||||
|
isFinalTurn = False
|
||||||
|
|
||||||
|
index += 1
|
||||||
|
|
||||||
|
self.ArrivalRouteConstraints[star] = waypoints
|
||||||
|
|
||||||
def __init__(self, filepath : str, icao : str):
|
def __init__(self, filepath : str, icao : str):
|
||||||
config = configparser.ConfigParser()
|
config = configparser.ConfigParser()
|
||||||
@@ -157,6 +212,6 @@ class Airport:
|
|||||||
sys.exit(-1)
|
sys.exit(-1)
|
||||||
self.GaforId = dataConfig['gaforid']
|
self.GaforId = dataConfig['gaforid']
|
||||||
|
|
||||||
# get the default sequencing data and constraints
|
# get the default sequencing data
|
||||||
self.parseDefaultSequencingConfiguration(icao, planningConfig)
|
self.parseDefaultSequencingConfiguration(icao, planningConfig)
|
||||||
self.parseConstraints(icao, planningConfig)
|
self.parseConstraints(planningConfig)
|
||||||
|
|||||||
Reference in New Issue
Block a user