parse the runways as well
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
import sys
|
||||
|
||||
from aman.types.ArrivalRoute import ArrivalRoute
|
||||
from aman.types.Runway import Runway
|
||||
from aman.types.Waypoint import Waypoint
|
||||
|
||||
class SctEseFormat:
|
||||
@@ -32,9 +33,20 @@ class SctEseFormat:
|
||||
sys.exit(-1)
|
||||
return Waypoint(split[nameIdx], Waypoint.dms2dd(split[latitudeIdx]), Waypoint.dms2dd(split[longitudeIdx]))
|
||||
|
||||
def extractWaypoints(self, sctFilepath : str):
|
||||
def parseRunway(runway : str):
|
||||
split = list(filter(None, runway.split(' ')))
|
||||
if 9 != len(split) or '' == split[8]:
|
||||
return None, None, None
|
||||
|
||||
waypoint0 = Waypoint(split[0], Waypoint.dms2dd(split[4]), Waypoint.dms2dd(split[5]))
|
||||
waypoint1 = Waypoint(split[1], Waypoint.dms2dd(split[6]), Waypoint.dms2dd(split[7]))
|
||||
|
||||
return split[8], Runway(waypoint0, waypoint1), Runway(waypoint1, waypoint0)
|
||||
|
||||
def extractSctInformation(self, sctFilepath : str):
|
||||
config = SctEseFormat.readFile(sctFilepath)
|
||||
foundAirports = False
|
||||
foundRunways = False
|
||||
foundVOR = False
|
||||
foundNDB = False
|
||||
foundFix = False
|
||||
@@ -48,6 +60,8 @@ class SctEseFormat:
|
||||
foundFix = True
|
||||
elif 'AIRPORT' == key:
|
||||
foundAirports = True
|
||||
elif 'RUNWAY' == key:
|
||||
foundRunways = True
|
||||
|
||||
if False == foundVOR:
|
||||
sys.stderr.write('Unable to find VOR-entries in the sector file')
|
||||
@@ -61,6 +75,9 @@ class SctEseFormat:
|
||||
if False == foundAirports:
|
||||
sys.stderr.write('Unable to find AIRPORT-entries in the sector file')
|
||||
sys.exit(-1)
|
||||
if False == foundRunways:
|
||||
sys.stderr.write('Unable to find RUNWAY-entries in the sector file')
|
||||
sys.exit(-1)
|
||||
|
||||
# extract all waypoints
|
||||
for waypoint in config['VOR']:
|
||||
@@ -78,6 +95,15 @@ class SctEseFormat:
|
||||
airport = SctEseFormat.parseWaypoint(airport, 0, 2, 3)
|
||||
self.airports.setdefault(airport.name, []).append(airport)
|
||||
|
||||
# extract the runways
|
||||
for runway in config['RUNWAY']:
|
||||
airport, runway0, runway1 = SctEseFormat.parseRunway(runway)
|
||||
if None != airport:
|
||||
if not airport in self.runways:
|
||||
self.runways.setdefault(airport, [])
|
||||
self.runways[airport].append(runway0)
|
||||
self.runways[airport].append(runway1)
|
||||
|
||||
def parseArrivalRoute(self, route : str, airport : Waypoint):
|
||||
# split the route and validate that it is a STAR for the airport
|
||||
split = route.split(':')
|
||||
@@ -147,6 +173,7 @@ class SctEseFormat:
|
||||
self.arrivalRoutes = {}
|
||||
self.waypoints = {}
|
||||
self.airports = {}
|
||||
self.runways = {}
|
||||
|
||||
self.extractWaypoints(sctFilepath)
|
||||
self.extractSctInformation(sctFilepath)
|
||||
self.extractArrivalRoutes(eseFilepath, airport, allowedRoutes)
|
||||
|
||||
Reference in New Issue
Block a user