67 lines
2.1 KiB
Python
67 lines
2.1 KiB
Python
#!/usr/bin/env python
|
|
|
|
import configparser
|
|
import glob
|
|
import os
|
|
import sys
|
|
|
|
from formats.SctEseFormat import SctEseFormat
|
|
|
|
class Airport:
|
|
def findGngData(data, path):
|
|
if None == data.get('gngwildcard'):
|
|
return None, None
|
|
|
|
# find the newest ESE file
|
|
files = glob.glob(os.path.join(path, data['gngwildcard'] + '.ese'))
|
|
latestEse = max(files, key=os.path.getctime)
|
|
|
|
# search for the corresponding SCT file
|
|
latestSct = os.path.splitext(latestEse)[0] + '.sct'
|
|
|
|
# check if the files exist
|
|
if False == os.path.isfile(latestEse) or False == os.path.isfile(latestSct):
|
|
return None, None
|
|
|
|
return latestSct, latestEse
|
|
|
|
def parsePlanning(self, planning):
|
|
if None == planning.get('routes'):
|
|
return []
|
|
return planning['routes'].split(':')
|
|
|
|
def __init__(self, filepath : str, icao : str):
|
|
self.arrivalRoutes = {}
|
|
|
|
config = configparser.ConfigParser()
|
|
config.read(filepath)
|
|
|
|
dataConfig = None
|
|
planningConfig = None
|
|
|
|
# search the required sections
|
|
for key in config:
|
|
if 'DATA' == key:
|
|
dataConfig = config['DATA']
|
|
elif 'PLANNING' == key:
|
|
planningConfig = config['PLANNING']
|
|
|
|
# find the GNG-file data
|
|
sctFile, eseFile = Airport.findGngData(dataConfig, os.path.dirname(filepath))
|
|
if None == sctFile or None == eseFile:
|
|
sys.stderr.write('No GNG-files found')
|
|
sys.exit(-1)
|
|
|
|
# parse the planning information
|
|
if None == planningConfig or False == self.parsePlanning(planningConfig):
|
|
sys.stderr.write('No planning configuration found')
|
|
sys.exit(-1)
|
|
requiredArrivalRoutes = self.parsePlanning(planningConfig)
|
|
if 0 == len(requiredArrivalRoutes):
|
|
sys.stderr.write('No valid planning configuration found')
|
|
sys.exit(-1)
|
|
|
|
# parse the GNG data
|
|
print('Used GNG-Data: ' + eseFile)
|
|
self.gngData = SctEseFormat(sctFile, eseFile, icao, requiredArrivalRoutes)
|