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)
 |