Merge pull request #1 from AdamJCavanaugh/master

Fork Sync 04/04/2021
This commit is contained in:
ycohui
2021-04-04 21:47:30 +08:00
committed by GitHub
51 changed files with 43864 additions and 24187 deletions
+2
View File
@@ -0,0 +1,2 @@
__pycache__
eatcdev.ini
+356 -307
View File
@@ -1,307 +1,356 @@
# Custom airport file (experimental!)
# Save a copy of example.txt before editing it, and keep this file as a guide.
# On Windows, place the txt file in the /locations/ folder of the game.
# On android (4.4+), place the txt file in /Android/data/com.dirgtrats.endlessatc/files/.
# Copy, edit and use and share airport files at your own risk!
# This example file has lots of comments (#), to use it as a guide. Uncomment the 'code = ' item in the [airport1] section below to make the airport appear in-game.
# This file has several [sections] (but most are optional), namely:
# [airspace]: various general properties
# [airport1]: main airport
# [airport2]: optional secondary airports
# [area1]: optional restricted areas
# [configurations]: optional runway usage configurations
# [transition1]: optional runway transition routes
# [planetypes]: optional custom plane types
# [scenario]: optional nonrandom traffic
# Each section can have multiple items, each item with one or more properties. The format/order of properties are explained after a double hashtag (##) in this file.
# Properties are comma separated. Multi-line properties (lists) must start with a tab or space at the beginning of each line.
# Properties in this file that are explained between <brackets> are optional properties (do not include the brackets themselves).
# If the game fails to load a property, or you omit, #comment, or zero an (optional) property, a default value may be automatically used instead.
# Positions must be given either in x, y coordinates (in nautical miles NM), with 0, 0 being the center of the screen, and 20.1, 12.82 being somewhere at the top left,
# or, in latitude, longitude coordinates, which must always start with a N/W/S/E prefix, for example N40.7128, W74.0060 or S049.43.45.000, E002.09.51.000 (DMS notation).
# Lat/long coordinates (and true headings) are rotated automatically when a magnetic variance is defined; this is to align the radar display with the magnetic north,
# because heading 360 is a vertical line on the radar screen.
# X, y coordinates are screen coordinates; they are not rotated.
# Either way, all positions consist of two values, seperated by a comma. Whether you want to use x,y or latlong coordinates is up to you.
# For real world data it is probably easier to search the internet for the actual latlong coordinates, while for text labels on the screen x,y positions are more convenient.
# Press the left Ctrl key in the sim to display the current coordinates of the mouse. These values are also copied into the Windows clipboard.
##############################################################
[airspace]
##############################################################
radius = 30 ; airspace radius in NM
zoom = 7.0 ; default zoom level, increase to zoom in
elevation = 13 ; ground altitude in feet
floor = 1500 ; minimum selectable altitude
descendaltitude = 7000 ; minimum initial altitude for arrivals
ceiling = 9000 ; maximum selectable altitude in feet
above = 12000 ; SID top altitude in feet (above ceiling)
transitionlevel = 18001 ; lowest altitude in feet to be displayed as flight level
speedrestriction = 15, 220 ; radius in NM, and speed in knots
usa = true ; American-style callsign pronunciation and runway names
metric = false ; display altitudes in metres instead of feet
center = N50.1234, E2.0060 ; lat/long location of center of radar display (required when using lat/long coordinates elsewhere in this file)
magneticvar = 2.0 ; magnetic variance; east = positive (used to rotate lat/long coordinates if defined below)
beacons =
vor, 0, -3, 0, main v-o-r
bco, 18.6, 6.8, 090, beacon two
trd, N50.0, E2.1, -090, the third one
## name, position, <holdingheading>, <pronunciation>
# the first given beacon will be the default beacon for arrivals inbound the main airport
# when holdingheading is 0 or omitted, planes will hold there using the plane's current heading
# when a holdingheading is given, planes will fly that heading (or magnetic course) on the inbound leg when holding
# when holdingheading is negative, planes will make left-hand turns instead of right-hand
line1 =
10, 10
10, 40
40, 40
40, 10
10, 10
## positions
# pointlist of optional green (coast)line.
line2 =
-15, 0
-22, 0
-22, -12.23
-15, -14
-15, 0
##############################################################
[airport1]
##############################################################
name = Example Airport ; name of the main airport
#code = EXAM ; four letter code, displayed in airport menu (required)
runways =
rwy1, 36, -4.3, 3.23, 360.0, 11400, 0, 0, 100, 3, 360.0, 3, 180.0, YY, 8.0, ZZ, 8.5
## identifier, name, position, true_heading, <length>, <displaced>, <displaced2>, <elevation>, <glideslope>, <localizer>, <glideslope2>, <localizer2>, <beaconname, distance>, <beaconname2, distance2>
# where identifier is a unique name used to define a runway usage configuration below
# name is one or two digits, optionally suffixed with an L, R or C character
# position is the location of the beginning of the runway (including displaced threshold)
# length is in feet
# displaced threshold length in feet (for landings), displaced2 is for the other end of the runway
# elevation is in feet, and must be within 1000 feet difference from the airspace ground elevation defined above
# glideslope is the angle in degrees; the default value is 3
# localizer is the true heading in degrees of the ILS until touchdown; by default it's the same as runway true heading, but a small offset is allowed
# beacon is a point on the localizer at a certain distance (NM) from the threshold
# second beacon is a point on the localizer when runway is used in opposite direction (rev)
climbaltitude = 5000 ; maximum initial climb altitude in feet for departures
sids =
north, 0, 25, northbound
south, 0, -25, southbound
bco
## name, position, <pronunciation>
# you may also give just the name of a beacon from the beacon list
entrypoints =
090
270, bco
## true_heading, <beacon>
# this is where new arrivals enter at the boundary (approximately), e.g. 090 means planes will enter from the east, heading 270 (westbound)
# inbound beacon is optional; choose a beacon name from the beacon list above; otherwise the first beacon from that list is chosen automatically
airlines =
air, 3, a333/e175, airliner, w
air, 2, dh8d, airliner, e
ph-abc, 1, c271, 0, nwe
n-123ab,1, f200
## name, amount, planetype, pronunciation, <direction>
# name is the 3 letter airline code, or a private regristration (with a land code, dash(-), and then the format)
# amount determines the relative likelihood of appearance (e.g. 0=never, 1=occasionally, 10=frequently, etc)
# planetype determines plane characteristics, put a dash (/) between multiple types for random type selection
# pronuniation is the callsign, used for airlines
# direction lets the plane arrive/depart in (more or less) the specified direction:
# give the direction as a string containing one or more of the letters nwse, for north west south east,
# but make sure there are actually entrypoints defined at those directions (approximately); w needs an entrypoint near 270
##############################################################
[airport2]
##############################################################
name = Secondary Airport ; name of secondairy airport
code = SC ; two letter code, will be added to the runways and plane tags
runways =
rwy2, 06, 6.7, -3.5, 60.0, 1.88, 0, 0, 100, 3,0,3,0, WL, 8.0
## identifier, name, position, true_heading, <length>, <displaced>, <displaced2>, <elevation>, <glideslope>, <localizer>, <glideslope2>, <localizer2>, <beaconname, distance>, <beaconname2, distance2>
# identifier must be unique to all other runways defined in this file
traffic = 5 ; average time between airplanes per active runway, in minutes (but this decreases at higher skill values)
inboundbeacon = bco ; beacon name, for arrivals (choose one from the beacon list above)
entrypoints =
300
330
# headings only
airlines =
jet, 2, b735, jetliner
n-12345, 1, c271
climbaltitude = 3000 ; maximum initial climb altitude in feet for departures
sids =
north
south
west, -25, 0, westbound
bco
## name, position, <pronunciation>
# you may also give just the name of a beacon from the beacon list, or the name of a sid from the airport1 sid list
# You can add more airports sections if needed ([airport3], etc).
##############################################################
[area1]
##############################################################
shape = circle ; circle or polygon
altitude = 3000 ; minimum allowed altitude in feet
name = SC ; <name, if omited then only planes inbound the main airport may enter this area>
radius = 6 ; radius of circle in NM
position = 7, -3.6 ; position of circle center
labelpos = 6, 0 ; <position of label>
draw = 0, 5.9 ; <start and end angle of visible arc, in radians, omit for a full circle>
##############################################################
[area2]
##############################################################
shape = polygon ; circle or polygon
altitude = 3500 ; minimum allowed altitude in feet
#name = X ; <name, if omited then planes inbound the main airport may enter this area>
draw = 1 ; <number of invisible lines at the end of the polygon, omit for a full polygon>
labelpos = -3.1, 10.9 ; <position of label>
points =
-8.1, 13.3
0, 13
-1, -4
-7.6, -4
-9.0, 10
## positions
# the last point will be automatically connected to the first point
# note: the polygon must be convex, for example a rectangle, for it to work correctly
# you may need to split up non-convex shapes into simpler convex polygons with some invisible lines
# each polygon must have its own [area] section
##############################################################
[configurations]
##############################################################
config1 =
0, rwy1, landstart
7, rwy1, startland, 020, nosid
8, rwy2, startlandrev
## score, identifier, use, <offsetheading>, <nosid>
# score is the score (skill) at which the runway will be activated
# identifier is a unique runway name specified earlier
# use is a string (without spaces) that may contain these words: start, land, rev, int, track
# where rev means reversed use (opposite direction), int means intersection departure (takeoffs begin 30% down the rwy), track means backtrack after landing
# offsetheading means planes will fly a specific heading just after takeoff (especially useful for allowing parallel takeoffs with divergent headings)
# nosid option means planes will depart on the given offsetheading, with SID mode disabled
# when rwy configurations are omited, two configs are automatically created, one for each rwy direction, with all runways active
config2 =
0, rwy1, landstartrev
7, rwy1, startlandrev, 200, nosid
8, rwy2, startland
##############################################################
[transition1]
##############################################################
runway = rwy1, rev ; runway identifier, <reversed use>
beacon = lima, 1, 18, 0, lima ; selectable beacon to enable NAV mode; define a beacon, or choose a name from beacon list above
route1 =
100
-3, 22, 5500, 210
1, 22
1, 18, 4000
-3, 18, 0, 180
10.5, 3000, 200
# first item of the route is the bearing from the plane towards the beacon; if there are multiple routes defined, the closest bearing defines which route is selected.
# next lines are optional waypoints: ## location, <maximum altitude>, <maximum speed>
# last line is the interception point on the ILS: ## distance (NM) from the threshold, <maximum altitude>, <maximum speed>
route2 =
240
1, 18, 4000
-3, 18, 0, 180
10.5, 3000, 200
route3 =
020
1, 10
1, 18, 4000
-3, 18, 0, 180
10.5, 3000, 200
# multiple [transition] sections can be used for the same runway
##############################################################
[planetypes]
##############################################################
types =
f200, 5, 140, 230, 2.9, 3.2, 1400, 1600, 115, 125, 1.1, 1.2, big jet
c271, 6, 90, 120, 2.9, 3.2, 1400, 1600, 90, 105, 1.1, 1.2, singleprop
## type, category, minspeed, maxspeed, minturnrate, maxturnrate, mindescendrate, maxdescendrate, minaccelrate, maxaccelrate, <manufacturer>
# custom plane types, useful when specified custom types in the airline lists above, or to override default type properties
# category is the weight category: 1 to 6, meaning superheavy=1, upperheavy, lowerheavy, uppermedium, lowermedium, light=6
# turnrate is in degrees per second
# descendrate is in feet per minute
# accelrate is in knots per second
# manufacturer name is optional, only used for private callsign pronunciation in usa mode
##############################################################
[scenario]
##############################################################
finish = 2 ; amount of planes to land to finish the scenario
events =
0, config, 1
0, score, 6
0, wind, 180, 10
0, cloud, -1, 25
0, cloud, -2, 24
0, cloud, -4, 24
0, dep, rwy1, north, f200
0, elapse, 20
0, arr, 230, vor, f200
0, elapse, 100
5, arr, 90, bco, f200
40, dep, rwy1, north, f200
70, dep, rwy1, south, a333
20, score, 8
90, dep, rwy1, north
0, wind, 200, 8
0, cloud, 19, -26.5
50, dep, rwy1, west, f200
1, text, Hello!
5, arr, 210, vor, a333, 15000, 6000, 300, 0, 0, 1, air
10, arr, 090, 0, 0, 0, 0, 0, 0, 0, 0, 0, sc
10, dep, rwy2, north
## elapsed time after previous event in seconds, eventtype, properties
# available eventtypes: arr, dep, score, elapse, wind, cloud, config, text
## arr: entrypoint, <beacon>, <planetype>, <altitude>, <targetaltitude>, <speed>, <delaytimer>, <fuel>, <emergency>, <callsign>, <destination> ; arrival (fuel counts up; lowfuel from 5000+, emergency=1 for medical, 2 for engine, destination is the two letter code of a secondary airport)
## dep: runwayidentifier, sid, <planetype>, <emergency>, <callsign> ; departure
## score: score ; set higher score/skill to open more runways, or lower to close runways
## elapse: seconds ; elapse simulation time between events (only use this to build traffic before the start, so at time 0)
## wind: heading, speed ; set wind (preferably in small steps when changing the wind)
## cloud: position ; add cloud with radius of 1 NM (preferably just outside the airspace boundary, to avoid incidents, unless time is 0)
## config: entry ; change to different runway config, as specified in the rwy configurations section
## text: message ; display yellow text at the top of screen
# Custom airport file
# Save a copy of example.txt before editing it, to keep this file as a guide.
# On Windows, place the txt file in the /locations/ folder of the game.
# On android, place the txt file in /Android/data/com.dirgtrats.endlessatc/files/.
# Copy, edit and use and share airport files at your own risk!
# This example file has lots of comments (#), to use it as a guide. Uncomment the 'code = ' item in the [airport1] section below to make the airport appear in-game.
# This file has several [sections] (but most are optional), namely:
# [airspace]: various general properties
# [airport1]: main airport
# [airport2]: optional secondary airports
# [area1]: optional restricted areas
# [configurations]: optional runway usage configurations
# [departure1]: optional runway departure routes
# [approach1]: optional runway approach routes
# [planetypes]: optional custom plane types
# [scenario]: optional nonrandom traffic
# Each section can have multiple items, each item with one or more properties. The format/order of properties are explained after a double hashtag (##) in this file.
# Properties are comma separated. Multi-line properties (lists) MUST start with a tab or space at the beginning of each line.
# Properties in this file that are explained between <brackets> are optional properties (do not include the brackets themselves).
# If the game fails to load a property, or you omit, #comment or zero an (optional) property, a default value may be automatically used instead.
# Positions must be given either in x, y coordinates (in nautical miles, NM), with 0, 0 being the center of the screen, and 20.1, 12.82 being somewhere at the top left,
# or, in latitude, longitude coordinates, which must always start with a N/W/S/E prefix, for example N40.7128, W74.0060 or S049.43.45.000, E002.09.51.000 (DMS notation).
# Lat/long coordinates (and true headings) are rotated automatically when a magnetic variance is defined; this is to align the radar display with the magnetic north,
# to make a heading of 360 degreees a vertical line on the radar screen.
# X, y coordinates are simple screen coordinates; they are not rotated.
# Either way, all positions consist of two values, seperated by a comma. Whether you want to use x,y or latlong coordinates is up to you.
# For real world data it is probably easier to search the internet for the actual latlong coordinates.
# Press the left Ctrl key in the sim to display the coordinates of the mouse position. These values are also copied into the Windows clipboard, to be easily pasted into a file.
##############################################################
[airspace]
##############################################################
radius = 30 ; airspace radius in NM
zoom = 7.0 ; default zoom level, increase to zoom in
elevation = 13 ; ground altitude in feet
floor = 1500 ; minimum selectable altitude
descendaltitude = 7000 ; minimum initial altitude for arrivals
ceiling = 9000 ; maximum selectable altitude
above = 12000 ; maximum departure altitude when SID is enabled (must be above ceiling)
transitionaltitude = 18000 ; highest altitude displayed in feet instead of flight level
speedrestriction = 15, 220 ; radius in NM, and speed in knots
localizerspeed = 30, 200 ; distance to touchdown in NM, speed restriction in knots on localizers
usa = true ; American-style callsign pronunciation and runway names
metric = false ; display altitudes in metres instead of feet
separation = 3 ; minimum allowed distance between aircraft in NM
center = N50.1234, E2.0060 ; lat/long location of center of radar display (required when using lat/long coordinates elsewhere in this file)
magneticvar = 2.0 ; magnetic variance; east = positive (used to rotate lat/long coordinates if used elsewhere in this file)
beacons =
vor, 0, -3, 0, main v-o-r
bco, 18.6, 6.8, 090, beacon two
trd, N50.0, E2.1, -090, the third one
## name, position, <holdingheading>, <pronunciation>
# the first given beacon will be the default beacon for arrivals inbound the main airport
# when holdingheading is 0 or omitted, planes will hold there using the plane's current heading
# when a holdingheading is given, planes will fly that heading (or magnetic course) on the inbound leg when flying the holding
# when holdingheading is negative, planes will make left-hand turns instead of right-hand
boundary =
-25, -22
25, -22
25, 22
-25, 22
## positions
# pointlist of optional airspace boundary polygon; this will override the default (circular) airspace radius.
# last point is automatically connected to first point
line1 =
10, 10
10, 40
40, 40
40, 10
10, 10
## positions
# pointlist of optional green (coast)line.
line2 =
-15, 0
-22, 0
-22, -12.23
-15, -14
-15, 0
##############################################################
[airport1]
##############################################################
name = Example Airport ; name of the main airport, <pronunciation>
#code = EXAM ; four letter code, displayed in airport menu (required; remove the #)
runways =
rwy1, 36, -4.3, 3.23, 360.0, 11400, 0, 0, 100, 3, 360.0, 3, 180.0, YY, 8.0, ZZ, 8.5
## identifier, name, position, true_heading, <length>, <displaced>, <displaced2>, <elevation>, <glideslope>, <localizer>, <glideslope2>, <localizer2>, <beaconname, distance>, <beaconname2, distance2>
# where identifier is a unique name used to define a runway usage configuration later in this file
# name is one or two digits, optionally suffixed with an L, R or C character
# position is the location of the beginning of the runway (including displaced threshold)
# length is in feet
# displaced threshold length in feet, displaced2 is for the other end of the runway
# elevation is in feet, and must be within 1000 feet difference from the airspace ground elevation defined above
# glideslope is the angle in degrees; the default value is 3.0
# localizer is the true heading in degrees of the ILS until touchdown; by default it's the same as runway true heading, but a small offset is allowed
# beacon is a point on the localizer at a certain distance (NM) from the (displaced) threshold
# second beacon is a point on the localizer when runway is used in opposite direction (rev)
climbaltitude = 5000 ; maximum initial climb altitude in feet for departures
sids =
north, 0, 25, northbound
south, 0, -25, southbound
bco
## name, position, <pronunciation>
# you may also give just the name of a beacon from the beacon list
entrypoints =
090
270, bco
## true_heading, <beaconname>
# this is where new arrivals enter at the boundary (approximately), e.g. 090 means planes will enter from the east, heading 270 (westbound)
# inbound beacon is optional; choose a beacon name from the beacon list above; otherwise the first beacon from that list is chosen automatically
airlines =
air, 3, e175, airliner, w
air, 2, a333, airliner
air, 1, dh8d/f200, airliner, e
ph-abc, 1, c271, 0, nwe
n-123ab,1, f200
## name, amount, planetype, pronunciation, <direction>
# name is the 3 letter airline code, or a private regristration (with a land code, dash(-), and then the format)
# amount determines the relative likelihood of appearance (e.g. 0=never, 1=occasionally, 10=frequently, etc)
# planetype determines the plane characteristics (optionally put a dash (/) between multiple types)
# pronuniation is the callsign, used for airlines
# direction lets the plane arrive/depart in (roughly) a preferred direction:
# give the direction as a string containing one or more of the letters nwse, for north west south east,
# but make sure there are actually entrypoints defined at those directions (approximately); w needs an entrypoint near 270
# note that you can add the same airline multiple times, for example with different planetypes, in order to get different likelihoods per planetype
##############################################################
[airport2]
##############################################################
name = Secondary Airport, secondary airport ; name of secondary airport, <pronunciation>
code = SC ; two letter code, which will be added to the runways and plane tags
runways =
rwy2, 06, 6.7, -3.5, 60.0, 1.88, 0, 0, 100, 3,0,3,0, WL, 8.0
## identifier, name, position, true_heading, <length>, <displaced>, <displaced2>, <elevation>, <glideslope>, <localizer>, <glideslope2>, <localizer2>, <beaconname, distance>, <beaconname2, distance2>
# identifier must be unique to all other runways defined in this file
traffic = 5 ; average time between airplanes per active runway, in minutes (but this decreases at higher skill values)
inboundbeacon = bco ; beacon name; the default initial beacon for arrivals (choose one from the beacon list above)
entrypoints =
300
330, trd
## true_heading, <beaconname>
airlines =
jet, 2, b735, jetliner
n-12345, 1, c271
## name, amount, planetype, pronunciation, <direction>
climbaltitude = 3000 ; maximum initial climb altitude in feet for departures
sids =
north
south
west, -25, 0, westbound
bco
## name, position, <pronunciation>
# you may also give just the name of a beacon from the beacon list, or the name of a sid from the airport1 sid list
# You can add more airports sections if needed ([airport3], etc).
##############################################################
[area1]
##############################################################
shape = circle ; circle or polygon
altitude = 3000 ; minimum allowed altitude in feet
name = SC ; <name, if omited then only planes inbound the main airport may enter this area>
radius = 6 ; radius of circle in NM
position = 7, -3.6 ; position of circle center
labelpos = 6, 0 ; <position of label>
draw = 0, 5.9 ; <start and end angle of visible arc, in radians (orientated to the left), omit for a full circle>
##############################################################
[area2]
##############################################################
shape = polygon ; circle or polygon
altitude = 3500 ; minimum allowed altitude in feet
#name = X ; <name, if omited then planes inbound the main airport may enter this area>
draw = 1 ; <number of invisible lines at the end of the polygon, omit for a full polygon>
labelpos = -3.1, 10.9 ; <position of label>
points =
-8.1, 13.3
0, 13
-1, -4
-7.6, -4
-9.0, 10
## positions
# the last point will be automatically connected to the first point
##############################################################
[configurations]
##############################################################
config1 =
0, rwy1, landstart
7, rwy1, startland, 020, nosid
8, rwy2, startlandrev
## score, identifier, usage, <offsetheading>, <nosid>
# score is the score (skill) at which the runway will be activated
# identifier is a unique runway name specified earlier
# usage is a string (without spaces) that may contain these words: start, land, rev, int, track
# where rev means reversed use (opposite direction), int means intersection departure (takeoffs begin 30% down the rwy), track means backtrack after landing
# offsetheading means planes will fly a specific heading just after takeoff (especially useful for allowing parallel takeoffs with divergent climbout headings)
# nosid option means planes will depart on the given offsetheading, with SID mode disabled
# when rwy configurations are omited, two configs are automatically created, one for each rwy direction, with all runways active
config2 =
0, rwy1, landstartrev
7, rwy1, startlandrev, 200, nosid
8, rwy2, startland
##############################################################
[departure1]
##############################################################
runway = rwy2 ; runway identifier, <reversed use>
route1 =
bco2, beacon two
12, 0
18.6, 0
18.6, 6.8
25, 16.5
# first line of the route is the sid name (up to 5 characters will be displayed), and optional <pronunciation> of the sid name
# next lines are one or more waypoint positions
route2 =
south
12, 0
15.3, -4.7
0, -16.6
0, -25
# the optional [departure] section adds routes to a specific runway direction
# this overrides the default (single waypoint) SIDs with more detailed routes, and applies the routes to the specified runway only
# departing planes from that runway will then follow the one of the routes, unless the user deactivates SID mode
# re-enabling SID mode (or longpressing SID) will select just the last point of the route
# defining one or more departure routes disables all the default SID points for that runway; planes will use the given routes only
# use one [departure] section per runway direction, each with one or more routes
# [departure] routes are not used in the built-in airports, for simplicity
##############################################################
[approach1]
##############################################################
runway = rwy1, rev ; runway identifier, <reversed use>
beacon = lima, 1, 18, 0, lima ; selectable beacon to enable APP mode; define a beacon, or choose a name from beacon list above
route1 =
060
-3, 22, 5500, 210
1, 22
1, 18, 4000
-3, 18, 0, 180
10.5, 3000, 200
# first item of the route is the bearing from the plane towards the beacon; if there are multiple routes defined for this beacon, the closest bearing defines which route is selected; but if only one route is given then the bearing can just be a random number
# next lines are optional waypoints: ## position, <maximum altitude>, <maximum speed>
# last line is the interception point on the ILS: ## distance (NM) from the (displaced) threshold, <maximum altitude>, <maximum speed>
# alternatively the last time can be used to end the route before it reaches the ILS (and requiring vectors), using the word end: ## end, <heading>
route2 =
310
1, 18, 4000
-3, 18, 0, 180
10.5, 3000, 200
route3 =
010
1, 10
1, 18, 4000
-3, 18, 0, 180
10.5, 3000, 200
# the optional [approach] section adds route(s) to a specific runway
# multiple [approach] sections can be used for the same runway, to allow for multiple beacons
# for easier creation of routes, use left Ctrl key to display current mouse coordinates, and left click while holding down Ctrl places temporary visual markers
# Longpress the airport name button in the menu to display all routes at once
# [approach] routes are not used in the built-in airports as the game is focussed on vectors for simplicity
##############################################################
[planetypes]
##############################################################
types =
f200, 5, 140, 230, 2.9, 3.2, 1400, 1600, 115, 125, 1.1, 1.2, big jet
c271, 6, 90, 120, 2.9, 3.2, 1400, 1600, 90, 105, 1.1, 1.2, singleprop
## type, category, minspeed, maxspeed, minturnrate, maxturnrate, mindescendrate, maxdescendrate, minfinalapproachspeed, maxfinalapproachspeed, minaccelrate, maxaccelrate, <manufacturer>
# custom [planetypes] are only needed when using unknown custom types in the airlinelists above (game will show warnings on startup for missing types), or to override default type properties
# category is the weight category: 1 to 6, meaning superheavy=1, upperheavy, lowerheavy, uppermedium, lowermedium, light=6
# turnrate is in degrees per second
# descendrate is in feet per minute
# approachspeeds in knots
# accelrate is in knots per second
# manufacturer name is optional, and only used for private callsign pronunciation in usa mode
# example of default values for b737, 4, 160, 250, 2.6, 3.0, 1440, 1560, 131, 144, 1.2, 1.3
##############################################################
[scenario]
##############################################################
finish = 2 ; amount of planes to land to finish the scenario
events =
0, config, 1
0, score, 6
0, wind, 180, 10
0, cloud, -1, 25
0, cloud, -2, 24
0, cloud, -4, 24
0, dep, rwy1, north, f200
0, elapse, 20
0, arr, 230, vor, f200
0, elapse, 100
5, arr, 90, bco, f200
40, dep, rwy1, north, f200
70, dep, rwy1, south, a333
20, score, 8
90, dep, rwy1, north
0, wind, 200, 8
0, cloud, 19, -26.5
50, dep, rwy1, west, f200
1, text, Hello!
5, arr, 210, vor, a333, 15000, 6000, 300, 0, 0, 1, air
10, arr, 090, 0, 0, 0, 0, 0, 0, 0, 0, 0, sc
10, dep, rwy2, north
## elapsed time after previous event in seconds, eventtype, properties
# available eventtypes: arr, dep, score, elapse, wind, cloud, config, text
## arr: entrypoint, <beacon>, <planetype>, <altitude>, <targetaltitude>, <speed>, <delaytimer>, <fuel>, <emergency>, <callsign>, <destination> ; arrival (fuel counts up; lowfuel from 5000+, emergency=1 for medical, 2 for engine, destination is the two letter code of a secondary airport)
## dep: runwayidentifier, sid, <planetype>, <emergency>, <callsign> ; departure
## score: score ; set higher score/skill to open more runways, or lower to close runways
## elapse: seconds ; elapse simulation time between events (only use this to build traffic before the start, so at time 0)
## wind: heading, speed ; set wind (preferably in small steps when changing the wind)
## cloud: position ; add cloud with radius of 1 NM (preferably just outside the airspace boundary, to avoid incidents, unless time is 0)
## config: entry ; change to different runway config, as specified in the rwy configurations section
## text: message ; display yellow text at the top of screen
# the [scenario] can be enabled in the traffic menu
+32
View File
@@ -0,0 +1,32 @@
Endless ATC Casablanca TMA v1.0 by Omar Benchbana
AIRAC 2102
v1.0 covers the Casablanca TMA (GMMN,GMME)
At GMMN either 35R or 35L for landings and either 35R or 35L for departures
ils platform altitude is 3600-4000ft at GMMN
AT GMME runway 21 for both arrivals and departures
The initial climb at GMMN is FL50 or 5000ft depending on qnh
Airspace from 2000-FL195
On initial contact, arriving aircraft should be cleared for the arrival.
---------------------------------------------------------
---------------------------------------------------------
---------------------------------------------------------
GMMN All Arrival Procedures
Direct DEVNO/SLK or KOTAG maybe given if traffic permits
if you have two aircraft on the same star too close to eachother you can use vectors to seperate them for example
![Example vectors](https://i.imgur.com/mzPgecb.png)
leave bismi heading 255 for 26 miles then a downwind for runway 35l/35r
---------------------------------------------------------
---------------------------------------------------------
---------------------------------------------------------
GMME All Arrival Procedures
clear for approach or vector them to runway 21
+728
View File
@@ -0,0 +1,728 @@
[airspace]
radius = 80
elevation = 656
center = N33.64180, W7.20800
magneticvar = -2.588
floor = 3600
descendaltitude = 13000
above = 19000
transition = 6000
usa = false
metric = false
separation = 3
boundary =
N33.70602229035439,W9.024132861747828
N33.95954790347339,W8.743335464243048
N34.36023567468429,W8.379163298741535
N34.53419618817183,W7.847137667831683
N34.5584101817533,W7.199508230327053
N35.00912880921199,W6.976074378357011
N34.98750921445647,W6.462360520441588
N34.89369856656789,W5.953457539019752
N34.1320642241474,W5.763885287131018
N32.35104688408396,W7.113662141608269
N32.43946236808502,W8.369889884306595
N33.70602229035439,W9.024132861747828
beacons =
LAKAM,N34.1872222, W007.7383333,0, LAKAM
TUSOR,N34.4972222, W006.3316667,0, Tow-sur
FOBAC,N32.7192667, W008.1002222,0,FOBAC
NIKZO,N32.7273750, W008.1614444,0,NIKZO
BISMI,N33.6472222, W06.8936111,0,BISMI
SADIC,N33.7339306, W06.3332194,0,SADIC
ODAXA,N33.9938889, W008.2422222,0,ODAXA
RAVOL,N33.5188889, W008.4747222,0,RAVOL
LACAJ,N033.08.09.059,W006.50.59.179,0,LACAJ
ESALA,N034.02.23.999,W007.10.23.001,0,ESALA
VARAS,N34.0255556, W006.3483333,0,VARAS
KOTAG,N033.09.09.010, W007.16.19.138,0,KOTAG
DEVNO,N033.02.37.359,W007.43.41.649,0,DEVNO
MABOG,N032.38.18.700,W007.30.11.091,0,MABOG
MOGBI,N032.37.10.628,W007.21.58.780,0,MOGBI
SLK,N033.06.56.469,W007.30.21.959,0,SLK
BNS,N033.38.30.480,W007.12.28.789,0,Benslimane
CSD,N32.93360, W8.06500,0,CSD
NASRO,N033.58.14.998,W007.43.05.998, 0 , NASRO
[airport1]
name = Mohammed V International Airport
code = GMMN
entrypoints =
330,LAKAM
020,BNS
040,TUSOR
070,SADIC
200,NIKZO
190,FOBAC
270,RAVOL
180,MABOG
180,MOGBI
090,LACAJ
runways =
GMMNN, 17L, N33.384, W7.59352, 164.0, 12205, 0, 0, 633
GMMNS, 17R, N33.3831, W7.59743, 164.0, 12205, 0, 0, 636
climbaltitude = 5000
sids =
LAKAM,N34.1872222, W007.7383333,LAKAM
SADIC,N33.7339306, W06.3332194,SADIC
TOLSI,N34.6005556, W007.0150000,TOLSI
ODAXA
NIKZO
FOBAC
RAVOL
airlines =
TRA, 2, B737/B738, Transavia, n
KLM, 2, B737/B738/B744/B789/B788/A333/B77L/B77W/E190/E170, KLM, n
AFR, 2, A319/A320, Air France, n
RAM, 10, B737/B738/B789/B788, Royal air maroc, nswe
THY, 2, B77L/B77W, Turkish, e
UAE, 2, B77L/B77W/A388, Emirates, e
MAC, 6, A320, Arabia Maroc, nswe
ACA, 1, B788, Air Canada,w
RXP, 6, AT72, Express Maroc, nswe
TAP, 2,E190/A319/A320, Air portugal, w
TVF, 2, B737/B738, Transavia, n
DLH, 2, A320, Lufthansa, n
PGT, 1, A320/A321 , Sunturk, e
MSR , 1, B738, EGYPTAIR, e
AEA, 1, B738, Europa, n
[airport2]
name = Rabat-Sale Airport
code = GMME
sids =
TOLSI,N34.6005556, W007.0150000,TOLSI
VARAS
BISMI
entrypoints =
070,VARAS
210,VARAS
040,TUSOR
runways =
GMME1, 03, N34.038, W6.76139, 31.0, 11483, 0, 0, 273
airlines =
TRA, 2, B737/B738, Transavia, ne
KLM, 2, B737/B738/B744/B789/B788/A333/B77L/B77W/E190/E170, KLM, ne
AFR, 2, A319/A320, Air France, ne
RAM, 1, B737/B738/B789/B788/E190, Royal air maroc, nswe
[area1]
shape = polygon
altitude = 2000
points =
N033.29.39.101,W007.51.39.873
N033.31.23.527,W007.50.23.326
N033.32.56.684,W007.48.48.179
N033.34.16.271,W007.46.56.777
N033.35.20.316,W007.44.51.862
N033.36.07.231,W007.42.36.510
N033.36.35.854,W007.40.14.053
N033.36.45.475,W007.37.48.000
N033.36.35.854,W007.35.21.947
N033.29.39.101,W007.51.39.873
N033.27.45.991,W007.52.35.937
N033.25.46.989,W007.53.10.137
N033.23.45.029,W007.53.21.632
N033.21.43.117,W007.53.10.137
N033.20.09.000,W007.52.43.000
N033.11.50.000,W007.49.50.000
N033.11.25.256,W007.49.43.526
N033.09.32.361,W007.48.47.551
N033.07.48.206,W007.47.31.125
N033.06.15.347,W007.45.56.130
N033.04.56.059,W007.44.04.905
N033.03.52.285,W007.42.00.188
N033.03.05.584,W007.39.45.051
N033.02.37.099,W007.37.22.821
N033.02.27.526,W007.34.57.000
N033.02.37.099,W007.32.31.179
N033.03.05.584,W007.30.08.949
N033.03.52.285,W007.27.53.812
N033.04.56.059,W007.25.49.095
N033.06.15.347,W007.23.57.870
N033.07.48.206,W007.22.22.875
N033.09.32.361,W007.21.06.449
N033.11.25.256,W007.20.10.474
N033.13.24.122,W007.19.36.329
N033.15.26.034,W007.19.24.853
N033.17.27.994,W007.19.36.329
N033.19.02.000,W007.20.02.000
N033.27.22.000,W007.22.52.000
N033.30.41.975,W007.31.14.675
N033.36.35.854,W007.35.21.947
[area2]
shape = polygon
altitude = 2000
points =
N034.06.01.000,W006.33.01.000
N033.58.32.000,W006.38.30.000
N033.57.53.841,W006.38.58.759
N033.56.45.955,W006.40.08.827
N033.55.47.988,W006.41.30.866
N033.55.01.359,W006.43.02.857
N033.54.27.212,W006.44.42.534
N033.54.06.384,W006.46.27.443
N033.53.59.384,W006.48.15.000
N033.54.06.384,W006.50.02.557
N033.54.27.212,W006.51.47.466
N033.55.01.359,W006.53.27.143
N033.55.47.988,W006.54.59.134
N033.56.45.955,W006.56.21.173
N033.57.53.841,W006.57.31.241
N033.59.09.979,W006.58.27.613
N034.00.32.498,W006.59.08.900
N034.01.59.374,W006.59.34.087
N034.06.01.000,W006.33.01.000
N034.15.54.000,W006.52.33.000
N034.08.25.000,W006.58.02.000
N034.07.47.177,W006.58.27.613
N034.06.24.539,W006.59.08.900
N034.04.57.589,W006.59.34.087
N034.03.28.468,W006.59.42.551
N034.01.59.374,W006.59.34.087
[area3]
shape = polygon
altitude = 2000
points =
N033.26.47.104,W007.35.50.153
N033.26.50.798,W007.34.54.000
N033.26.47.104,W007.33.57.847
N033.26.36.111,W007.33.03.076
N033.26.18.092,W007.32.11.037
N033.25.53.492,W007.31.23.011
N033.25.22.917,W007.30.40.179
N033.24.47.123,W007.30.03.598
N033.24.06.991,W007.29.34.167
N033.23.23.513,W007.29.12.611
N033.22.37.759,W007.28.59.462
N033.21.50.857,W007.28.55.043
N033.21.03.961,W007.28.59.462
N033.20.18.227,W007.29.12.611
N033.19.34.781,W007.29.34.167
N033.18.54.689,W007.30.03.598
N033.18.18.939,W007.30.40.179
N033.17.48.409,W007.31.23.011
N033.17.23.849,W007.32.11.037
N033.17.05.861,W007.33.03.076
N033.16.54.890,W007.33.57.847
N033.16.51.202,W007.34.54.000
N033.16.54.890,W007.35.50.153
N033.17.05.861,W007.36.44.924
N033.17.23.849,W007.37.36.963
N033.17.48.409,W007.38.24.989
N033.18.18.939,W007.39.07.821
N033.18.54.689,W007.39.44.402
N033.19.34.781,W007.40.13.833
N033.20.18.227,W007.40.35.389
N033.21.03.961,W007.40.48.538
N033.21.50.857,W007.40.52.957
N033.22.37.759,W007.40.48.538
N033.23.23.513,W007.40.35.389
N033.24.06.991,W007.40.13.833
N033.24.47.123,W007.39.44.402
N033.25.22.917,W007.39.07.821
N033.25.53.492,W007.38.24.989
N033.26.18.092,W007.37.36.963
N033.26.36.111,W007.36.44.924
[area4]
shape = polygon
altitude = 2000
points =
N034.07.04.838,W006.45.06.000
N034.07.01.883,W006.44.20.716
N034.06.53.091,W006.43.36.548
N034.06.38.678,W006.42.54.582
N034.06.19.001,W006.42.15.852
N034.05.54.544,W006.41.41.312
N034.05.25.912,W006.41.11.812
N034.04.53.809,W006.40.48.078
N034.04.19.029,W006.40.30.695
N034.03.42.427,W006.40.20.092
N034.03.04.906,W006.40.16.528
N034.02.27.389,W006.40.20.092
N034.01.50.801,W006.40.30.695
N034.01.16.041,W006.40.48.078
N034.00.43.965,W006.41.11.812
N034.00.15.362,W006.41.41.312
N033.59.50.934,W006.42.15.852
N033.59.31.283,W006.42.54.582
N033.59.16.891,W006.43.36.548
N033.59.08.112,W006.44.20.716
N033.59.05.162,W006.45.06.000
N033.59.08.112,W006.45.51.284
N033.59.16.891,W006.46.35.452
N033.59.31.283,W006.47.17.418
N033.59.50.934,W006.47.56.148
N034.00.15.362,W006.48.30.688
N034.00.43.965,W006.49.00.188
N034.01.16.041,W006.49.23.922
N034.01.50.801,W006.49.41.305
N034.02.27.389,W006.49.51.908
N034.03.04.906,W006.49.55.472
N034.03.42.427,W006.49.51.908
N034.04.19.029,W006.49.41.305
N034.04.53.809,W006.49.23.922
N034.05.25.912,W006.49.00.188
N034.05.54.544,W006.48.30.688
N034.06.19.001,W006.47.56.148
N034.06.38.678,W006.47.17.418
N034.06.53.091,W006.46.35.452
N034.07.01.883,W006.45.51.284
N034.07.04.838,W006.45.06.000
[area5]
shape = polygon
altitude = 2000
points =
N034.11.47.000,W006.12.45.000
N034.07.17.122,W006.11.24.668
N034.02.54.383,W006.10.59.722
N033.58.31.870,W006.11.24.668
N033.54.16.037,W006.12.38.890
N033.50.13.160,W006.14.40.561
N033.46.29.181,W006.17.26.689
N033.43.09.568,W006.20.53.182
N033.42.38.000,W006.21.38.000
N033.31.21.000,W006.35.54.000
N033.03.51.000,W007.03.54.000
N032.39.16.000,W007.09.32.000
N032.37.10.000,W007.21.58.000
N032.45.37.000,W008.24.46.000
N033.31.08.000,W008.28.29.000
N033.37.23.160,W008.27.58.477
N033.43.29.752,W008.26.13.104
N033.49.18.465,W008.23.20.364
N033.54.40.640,W008.19.24.506
N033.59.28.250,W008.14.31.336
N034.03.34.106,W008.08.48.067
N034.06.52.048,W008.02.23.149
N034.09.17.104,W007.55.26.060
N034.10.45.626,W007.48.07.073
N034.11.14.000,W007.44.18.000
N034.19.50.000,W007.22.54.000
N034.36.02.000,W007.00.54.000
[departure1]
runway = GMMNN,rev
route1 = LAKAM1D, LAKAM one delta
N33.5845944, W007.8968194
N34.1872222, W007.7383333
[departure2]
runway = GMMNS,rev
route1 = LAKAM3D, LAKAM three delta
N33.5845944, W007.8968194
N34.1872222, W007.7383333
[departure3]
runway = GMMNS,rev
route = TOLSI3D, TOLSI three delta
N33.5646722, W07.4206278
N33.8407222, W07.3676278
N34.1166667, W07.3144444
N34.6005556, W007.0150000
[departure4]
runway = GMMNN,rev
route = TOLSI1D, TOLSI one delta
N33.5646722, W07.4206278
N33.8407222, W07.3676278
N34.1166667, W07.3144444
N34.6005556, W007.0150000
[departure5]
runway = GMMNS,rev
route = SADIC3D, SADIC three delta
N33.5646722, W07.4206278
N33.6472222, W06.8936111
N33.7339306, W06.3332194
[departure6]
runway = GMMNN,rev
route = SADIC1D, SADIC one delta
N33.5646722, W07.4206278
N33.6472222, W06.8936111
N33.7339306, W06.3332194
[departure7]
runway = GMMNN,rev
route = NIKZO1D, NIKZO one delta
N33.3483333, W007.8375000
N32.93360, W8.06500
N32.7273750, W008.1614444
[departure8]
runway = GMMNS,rev
route = NIKZO3D, NIKZO three delta
N33.3483333, W007.8375000
N32.93360, W8.06500
N32.7273750, W008.1614444
[departure9]
runway = GMMNS,rev
route1 = ODAXA3D, ODAXA three delta
N33.5845944, W007.8968194
N33.9938889, W008.2422222
[departure10]
runway = GMMNS,rev
route1 = ODAXA1D, ODAXA one delta
N33.5845944, W007.8968194
N33.9938889, W008.2422222
[departure11]
runway = GMMNN,rev
route = RAVOL1D, RAVOL one delta
N33.5188889, W008.4747222
[departure12]
runway = GMMNS,rev
route = RAVOL3D, RAVOL three delta
N33.5188889, W008.4747222
[transition1]
runway = GMMNN, rev
beacon = LAKAM
route 1 = 090
N33.9708333, W007.7183333
N33.52150, W7.67719
N033.31.17.389,W007.40.37.869
N033.13.19.491,W007.42.29.721
N33.0437111,W007.7282361
N33.1156861,W007.5061000,3600
8.2, 3000, 180
[transition2]
runway = GMMNN, rev
beacon = BISMI
route 1 = 090
N33.1828444, W007.0767389
N33.1525028, W007.2719833
N33.1156861,W007.5061000,3600
8.2, 3000, 180
[transition3]
runway = GMMNN, rev
beacon = SADIC
route 1 = 090
N33.7339306, W06.3332194
N33.6472222, W06.8936111
N33.1828444, W007.0767389
N33.1525028, W007.2719833
N33.1156861,W007.5061000,3600
8.2, 3000, 180
[transition4]
runway = GMMNN, rev
beacon = FOBAC
route 1 = 090
N32.7192667, W008.1002222
N32.93360, W8.06500
N33.0437111,W007.7282361
N33.1156861,W007.5061000,3600
8.2, 3000, 180
[transition5]
runway = GMMNN, rev
beacon = NIKZO
route 1 = 090
N32.7273750, W008.1614444
N32.93360, W8.06500
N33.0437111,W007.7282361
N33.1156861,W007.5061000,3600
8.2, 3000, 180
[transition6]
runway = GMMNS, rev
beacon = LAKAM
route 1 = 090
N33.9708333, W007.7183333
N33.52150, W7.67719
N033.31.17.389,W007.40.37.869
N033.13.19.491,W007.42.29.721
N33.0437111,W007.7282361
N33.1156861,W007.5061000,3600
8.2, 3000, 180
[transition7]
runway = GMMNS, rev
beacon = BISMI
route 1 = 090
N33.1828444, W007.0767389
N33.1525028, W007.2719833
N33.1156861,W007.5061000,3600
8.2, 3000, 180
[transition8]
runway = GMMNS, rev
beacon = SADIC
route 1 = 090
N33.7339306, W06.3332194
N33.6472222, W06.8936111
N33.1828444, W007.0767389
N33.1525028, W007.2719833
N33.1156861,W007.5061000,3600
8.2, 3000, 180
[transition9]
runway = GMMNS, rev
beacon = FOBAC
route 1 = 090
N32.7192667, W008.1002222
N32.93360, W8.06500
N33.0437111,W007.7282361
N33.1156861,W007.5061000,3600
8.2, 3000, 180
[transition10]
runway = GMMNS, rev
beacon = NIKZO
route 1 = 090
N32.7273750, W008.1614444
N32.93360, W8.06500
N33.0437111,W007.7282361
N33.1156861,W007.5061000,3600
8.2, 3000, 180
[transition11]
runway = GMMNS, rev
beacon = TUSOR
route 1 = 090
N34.4972222, W006.3316667,0
N33.9699778,W006.5162444
N33.6472222, W06.8936111
N33.1828444, W007.0767389
N33.1525028, W007.2719833
N33.1156861,W007.5061000,3600
8.2, 3000, 180
[transition12]
runway = GMMNN, rev
beacon = TUSOR
route 1 = 090
N34.4972222, W006.3316667,0
N33.9699778,W006.5162444
N33.6472222, W06.8936111
N33.1828444, W007.0767389
N33.1525028, W007.2719833
N33.1156861,W007.5061000,3600
8.2, 3000, 180
[transition13]
runway = GMMNN, rev
beacon = RAVOL
route 1 = 090
N33.5188889, W008.4747222
N33.0437111,W007.7282361
N33.1156861,W007.5061000,3600
8.2, 3000, 180
[transition14]
runway = GMMNS, rev
beacon = RAVOL
route 1 = 090
N33.5188889, W008.4747222
N33.0437111,W007.7282361
N33.1156861,W007.5061000,3600
8.2, 3000, 180
[transition15]
runway = GMME1, rev
beacon = TUSOR
route 1 = 090
N34.4972222, W006.3316667,0
N034.22.05.318, W006.27.11.829
N034.11.55.140,W006.17.56.338
N034.07.49.339,W006.30.14.659
8.2, 2000, 180
[transition16]
runway = GMMNN, rev
beacon = SLK
route 1 = 090
N33.1156861,W007.5061000,3600
8.2, 3000, 180
[transition17]
runway = GMMNS, rev
beacon = SLK
route 1 = 090
N33.1156861,W007.5061000,3600
8.2, 3000, 180
[transition18]
runway = GMMNS, rev
beacon = KOTAG
route 1 = 090
N033.09.09.010, W007.16.19.138
N33.1156861,W007.5061000,3600
8.2, 3000, 180
[transition19]
runway = GMMNN, rev
beacon = KOTAG
route 1 = 090
N033.09.09.010, W007.16.19.138
N33.1156861,W007.5061000,3600
8.2, 3000, 180
[transition20]
runway = GMMNN, rev
beacon = DEVNO
route 1 = 090
N033.02.37.359,W007.43.41.649
N33.1156861,W007.5061000,3600
8.2, 3000, 180
[transition21]
runway = GMMNS, rev
beacon = DEVNO
route 1 = 090
N033.02.37.359,W007.43.41.649
N33.1156861,W007.5061000,3600
8.2, 3000, 180
[transition22]
runway = GMME1,rev
beacon = VARAS
route1 = 090
N034.01.32.001,W006.20.53.998
N034.02.02.691,W006.29.10.859
N034.07.49.339,W006.30.14.659
8.2, 2000, 180
[transition23]
runway = GMMNN, rev
beacon = LACAJ
route 1 = 090
N033.08.09.059,W006.50.59.179
N033.11.50.999,W006.58.54.001
N33.1828444, W007.0767389
N33.1525028, W007.2719833
N33.1156861,W007.5061000,3600
8.2, 3000, 180
[transition24]
runway = GMMNS, rev
beacon = LACAJ
route 1 = 090
N033.08.09.059,W006.50.59.179
N033.11.50.999,W006.58.54.001
N33.1828444, W007.0767389
N33.1525028, W007.2719833
N33.1156861,W007.5061000,3600
8.2, 3000, 180
[transition25]
runway = GMMNS, rev
beacon = MABOG
route 1 = 090
N032.38.18.700,W007.30.11.091
N033.02.37.359,W007.43.41.649
N33.1156861,W007.5061000,3600
8.2, 3000, 180
[transition26]
runway = GMMNN, rev
beacon = MABOG
route 1 = 090
N032.38.18.700,W007.30.11.091
N033.02.37.359,W007.43.41.649
N33.1156861,W007.5061000,3600
8.2, 3000, 180
[transition27]
runway = GMMNS, rev
beacon = MOGBI
route 1 = 090
N032.37.10.628,W007.21.58.780
N033.02.37.359,W007.43.41.649
N33.1156861,W007.5061000,3600
8.2, 3000, 180
[transition28]
runway = GMMNN, rev
beacon = MOGBI
route 1 = 090
N032.37.10.628,W007.21.58.780
N033.02.37.359,W007.43.41.649
N33.1156861,W007.5061000,3600
8.2, 3000, 180
[transition29]
runway = GMMNN, rev
beacon = BNS
route 1 = 090
N033.38.30.480,W007.12.28.789
N033.09.09.010, W007.16.19.138
N33.1156861,W007.5061000,3600
8.2, 3000, 180
[transition30]
runway = GMMNS, rev
beacon = BNS
route 1 = 090
N033.38.30.480,W007.12.28.789
N033.09.09.010, W007.16.19.138
N33.1156861,W007.5061000,3600
8.2, 3000, 180
[transition31]
runway = GMME1,rev
beacon = ESALA
route1 = 090
N034.02.23.999,W007.10.23.001
N034.02.38.439,W007.00.25.351
N034.15.04.269,W006.50.38.821
8.2, 2000, 180
[configurations]
config1 =
0, GMMNS, landstartrev
0, GMME1, landstartrev
config2 =
0, GMMNN, landstartrev
0, GMME1, landstartrev
config3 =
0, GMMNN, startrev
0, GMMNS, landrev
0, GMME1, landstartrev
config4 =
0, GMMNS, startrev
0, GMMNN, landrev
0, GMME1, landstartrev
+707
View File
@@ -0,0 +1,707 @@
[airspace]
radius =80
zoom = 1
elevation = 107
metric = false
center = N38.9656, E121.5389
magneticvar = -7
above = 21700
ceiling = 9900
descendaltitude =8900
floor = 1960
transitionlevel = 11800
speedrestriction =28,230
beacons =
DBL, N38.9522, E121.5675, 0, Dalian
ANRAT,N38.6514,E119.9511
BUBLO,N38.6358,E120.5839
DOBGA,N38.4022,E121.4514
EKULI,N38.535,E121.2167
INTIV,N38.4681,E120.5172
KARPI,N38.25,E120.7167
LOTGO,N38.5333,E120.1514
NIXEP,N38.25,E120.9842
ORAVA,N38.7017,E120.2011
PATRI,N38.5514,E121.5019
POVAG,N38.2686,E122.2503
RUPID,N38.4014,E122.4019
SANKO,N38.25,E122.4506
SARUD,N38.8192,E120.1522
TANIB,N38.3692,E121.0839
UDETI,N38.6847,E122.1517
VENOS,N38.9056,E122.3183
FC, N38.8683, E121.62833, 0, Fu jia zhuang
CHI,N39.2667,E122.6167,CHANG HAI
TL102,N38.9764,E121.2589
TL103,N38.9803,E121.1431
TL104,N39.0844,E121.1556
TL105,N38.9045,E121.1339
TL106,N39.0761,E121.2711
TL107,N38.8956,E121.2489
TL110,N39.0611,E121.4725
TL111,N38.8778,E121.4867
TL112,N38.9633,E121.5711
TL113,N38.8167,E122.2586
TL201,N38.95,E121.7406
TL202,N39.0394,E121.7522
TL203,N39.0556,E121.5428
TL204,N39.0669,E121.3919
TL205,N38.9656,E121.5389
TL206,N38.8814,E121.4308
TL208,N38.7742,E121.76
TL209,N39.0367,E121.8192
TL301,N38.9492,E121.7508
TL302,N38.9469,E121.7772
TL303,N38.9381,E121.8931
TL304,N38.9245,E122.0672
TL305,N38.8339,E122.0553
TL306,N39.0136,E122.0794
TL307,N38.8472,E121.8811
TL308,N39.0269,E121.9047
TL309,N38.8564,E121.7656
TL310,N39.0367,E121.7889
TL311,N38.8725,E121.5589
TL312,N38.5994,E121.6133
TL401,N38.9789,E121.3617
TL402,N38.9892,E121.2233
TL403,N39.0789,E121.2344
TL404,N39.0686,E121.3728
TL405,N39.0142,E120.8761
TL406,N39.0528,E121.5817
TL407,N39.0347,E121.8128
TL408,N38.8783,E121.4983
TL409,N38.8942,E121.2858
TL410,N38.8061,E121.3406
TL411,N38.6719,E121.3239
TL500,N38.9675,E121.2200
TL501,N38.9686,E121.4899
TL502,N38.9730,E121.36125
TL503,N38.9733,E121.3513
TL504,N38.9636,E121.63375
TLC04,N38.9159,E121.6337
boundary =
N39.9,E119.35
N40.2633,E122.1917
N39.8281,E124.1683
N38,E124
N38.22,E123
N38.25,E120
N39.5,E119.84
N39.9,E119.35
[airport1]
name = Zhoushuizi Airport
code = ZYTL
runways =
rwy1, 10,N38.968, E121.533,96,10826.92, 0,0,100,3.5 ,92.5
sids=
CHI
SANKO
KARPI
ORAVA
SARUD
entrypoints =
39,CHI
176,SANKO
217,NIXEP
270,ANRAT
airlines =
CSN,51,a320/a321/B738,China Southern
CHH,22,b738,Hainan
CCA,21,b738,Air China
CES,29,a319/a321/a320/b738/b737,China Eastern
GCR,16,e195,Bohai
HXA,21,e195,China Express
CCD,11,b738,Xiang jian
CSZ,12,b738,Shen zhen
[area1]
shape = polygon
altitude =46000
name = ZY(R)611
labelpos = 95.85,31.09
points =
N40.6667,E123.9167
N40,E124.0833
N39,E123.1667
N39.1667,E122.8
N40.667,E123.9167
[area2]
shape = polygon
altitude = 46000
name = ZY(R)612
labelpos = -59.83, 13.23
points =
N38.7833,E121
N38.9333,E120
N40,E120.9167
N40,E121.5
N38.7833,E121
[area3]
shape = polygon
altitude = 0
name =D607
labelpos =-6.77, 3.28
points =
N39.0383,E121.4917
N39.0417,E121.3667
N38.9333,E121.3083
[area4]
shape = polygon
altitude = 1522
name=Microwave TWR
labelpos =-7.70, -2.63
points =
-6.61, -1.01
-7.89, -1.70
-8.76, -1.59
-9.04, -2.84
-8.14, -3.29
-6.92, -4.51
-6.92, -5.03
-6.44, -4.19
-7.17, -3.64
-7.1, -2.67
-6.02, -1.91
[area5]
shape =circle
altitude =1319
name =MT
radius=0.8
position =-3.13, -4.67
labelpos =-3.22, -4.55
[area6]
shape = polygon
altitude = 0
name =W575
labelpos =-71.70, -14.28
points =
N38.6514,E119.9511
N38.5333,E120.1514
[area7]
shape = polygon
altitude = 0
name =W575
labelpos =-59.16, -20.77
points =
N38.5333,E120.1514
N38.4681,E120.5172
[area8]
shape = polygon
altitude = 0
name =W575
labelpos =-36.80, -28.85
points =
N38.4681,E120.5172
N38.3692,E121.0839
[area9]
shape = polygon
altitude = 0
name =W575
labelpos =-15.35, -28.84
points =
N38.3692,E121.0839
N38.5514,E121.5019
[area10]
shape = polygon
altitude = 0
name =W8
labelpos =-1.70, -12.79
points =
N38.5514,E121.5019
N38.9522, E121.5675
[area11]
shape = polygon
altitude = 0
name =V47
labelpos =-70.57, -4.94
points =
N38.6514,E119.9511
N38.8192,E120.1522
[area12]
shape = polygon
altitude = 0
name =W578
labelpos =-25.38, -27.31
points =
N38.25,E120.7167
N38.535,E121.2167
[area13]
shape = polygon
altitude = 0
name =W578
labelpos =-7.01, -10.54
points =
N38.535,E121.2167
N38.9522, E121.5675
[area14]
shape = polygon
altitude = 0
name =W173
labelpos =-28.40, -35.71
points =
N38.25,E120.9842
N38.3692,E121.0839
[area15]
shape = polygon
altitude = 0
name =A326
labelpos =-40.41, -21.89
points =
N38.6514,E119.9511
N38.4022,E121.4514
[area16]
shape = polygon
altitude = 0
name =W8
labelpos =-19.29, -35.58
points =
N38.25,E120.9842
N38.4022,E121.4514
[area17]
shape = polygon
altitude = 0
name =W8
labelpos =-6.67, -29.01
points =
N38.4022,E121.4514
N38.5514,E121.5019
[area18]
shape = polygon
altitude = 0
name =A326
labelpos =12.51, -40.15
points =
N38.4022,E121.4514
N38.2686,E122.2503
[area19]
shape = polygon
altitude = 0
name =W577
labelpos =17.43, -26.89
points =
N38.2686,E122.2503
N38.9522, E121.5675
[area20]
shape = polygon
altitude = 0
name =A326
labelpos =33.81, -47.00
points =
N38.2686,E122.2503
N38.25,E122.4506
[area21]
shape = polygon
altitude = 0
name =W107
labelpos =47.06, -7.99
points =
N38.25,E122.4506
N39.2667,E122.6167
[area22]
shape = polygon
altitude = 0
name =W579
labelpos =36.38, -42.17
points =
N38.25,E122.4506
N38.4014,E122.4019
[area23]
shape = polygon
altitude = 0
name =A588
labelpos =32.46, -35.79
points =
N38.25,E122.4506
N38.6847,E122.1517
[area24]
shape = polygon
altitude = 0
name =W579
labelpos =33.08, -32.92
points =
N38.4014,E122.4019
N38.6847,E122.1517
[area25]
shape = polygon
altitude = 0
name =W579
labelpos =20.31, -14.45
points =
N38.6847,E122.1517
N38.9522, E121.567
[area26]
shape = polygon
altitude = 0
name =W573
labelpos =30.08, -6.82
points =
N38.9522, E121.567
N38.9056,E122.3183
[area27]
shape = polygon
altitude = 0
name =W576
labelpos =-31.26, -19.25
points =
N38.6358,E120.5839
N38.535,E121.2167
[area28]
shape = polygon
altitude = 0
name =W576
labelpos =-55.13, -11.14
points =
N38.6358,E120.5839
N38.7017,E120.2011
[departure1]
runway=rwy1
route1=
SAR09D,SARUD-09D
N38.95,E121.7406,2630
N39.0394,E121.7522,2630,230
N39.0669,E121.3919
N39.0844,E121.1556
N38.8192,E120.1522
route2=
ORA09D,ORAVA-09D
N38.95,E121.7406,2630
N39.0394,E121.7522,2630,230
N39.0556,E121.5428,8900
N38.8814,E121.4308,12800
N38.535,E121.2167,21700
N38.6358,E120.5839
N38.7017,E120.2011
route3=
CHI07D,CHI-07D
N38.95,E121.7406,2630
N39.0394,E121.7522
N39.0556,E121.5428,8900
N38.9656,E121.5389,8900,220
N38.95,E121.7406
N38.9245,E122.0672
N38.9056,E122.3183,13800
N39.2667,E122.6167,CHANG HAI
route4=
CHI08D,CHI-08D
N38.95,E121.7406,2630
N38.9245,E122.0672
N38.9056,E122.3183,13800
N39.2667,E122.6167,CHANG HAI
route5=
CHI09D,CHI-09D
N38.95,E121.7406,2630
N39.0367,E121.8192
N39.2667,E122.6167,CHANG HAI
route6=
KAR08D,KARPI-08D
N38.95,E121.7406,2630
N39.0394,E121.7522,2630,230
N39.0556,E121.5428,8900
N39.0669,E121.3919
N38.8956,E121.2489,12800
N38.25,E120.7167
route7=
KAR09D,KARPI-09D
N38.95,E121.7406,2630
N39.0394,E121.7522,2630,230
N39.0556,E121.5428,8900
N38.8814,E121.4308,12800
N38.535,E121.2167,21700
N38.25,E120.7167
route8=
SAN08D,SANKO-08D
N38.95,E121.7406,2630
N38.7742,E121.76
N38.2686,E122.2503
N38.25,E122.4506
route9=
SAN09D,SANKO-09D
N38.95,E121.7406,2630
N39.0394,E121.7522,2630,230
N39.0556,E121.5428,8900
N38.9656,E121.5389
N38.7742,E121.76
N38.2686,E122.2503
N38.25,E122.4506
[departure2]
runway=rwy1,rev
route1=
SAR19D,SARUD-19D
N38.9789,E121.3617,2300
N38.9892,E121.2233,3900
N39.0142,E120.8761,11800
N38.8192,E120.1522
route2=
ORA18D,ORAVA-18D
N38.9789,E121.3617,2300
N38.8061,E121.3406
N38.6719,E121.3239
N38.535,E121.2167
N38.6358,E120.5839
N38.7017,E120.2011
route3=
ORA19D,ORAVA19D
N38.9789,E121.3617,2300
N39.0686,E121.3728,2300,230
N39.0528,E121.5817,8900,250
N38.9633,E121.5711
N38.8783,E121.4983,12800
N38.6719,E121.3239
N38.535,E121.2167,21700
N38.6358,E120.5839
N38.7017,E120.2011
route4=
CHI18D,CHI-18D
N38.9789,E121.3617,2300
N39.0686,E121.3728,2300,230
N39.0528,E121.5817,8900
N39.0347,E121.8128
N39.2667,E122.6167,CHANG HAI
route5=
CHI19D,CHI-19D
N38.9789,E121.3617,2300
N39.0686,E121.3728,2300,230
N39.0528,E121.5817,8900
N38.9492,E121.7508
N38.9245,E122.0672
N38.9056,E122.3183
N39.2667,E122.6167,CHANG HAI
route6=
KAR17D,KARPI-17D
N38.9789,E121.3617,2300
N38.9892,E121.2233,3900
N39.0789,E121.2344,3900,225
N39.0686,E121.3728,3900,250
N38.9789,E121.3617
N38.8942,E121.2858,12800
N38.25,E120.7167
route7=
KAR18D,KARPI-18D
N38.9789,E121.3617,2300
N38.8061,E121.3406
N38.6719,E121.3239
N38.535,E121.2167
N38.25,E120.7167
route8=
KAR19D,KARPI-19D
N38.9789,E121.3617,2300
N39.0686,E121.3728,2300,230
N39.0528,E121.5817,8900,250
N38.9633,E121.5711
N38.8783,E121.4983,12800
N38.6719,E121.3239
N38.535,E121.2167,21700
N38.25,E120.7167
route9=
SAN18D,SANKO-18D
N38.9789,E121.3617,2300,250
N38.8061,E121.3406
N38.2686,E122.2503
N38.25,E122.4506
route10=
SAN19D,SANKO-19D
N38.9789,E121.3617,2300
N39.0686,E121.3728,2300,230
N39.0528,E121.5817,8860
N38.9633,E121.5711
N38.2686,E122.2503
N38.25,E122.4506
[approach1]
runway =rwy1
beacon = ANRAT,N38.6514,E119.9511
route1=
280
N38.6514,E119.9511
N38.5333,E120.1514
N38.4681,E120.5172
N38.3692,E121.0839,11800
N38.5514,E121.5019,9800
N38.8778,E121.4867,9800,210
N38.8956,E121.2489,3940,210
N38.9045,E121.1339
N38.9803,E121.1431,2960,210
N38.9764,E121.2589,2960,210
11.9,2960,210
route2=
240
N38.6514,E119.9511
N38.5333,E120.1514
N38.4681,E120.5172
N38.3692,E121.0839,11800
N38.5514,E121.5019,9800
N38.8778,E121.4867
N39.0611,E121.4725,,210
N39.0761,E121.2711,3940,210
N38.9764,E121.2589,2960,210
11.9,2960,210
[approach2]
runway =rwy1
beacon = CHI,N39.2667,E122.6167,CHANG HAI
route1=
40
N39.2667,E122.6167
N38.9056,E122.3183
N38.8167,E122.2586
N38.8778,E121.4867, ,210
N38.8956,E121.2489,3940,210
N38.9045,E121.1339
N38.9803,E121.1431,2960,210
N38.9764,E121.2589,2960,210
11.9,2960,210
route2=
41
N39.2667,E122.6167
N38.9056,E122.3183
N38.8167,E122.2586
N38.8778,E121.4867
N39.0611,E121.4725, ,210
N39.0761,E121.2711,3940,210
N38.9764,E121.2589,2960,210
11.9,2960,210
[approach3]
runway =rwy1
beacon =NIXEP,N38.25,E120.9842
route1=
217
N38.25,E120.9842
N38.4022,E121.4514
N38.5514,E121.5019,9800
N38.8778,E121.4867
N38.8956,E121.2489,3940,210
N38.9045,E121.1339
N38.9803,E121.1431,2960,210
N38.9764,E121.2589,2960,210
11.9,2960,210
route2=
218
N38.25,E120.9842
N38.4022,E121.4514
N38.5514,E121.5019,9800
N38.8778,E121.4867
N39.0611,E121.4725, ,210
N39.0761,E121.2711,3940,210
N38.9764,E121.2589,2960,210
11.9,2960,210
[approach4]
runway =rwy1
beacon =SANKO,N38.25,E122.4506
route1=
176
N38.25,E122.4506
N38.4014,E122.4019
N38.6847,E122.1517,9800
N38.8778,E121.4867
N38.8956,E121.2489,3940,210
N38.9045,E121.1339
N38.9803,E121.1431,2960,210
N38.9764,E121.2589,2960,210
11.9,2960,210
route2=
177
N38.25,E122.4506
N38.4014,E122.4019
N38.6847,E122.1517,9800
N38.8778,E121.4867
N39.0611,E121.4725, ,210
N39.0761,E121.2711,3940,210
N38.9764,E121.2589,2960,210
11.9,2960,210
[approach5]
runway =rwy1,rev
beacon =ANRAT,N38.6514,E119.9511
route1=
280
N38.6514,E119.9511
N38.5333,E120.1514
N38.4681,E120.5172
N38.3692,E121.0839,11800
N38.5514,E121.5019,9800
N38.8725,E121.5589
N38.8564,E121.7656,2960,210
N38.8472,E121.8811
N38.8339,E122.0553
N38.9245,E122.0672,2960,210
N38.9381,E121.8931,2960
N38.9469,E121.7772,2000
9.7,2000,210
route2=
240
N38.6514,E119.9511
N38.5333,E120.1514
N38.4681,E120.5172
N38.3692,E121.0839,11800
N38.5514,E121.5019,9800
N38.5994,E121.6133,9800
N38.8564,E121.7656,2960,210
N38.8472,E121.8811
N38.8339,E122.0553
N38.9245,E122.0672,2960,210
N38.9381,E121.8931,2960
N38.9469,E121.7772,2000
9.7,2000,210
[approach6]
runway =rwy1,rev
beacon =CHI,N39.2667,E122.6167,CHANG HAI
route1=
40
N39.2667,E122.6167,CHANG HAI
N38.9056,E122.3183
N38.9245,E122.0672,2960,210
N38.9381,E121.8931,2960
N38.9469,E121.7772,2000
9.7,2000,210
[approach7]
runway =rwy1,rev
beacon =NIXEP,N38.25,E120.9842
route1=
217
N38.25,E120.9842
N38.4022,E121.4514
N38.5514,E121.5019,9800
N38.8725,E121.5589
N38.8564,E121.7656,2960,210
N38.8472,E121.8811
N38.8339,E122.0553
N38.9245,E122.0672,2960,210
N38.9381,E121.8931,2960
N38.9469,E121.7772,2000
9.7,2000,210
route2=
218
N38.25,E120.9842
N38.4022,E121.4514
N38.5994,E121.6133
N38.8564,E121.7656,2960,210
N38.8472,E121.8811
N38.8339,E122.0553
N38.9245,E122.0672,2960,210
N38.9381,E121.8931,2960
N38.9469,E121.7772,2000
9.7,2000,210
[approach9]
runway =rwy1,rev
beacon =SANKO,N38.25,E122.4506
route1=
176
N38.25,E122.4506
N38.4014,E122.4019
N38.6847,E122.1517
N38.8339,E122.0553
N38.9245,E122.0672,2960,210
N38.9381,E121.8931,2960
N38.9469,E121.7772,2000
9.7,2000,210
+35
View File
@@ -0,0 +1,35 @@
# Dalian Zhoushuizi International Airport(ZYTL) For Endless ATC
This implements Dalian Zhoushuizi International Airport(ZYTL) into the [Endless ATC](https://steamcommunity.com/app/666610) game.
## Features
### Implemented
* Arrivals and departures at ZYTL.
* Custom traffic to match airlines in China.
* Custom SIDs and STARs.
* Custom restricted areas.
### Planned
* More restricted areas and obstacles.
* Enhance route displays.
* Adjusted the scope of the control zone.
## Credits
* [@savoki0216](https://github.com/savoki0216) did everything except upload and document, and he will continue charge to enhance the project.
* Navigation data in this project is based on AIP of China, published by *Aeronautical lnformation Service Center Air Traffic Management Bureauof Civil Aviation Administration of China*
* Readme document by [@LeoChen98](https://github.com/LeoChen98), template by [@jamesg31](https://github.com/jamesg31).
## Changelog
* 1.1 - 3/25/2021
1. Add some restricted areas and obstacles
2. Add some route displays
3. Modify the relative position of the runway and The final of RW10.
* 1.0 - 3/22/2021 - Initial Release.
## Remarks
***You could bring out everything you think to us, but we can't promise will take any effect. orz**
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+157
View File
@@ -0,0 +1,157 @@
#VHHH TMA 1.0.0
This is an implementation of the Hong Kong TMA (Terminal Maneuvering Area) for [Endless ATC](https://steamcommunity.com/app/666610) featuring `VHHH` Hong Kong International Airport (also known as Chek Lap Kok) and `VMMC` Macau International Airport. The airspace ceiling is FL250. `ZGSZ` Shenzhen Baoan, although not part of the VHHH TMA, has traffic that would transit the airspace at altitudes low enough to be considered for inclusion. However it is not currently implemented.
The maximum controllable area is limited by the spawn point limits in Endless ATC, which is a 100nm circle around the map center. Therefore, the controlled area in this implementation is a heavily reduced portion of the actual VHHH TMA, omitting much of the terminal transition routes. As such, it is recommended to begin a new game at 4x speed until an aircraft reaches an initial approach fix, and play with a high minimum score (be sure to slowly ramp up to the desired value) or a fixed flow of ~30+.
Based upon AIP HONG KONG EFF 2021/02/25 and AIP MACAO AMDT 39 EFF 2020/11/19. The choice of SIDs and STARs may not be 100% accurate to real life but should be reasonably accurate reflecting daytime IMC conditions. All aircraft are assumed to be RNAV capable. Pure RNAV approaches are not implemented in favour of RNAV+ILS or conventional ILS approaches. Coastline data from naturalearthdata.com.
STARs are implemented as approach transitions. To activate an approach, an aircraft must be flying direct to an applicable fix, then the APP button can be activated. Multiple approaches may be available from a fix. Press the APP button again before issuing the approach clearance (do not long press) will select the next approach available from that fix. If the aircraft is already on an approach from that fix, you will need to cancel the approach clearance first before issuing another approach clearance.
## Airports
### `VHHH` Hong Kong International Airport (Chek Lap Kok)
A modern island airport built on reclaimed land north of Lantau Island after Hong Kong outgrew the old airport at Kai Tak, famous for the IGS RWY 13 "Checkboard" approach. Being located on its own island and built from scratch, the approaches to Chek Lap Kok are much more forgiving than at Kai Tak, but the mountaineous terrain of Hong Kong still restricts flight paths. The proximity of the Hong Kong - Guangzhou FIR boundary just north of the airport, and the other airports closely packed into the river delta region also result in a very restricted airspace.
In general, `VHHH` operates in a segregated mode with the north runway used for arrivals and the south runway used for departures.
There is custom traffic for `VHHH`. The proportions are very much estimates but shouldn't be too far off from reality.
Some major fixes on the map have a defined hold including many fixes along the STARs. If playing with a high amount of traffic, significant holding may be required with only one landing runway and lack of room for delay vectors close to the airport. For arrivals from the northeast, traffic may be redirected to the southeast arrival route via MEPUT for additional holding at EATON and beyond.
Note that as the game cannot handle multiple approaches to the same runway from the same fix, `SIERA` 7C/6D STARs from `SIERA` can be activated using direct to `BORDA`.
Aircraft arrive via 4 points:
- `FISHA` (`A1/G581 ELATO V522` from Taipei FIR to the east; `A470 DOTMI V512` or `M503 LELIM V591` from the northeast via Guangzhou FIR)
- `DAKTO` (`A461/M501 NOMAN V532` from Manila FIR the southeast)
- `HOCKY` (`A583 SABNO V542` or `M771/M772 DUMOL Q1 CARSO V551` from the south/southwest)
- `GAMBA` (`A1/P901 IDOSI V561` or `A202/R339 SIKOU V571` from Sanya FIR to the west)
- `SIERA` (`R473 SIERA` from Guangzhou FIR to the north)
Aircraft depart via 10 points:
- `BEKOL` (north via `A461` to China)
- `DOTMI` (northeast via `A470` to southeastern China)
- `LELIM` (northeast via `M503` to Shanghai Pudong, Qingdao, Dalian, Yantai)
- `ENVAR` (east via `M750` to Korea, Japan, Pacific)
- `KAPLI` (east via 'G86' to routes south of Taiwan)
- `NOMAN` (southeast via `M501` and `A461` to Philippines)
- `SABNO` (south via `A583`)
- `EPDOS` (southwest via `L642` to Singapore, Malaysia)
- `IDOSI` (southwest via `A1` to Cambodia, Vietnam, Thailand)
- `SIKOU` (west via `A202` or `R339` to Hainan, Hanoi, India etc.)
There are two runways:
-07L/25R (departures)
-07R/25L (arrivals)
Two landing configurations are in general use:
- Landing 07L, departing 07R
The usual configuration.
The ILS approach to 07L is available from the FAF `VH710`, but in practice all approaches are made from `LIMES`. It is not recommended to vector aircraft inside `LIMES`, and should be completely avoided inside `VH710`. due to the proximity of the FIR boundary and the high terrain south and northeast of the airport.
Upon missed approach, aircraft can climb to 5000 and fly the approach again from `DEDEE`, which will simulate a full missed approach back to the IAF `LIMES`. If the aircraft is not ready by `DEDEE`, the approach is also available from `SAMPU` and `TD` etc.
Speed management can be effective to sequence aircraft by `LIMES`. Use care to normalize speed between aircraft once they reach `LIMES` so as to maintain separation until the runway.
Note that independent simultaneous approaches to 07L and 07R are not permitted. Note that the RNP Y contingency procedure is not implemented.
Departures from 07R should fly the STAR to *fly-over* the first waypoint (`PORPA`) -5000 to clear the high terrain of Lantau Island south of the airport and the restricted area VHR12. Afterwards, altitude management should be sufficient to separate from any other traffic.
- Landing 25R, departing 25L
The west wind configuration.
The ILS approach to 25R is available from the FAF `RIVER`, but in practice all approaches are made from `TD` or `PLOVE`. It is not recommended to vector aircraft inside `TD`, and should be completely avoided inside `RIVER`. due to the proximity of the FIR boundary and the high terrain under the approach path.
Upon missed approach, aircraft can climb to 5000 and fly the approach again from `MA25R`, which will simulate a full missed approach back to the IAF `TD`. The missed approach path does not actually include point `MA25R`, it is a fictional waypoint placed a distance away from the airport as an aircraft cannot be commanded to proceed direct to a fix close by. The missed approach is also available from `LKC`, but usually the aircraft on missed is too close from `LKC` and the game will not allow direct to `LKC`.
Speed management can be effective to sequence aircraft by `TD`. Use care to normalize speed between aircraft once they reach `TD` so as to maintain separation until the runway.
Note that independent simultaneous approaches to 25L and 25R are not permitted. Note that the RNP Y procedure is not implemented.
Departures from 25R should fly the STAR to *fly-over* the first waypoint (`PRAWN`) -5000 to clear the high terrain of Lantau Island south of the airport. Afterwards, altitude management should be sufficient to separate from any other traffic.
### `VMMC` Macau International Airport
This airport serving the city of Macau has an island runway connected to the apron by two long taxiway bridges. Another peculiarity is how it is located between the Hong Kong and Guangzhou FIRs, with aircraft to the north handled by Guangzhou but aircraft to the south handled by Hong Kong. Due to Zhuhai city north of the RWY 34 departure end, aircraft must stay south of the 231 radial from Jiuzhou VOR (`ZAO`) for noise abatement, resulting in an immediate turn to the right departing 34, and a Kai Tak-style approach with an offset localizer to final visual approach for landing 16.
To faciliate arrivals to 16, a portion of Guangzhou FIR around `ZUH` and south of `NLG` has been included in the airspace, with the low altitudes restricted to `VMMC` traffic.
There is custom traffic for `VMMC`. The proportions are very much estimates but shouldn't be too far off from reality. Note that only traffic departing and arriving via Hong Kong FIR are included.
Some major fixes on the map have a defined hold including many fixes along the STARs.
Aircraft arrive via 4 points:
- `NEDLE` (`J101` from the east via Taipei FIR or from the northeast via Guangzhou FIR)
- `ISBAN` (`J103` from the southeast via Manila FIR or southsouthwest via Sanya FIR)
- `DASON` (`J104` from the south/southwest via Sanya FIR)
Aircraft depart via 9 points:
- `DOTMI` (northeast via `A470` to southeastern China)
- `LELIM` (northeast via `M503` to Shanghai Pudong, Qingdao, Dalian, Yantai)
- `ENVAR` (east via `M750` to Korea, Japan, Pacific)
- `KAPLI` (east via 'G86' to routes south of Taiwan)
- `NOMAN` (southeast via `M501` and `A461` to Philippines)
- `SABNO` (south via `A583`)
- `EPDOS` (southwest via `L642` to Singapore, Malaysia)
- `IDOSI` (southwest via `A1` to Cambodia, Vietnam, Thailand)
- `SIKOU` (west via `A202` or `R339` to Hanoi, India etc.)
There is the one island runway, 16/34. However, to simulate the offset localizer for 16, a fake runway 16C(/34C) is included. Planes will land on 16C instead of 16.
Two landing configurations are in general use:
- Landing 34, departing 34
The usual configuration.
The ILS approach to 34 is available from the FAF `PAPA`.
Upon missed approach, aircraft can climb to 6000 (by `MC411`) and fly the approach again from `ZAO`, which will simulate a full missed approach back to the IAF `HAZEL`. If the aircraft is not ready by `ZAO`, the approach is also available from `MC420` and `MC411`. Holding after missed is available at PAPA.
Speed management can be effective to sequence aircraft. Arrivals via the established STARs are recommended due to the congestion of airspace around `VHHH`.
Use care to have 34 departures climb to 6000 (+4000 by `MC420`, +5500 by `MC411`) to cross `LKC` 6000 with further climb subject to traffic conditions (arrivals via `SMT` overhead).
- Landing 16(C), departing 16
The south wind configuration.
The LLZ/DME approach to 16(C) is available from the IAF `ZUH`. You should not vector aircraft inside `ZUH` as these aircraft would be under control of Guangzhou after `INDUS`.
Upon missed approach, aircraft can climb to 4000 and fly direct to MC513 where holding is available at +3000. From `MC513`, aircraft can execute the approach via `INDUS`/`ZUH`/`MC513` at +5900 (+1800m).
Speed management can be effective to sequence aircraft. Arrivals via the established STARs are recommended due to the congestion of airspace around `VHHH`.
Use care to separate 16 departures from `VHHH` arrivals between `CANTO` and `MURRY` and `VHHH` departures near `PECAN`.
## Known Issues
- No `ZGSZ`
- No `ZGSD`
- No RNP Y procedures
- No 25/34 or 07/16 configurations
- The northern boundary is super lazy (I am not going to trace 3nm from the Chinese coastline, sorry)
- `SIERA` C/D arrivals only selectable from `BORDA`
- `UJ` and `MCU` transitions implemented for `VMMC` 34 but would only be used for arrivals from `ZGZU` FIR, leaving them in for the heck of it
## Disclaimer
This is a best effort work based on air traffic observations and official aeronautical publications. No guarantee is made that this representation of VHHH TMA matches real life procedures in any way. Any information regarding inaccuracies is appreciated.
## For Developers
This file is built from `source\VHHH.txt` via `deploy.py`. Make any contributions to `source\VHHH.txt` and NOT to `.\VHHH.txt`.
## Changelog
* 1.0 - 2020/01/09 - Initial version.
File diff suppressed because it is too large Load Diff
+143
View File
@@ -0,0 +1,143 @@
# Hong Kong TMA / VHHH Hong Kong
__Important Notes__
This is a such simpler version develop for Mobile EATC player.The folder going to store in your phone is: `\\Android\data\com.dirgtrats.endlessatc\files`
Height Measurement to be used are Feet and NM, included China Airspace. Otherwise specifically stated.
## Information
This is an implementation of the Hong Kong FIR and TMA for [Endless ATC](https://steamcommunity.com/app/666610) featuring `VHHH` Hong Kong International Airport. The airspace ceiling is FL250.
This Map ONLY include Hong Kong Terminal Control Area and some Extended Section on Zhuhai TCA.
*v1.0* Based upon AIP Hong Kong 11/20 (2020 11th Version) . The SIDs and STARs may not be 100% accurate to real life but should be reasonably accurate reflecting daytime IMC conditions. All traffic are designed to fly RNAV(GNSS) and ILS APCH. The Northern Boundary data between VHHK FIR and ZGZU FIR are from Basic Law Instrument 11.
The border of the map has included VHHH TMA, VMMC ATZ, ZGGG FIR and ZGZUTM04 TCA and playable range only include VHHH TMA and VMMC ATZ due to the size of FIR are too big to play.
Information of Hong Kong TMA, Transition Altitude (TA) shall be 9000ft and Transition Level (TFL) shall be FL110 (QNH980+), FL120 (QNH979-). Do not assign FL100! Live QNH can be retrieved at [ATIS](https://atis.cad.gov.hk/ATIS/ATISweb/atis.php) by CADHK.
STARs are implemented as approach transitions. To activate an approach, an aircraft must be flying direct to an applicable fix, then the APP button can be activated. Multiple approaches may be available from a fix. Press the APP button again before issuing the approach clearance (do not long press) will select the next approach available from that fix. If the aircraft is already on an approach from that fix, you will need to cancel the approach clearance first before issuing another approach clearance.
Inside VHHK FIR have 4 Airports, `VHHH`, `VHHX`, `VHSK` and `VMMC`. Further Information will be included below.
## Airports
### `VHHH` Hong Kong International Airport
The main airport of this sector. HKIA is also the only International Airport had two runway within FIR. All departures and arrivals come from or to Southern, Eastern and Western only due the packed Airspace with nearby Guangzhou FIR and Shenzhen Airport approach route.
There is custom traffic for `VHHH`. Although it is NOT reliable and only designed for the hub airline callsign to show up. *For Government / HKG, are usually operating Helicopters and Small Planes, I had included C172 for its slow purpose. Please be alert with it as it can't follow the speed with airliner.
All visible fixes on the map have a defined hold including many fixes along the STARs but excluded SMT. Standard Missed Approach Route will be included in later versions.
#### Arrival STARS
- `ABBEY`: Eastern route from RCAA (Taipei) FIR, ZGZU (Guanzhou) FIR and ZSHA (Shanghai) FIR
- `BETTY`: Southeast route from RPMR (Manlia) FIR and ZGZA (Sanya) FIR
- `CANTO`: Southwest route from ZGZA (Sanya) FIR, ZGZU (Guangzhou) FIR
- `SIERA`: Northern route from ZGZU (Guangzhou) FIR
#### Departure SID
- `BEKOL`: Northern Route, No TTR, No Handoff below S0690 / F226.
- `LAKES`: Northeast Route, TTR V1/V13, Handoff at F230 (Auto-Handoff)
- `OCEAN`: Eastern Route, TTR V2/V3/V4/V5, Handoff at F250 (Auto-Handoff)
- `PECAN`: Southwest Route: TTR V10/V11/V12, Handoff at F160
#### Operations
Due to Complication of airspace, all traffic are suggested to follow STAR approach and Do not assign holding at / under 15+ inbound within 30 minutes.
##### For Runway 07:
- TD VOR is a collision point between Departure SID and Arrival STAR:
- Departure maintain 7000ft or below
- Arrival maintain 9000ft or above
##### Avbl for All Runway
- Northern Runway 07L/25R is the usual Arrival Runway
- Southern Runway 07R/25L is the usual Departure Runway / Cargo Arrival
- Cargo Airlines: CPA w/ B748, HKC, AHK, HKC
### `VMMC` Macau International Airport
> Macau International Airport, built and released at *v1.4*.
#### Info
Macau Int'l Airport, short for `MO`
Single Runway, Runway 16 / 34
> ISO 3166-2: MO
>
> For In-game TTS Purpose, Full Name included only have **Macau** instead of **Macau Int'l Airport**
#### Arrival STAR
> Transition Route included Below Sub-Chapter
- Belongs Hong Kong VHHH TMA / FIR
* `CHALI`: Southern Route from RPHI (Manila FIR Eastern), ZGZU (Guangzhou FIR South-Western), ZSJA (Sanya FIR Southern)
* `SMT`: Northeastern Route from RCAA (Taipei FIR Eastern), ZGZU (Guangzhou FIR NorthEastern)
- Belongs China ZGZU FIR / ZSJD TCAD
> Due to Objective Airspace, Limited STAR from China will be provided
* `UJ` : Only Southern Route from China
* Original STAR: `BIRGO`
* `MC511` / `LATOP`: Only Northern Route from China
* Original STAR: `CON`,`POU`,`NLG`
* `MC511`: Operation for Runway 16 Only.
* Suggested Operation: Hold and Descent till 3000' AGL, continue Approach
* `LATOP`: Operation for Runway 34 Only.
* Suggested Operation: Hold and Descend till 6890' (2100m) AGL, continue Approach
#### Departure SID
> Due to Objective Airspace, Limited SID for both Hong Kong and China will be provided
>
> Runway 34: All Departure Transit Hong Kong will use 2U (cross TD) Departure.
* Departure Handled by Hong Kong
> For Traffic Crossing Hong Kong, Cross Border at or above 5500'
* `ALLEY`: End at `ALLEY`/ `PECAN`
* `CONGA`/ `GRUPA`/`SOUSA`: Ended at `SKATE`/`OCEAN`
* Departure Handled by Guangzhou
* `BIGRO`: Last point in operating Airspace: `BOKAT`
* Suggested Handoff Point: `LATOP`
* `NLG`/`SHL`/`MIPAG`: `LATOP` will be End of Operation (Both Runway)
#### Transition Route
> These TTR are within VHHK TMA for VMMC Approach, which are shortened and Having High chance of Error
* For CHALI Approach
* `ROBIN`: Route from `SANBO`, `SIKOU`, `DUMOL`
* `PECAN`: Entry Point
* For SMT Approach
* `NEDLE`: Route from J101: `ELATO`, `DOTMI`
#### Special Operation
* Runway 16 Runway Extension Line (In-game ILS)
> Due to Unavbl Offset LLZ, Sepcial Setup for better game experience.
* Left Offset 5deg (M163 Sim, M158 Real-life)
* Angle of LLZ: 3.5deg (3deg IRL)
* Runway 16 Offect Localiser Unavailable
* Alternative: Setted up LLZ 16 apch
* LLZ16 Ops: After Alignment on LLZ (ZAO radian 217), DCT give ILS Clearance.
* Immediate Clear ILS after Aligned, or I guarantee you Go Around
* Runway 16 Circle to Land
* PAPA Inbound, Approach Route Reference ONLY
* Left Holding at MCU (Default) , Speed Max 160kt
* Go Around Speed
* Default Go Around: 2000', 200kt
* Suggested Ops: <3000', <180kt
* Remains inside VMMC ATZ for Go Around Traffic
### `VHHX` Hong Kong Airport (aka Kai Tak Airport)
Kai Tak Airport (Depreciated)
Name: VX
Runway 13/31 (Special Operation on 13)
VX ATZ has included in *v1.0*
### `VHSK` Shek Kong Airport
Shek Kong airport, Millitary Airport
Shall Not expect simualtion in EATC
## Known Issues
* VHHX Kai Tak WIP
### Hong Kong Int'l Airport
Due game bug, While Both runway operation either only departure or both departure and arrival, the ILS of South Runway will be active. Beware double click the APP button to choose Northern 07L/25R Runway.
### Macau Airport
All Issues Included inside Macau Airport / Special Operation
## Disclaimer
This is a best effort work based on air traffic observations and official aeronautical publications. No guarantee is made that the representation of Hong Kong FIR /TMA, Macao TMA, Guangzhou FIR and Zhuhai TCA matches real life procedures in any way. Any information regarding inaccuracies is appreciated.
All right reserved
## For Developers
For further infomative version, consider PC version developed by ckwng.
## Resources used
* [eAIP](https://www.ais.gov.hk/) by CADHK
* [ATIS](atis.cad.gov.hk/) by CADHK
* from [IVAO HK](https://xe.ivao.aero) (Currently Sub-division of XE)
* from [Civil Aviation Department Hong Kong](https://www.cad.gov.hk/)
* from [Airport Authority Hong Kong](https://www.hongkongairport.com/)
* from Hong Kong Government
* Special Thanks: README.md template from RJTT_readme.md by [ckwng](https://github.com/AdamJCavanaugh/EndlessATCAirports/commits?author=ckwng)
## Changelog
* 1.0 ( / ) - 2020/12/31 - Initial version.
* 1.1 ( / ) - 2021/01/01 - HotFix: North Border
* 1.2 ( / ) - 2021/01/03 - Included ZGZUTM04 Airspace / VMMC Border line.
* 1.3 (p1.3) - 2021/01/10 - File Name Conflict Update, Extra Information Inc.
* 1.4 (p1.4) - 2021/01/18 - VMMC/MCU Macau Airport Integration (VHHX Reserve Name Update)
* 1.4 Suppliments: Game File Clean-up Comments, Readme file remove extra lines
* 1.4.2 - 2021/02/08 - Readme Format Update
## License
All Rights Reserved
Copyright (c) 2021 ycohui
Map data for EndlessATC included / retrieved by ycohui
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
-96
View File
@@ -1,96 +0,0 @@
# VHHK FIR 1.0
This is an implementation of the Hong Kong FIR and TMA for [Endless ATC](https://steamcommunity.com/app/666610) featuring `VHHH` Hong Kong International Airport . The airspace ceiling is FL250.
Based upon AIP Hong Kong 11/20 (2020 11th Version) . The SIDs and STARs may not be 100% accurate to real life but should be reasonably accurate reflecting daytime IMC conditions. All traffic are designed to fly RNAV(GNSS) and ILS APCH. The Northern Boundary data between VHHK FIR and ZGZU FIR are from Basic Law Instrument 11.
The border of the map has included VHHK FIR and playable range only include VHHH TMA due to the size of FIR are too big to play.
Information of Hong Kong TMA, Transition Altitude (TA) shall be 9000ft and Transition Level (TFL) shall be FL110 (QNH980+), FL120 (QNH979-). Do not assign FL100! Live QNH can be retrieved at [ATIS](https://atis.cad.gov.hk/ATIS/ATISweb/atis.php) by CADHK.
STARs are implemented as approach transitions. To activate an approach, an aircraft must be flying direct to an applicable fix, then the APP button can be activated. Multiple approaches may be available from a fix. Press the APP button again before issuing the approach clearance (do not long press) will select the next approach available from that fix. If the aircraft is already on an approach from that fix, you will need to cancel the approach clearance first before issuing another approach clearance.
Inside VHHK FIR have 4 Airports, `VHHH`, `VHHX`, `VHSK` and `VMMC`. Further Information will be included below.
## Airports
### `VHHH` Hong Kong International Airport
The main airport of this sector. Which is alson only airport included in current verison *v1.0*. HKIA is also the only International Airport had two runway within FIR. All departures and arrivals come from or to Southern, Eastern and Western only due the packed Airspace with nearby Guangzhou FIR and Shenzhen Airport approach route.
There is custom traffic for `VHHH`. Although it is NOT reliable and only designed for the hub airline callsign to show up. *For Government / HKG, are usually operating Helicopters and Small Planes, I had included C172 for its slow purpose. Please be alert with it as it can't follow the speed with airliner.
All visible fixes on the map have a defined hold including many fixes along the STARs but excluded LKC and SMT. Standard Missed Approach Route will be included in later versions.
#### Arrival STARS
- `ABBEY`: Eastern route from RCAA (Taipei) FIR, ZGZU (Guanzhou) FIR and ZSHA (Shanghai) FIR
- `BETTY`: Southeast route from RPMR (Manlia) FIR and ZGZA (Sanya) FIR
- `CANTO`: Southwest route from ZGZA (Sanya) FIR, ZGZU (Guangzhou) FIR
- `SIERA`: Northern route from ZGZU (Guangzhou) FIR
#### Departure SID
-`BEKOL`: Northern Route, No TTR, No Handoff below S0690 / F226.
-`LAKES`: Northeast Route, TTR V1/V13, Handoff at F230
-`OCEAN`: Eastern Route, TTR V2/V3/V4/V5, Handoff at F250
-`PECAN`: Southwest Route: TTR V10/V11/V12, Handoff at F160
#### Runway (Suffix for SID/STAR)
- 07R (A)
- 25L (B)
- 07L (C) *Use (A) for STAR
- 25R (D) *Use (B) for STAR
#### Operations
Due to Complication of airspace, all traffic are suggested to follow STAR approach and Do not assign holding at / under 15+ inbound within 30 minutes.
**For Runway 07:**
- TD VOR is a collision point between Departure SID and Arrival STAR:
- Departure maintain 5000ft or below
- Arrival maintain 7000ft or above
**Operations:**
- Northern Runway 07L/25R is the usual Arrival Runway
- Southern Runway 07R/25L is the usual Departure Runway / Cargo Arrival
- Cargo Airlines: CPA w/ B748, HKC, AHK, HKC
### `VMMC` Macau International Airport
Macau International Airport, To be built.
ISO 3166-2: MO
Runway 16/34
### `VHHX` Hong Kong Airport (aka Kai Tak Airport)
Kai Tak Airport (Depreciated)
Name: KT
Runway 13/31 (Special Operation on 13)
KT ATZ has included in *v1.0*
### `VHSK` Shek Kong Airport
Shek Kong airport, Millitary Airport
Shall Not expect simualtion in EATC
## Known Issues
Everything is still missing ;(
## Disclaimer
This is a best effort work based on air traffic observations and official aeronautical publications. No guarantee is made that the representation of Hong Kong FIR and TMA matches real life procedures in any way. Any information regarding inaccuracies is appreciated.
## For Developers
This version was designated for phone play, awaitng a larger version for PC.
## Resources
* [eAIP](https://www.ais.gov.hk/) by CADHK
* [ATIS](atis.cad.gov.hk/) by CADHK
* from [IVAO HK](https://xe.ivao.aero) (Currently Sub-division of XE)
* from [Civil Aviation Department Hong Kong](https://www.cad.gov.hk/)
* from [Airport Authority Hong Kong](https://www.hongkongairport.com/)
* from Hong Kong Government
* Special Thanks: README.md template from RJTT_readme.md by [ckwng](https://github.com/AdamJCavanaugh/EndlessATCAirports/commits?author=ckwng)
## Changelog
* 1.0 - 2020/12/31 - Initial version.
File diff suppressed because it is too large Load Diff
+7914 -14939
View File
File diff suppressed because it is too large Load Diff
+29 -5
View File
@@ -1,8 +1,8 @@
# `RJTT` ACA 2.2.1
# `RJTT` ACA 3.0.0
This is an implementation of the Tokyo ACA (Approach Control Area) for [Endless ATC](https://steamcommunity.com/app/666610) featuring `RJTT` Tokyo International Airport (commonly referred to as Haneda) and `RJAA` Narita International Airport. JSDF-M base `RJTL` Shimofusa is also represented at very high scores (difficulties). The airspace ceiling is FL240.
Based upon AIP Japan 2020/10/08. The choice of SIDs and STARs may not be 100% accurate to real life but should be reasonably accurate reflecting daytime IMC conditions. All aircraft are assumed to be RNAV capable; no conventional NAVAID-based SIDs or STARs are implemented unless there is no RNAV alternative. Coastline data from naturalearthdata.com.
Based upon AIP Japan 2021/03/25 (Ministry of Land, Infrastructure, Transport and Tourism) (https://aisjapan.mlit.go.jp/). The choice of SIDs and STARs may not be 100% accurate to real life but should be reasonably accurate reflecting daytime IMC conditions. All aircraft are assumed to be RNAV capable; no conventional NAVAID-based SIDs or STARs are implemented unless there is no RNAV alternative. Coastline data from naturalearthdata.com.
The Tokyo ACA is a very large terminal area containing two of Japan's largest airports. The traffic that can flow in and out of these two airports can be immense, but the terminal procedures published for these two airports are robust and can provide you the ability to handle the immense deluge of traffic that can pour into the area. Most of the controller's work should be sequencing arrivals and monitoring a few key merge points for conflicts. Scores of 40 or higher should be possible to maintain with minimal delay vectoring.
@@ -114,7 +114,7 @@ The secondary, yet also major airport of this sector. Previously handling almost
There is custom traffic for `RJAA`. The proportions are very much estimates but shouldn't be too far off from reality.
Most fixes visible on the map have a defined hold including many fixes along the STARs. The published hold for missed approaches is `SWIMY` for 16R/34L and `ABBOT` for 16L/34R.
Most fixes visible on the map have a defined hold including many fixes along the STARs. The published hold for missed approaches is `BINKS` for 16R/34L and `BOSPA` for 16L/34R.
Aircraft arrive at 4 points:
@@ -197,6 +197,7 @@ Approaches are available using APP mode from `TOHNE` and `ASEKI`. Arrival routes
- No `RJTO` Oshima/`RJAN` Niijima (not possible to model arrivals from `RJTY` ACA)
- Arrival and departure directions can be a bit nonsense (e.g. AHK arriving from the Pacific), unfortunately this is a game limitation.
- South arrivals to `RJTT` 16L/16R are very close to delayed even strictly following the STAR (game limitation?)
- No `RJAA` simultaneous parallel independent departures as the game does not support this.
## Disclaimer
@@ -236,7 +237,7 @@ Note that traffic data (`airlines = `) is expanded by a python script `expand_ai
- Add approaches to many, many fixes as the approach limit has been lifted.
- Add `RJTT` 16L/16R ILS approaches
- Add `RJTT` "LDA" 22/23 approaches
- `RJAA` arrivals now fly direct to first point inside `RJTT` ACA on their arrival route instead of NRE.
- `RJAA` arrivals now fly direct to first point inside `RJTT` ACA on their arrival route instead of `NRE`.
- Adjusted entry points
- Added missing `ALDEN` waypoint for some STARs from `AROSA`
- Adjusted traffic frequencies
@@ -263,4 +264,27 @@ Note that traffic data (`airlines = `) is expanded by a python script `expand_ai
- Minor adjustments/updates to airline traffic.
- Added 'rare' traffic (head of state, navaid check)
* 2.2.1 - 2020/12/19
- Adjusted the distribution of traffic for each departure point.
- Adjusted the distribution of traffic for each departure point
* 2.2.2 - 2020/12/29
- Fixed bug where `JCG` would not spawn at `RJTT`
* 3.0.0 - 2021/02/20
- Almost complete rewrite of source
- Fixed WTC category of `KC2`.
- `HKE` Hokuso VORDME decommissioned as of 2021/03/25.
- abolish fixes `SWIMY`, `ABBOT`
- establish fix `BOSPA`
- revised holding at `TEMIS`
- Add MLIT attribution to readme as per MLIT Standard Terms of Use.
- Additional rare traffic.
- Update magnetic variation to -8 (2020)
- Correct expected inbound headings to some STARs (should have no effect on gameplay)
- Added approaches from the end of the point merge arcs to facilitate vectoring when arc capacity exceeded
- Added approaches from the FAF to allow clearing for the approach via the IF
- Improve point merge arc visualization
- Change format of SID names
- Correct names and pronunciations of some departures
- Corrected runway priority for `RJTT` 16L/R (16L is now prioritized)
- Departures from 16R now start past the intersection with 22 as per real life
- Reduced frequency of traffic at `RJTL` to 1/3 of previous.
- Implement ILS Y 16L/16R approaches at `RJAA`
- Implement ILS X 34L/ILS Y 34R approaches at `RJTT`
+39 -17
View File
@@ -1,10 +1,10 @@
# `RJTT` 進入管制区 2.2.1
# `RJTT` 進入管制区 3.0.0
*作者は日本人ではないため、圧倒的語彙力のなさと知識不足によるおかしいまたは間違っている表現があるかもしれません。
TOKYO ACA(東京進入管制区)を[Endless ATC](https://steamcommunity.com/app/666610)に実装する追加データファイルです。`RJTT`東京国際空港(羽田)と`RJAA`成田国際空港が再現されています. 海上自衛隊の`RJTL`下総基地も高難易度及び高スコアでは再現されています. 空域の上限はFL240です.
AIP Japan 2020/10/08をベースとして作られています。再現されているSID及びSTARは現実の運用と異なる場合があるかもしれませんが、基本的に日中の景気気象状態 (IMC) を再現しているつもりです。すべての航空機がRNAV対応としていて、RNAVの代わりがない場合を除き非RNAVのSID及びSTARは実装されていません。海岸のデータはnaturalearthdata.comのを使っています。
AIP Japan 2021/03/25 (国土交通省) https://aisjapan.mlit.go.jp/)をもとに作成しています。再現されているSID及びSTARは現実の運用と異なる場合があるかもしれませんが、基本的に日中の景気気象状態 (IMC) を再現しているつもりです。すべての航空機がRNAV対応としていて、RNAVの代わりがない場合を除き非RNAVのSID及びSTARは実装されていません。海岸のデータはnaturalearthdata.comのを使っています。
TOKYO ACAは日本最大の二つの空港を含む非常に広い空域です。羽田と成田に飛来する航空機の数が膨大ではありますが、これら二つの空港で定められたSID及びSTARはよく作られていて、それによって大量の航空機を捌けることができます。 プレイヤーの仕事は到着機感覚の整理と合流ポイントの監視がほとんどで、STAR外の遅延ベクターなしで40以上のスコアを叩き出せるはずです。
@@ -17,13 +17,13 @@ STARはこのゲームの進入方式で再現されています。進入方式
### `RJTT` 東京(羽田)国際空港
羽田空港です。国内便が多いですが、国際便もあります。出発便は西へのが多くて、到着便は南西方向から多く飛来します。
発着便の設定は推測ですが現実とかけ離れてることはないでしょう。
マップ上のフィックスのいくつかは指定のホールドが設定されています。ミスドアプローチのホールドは34L/23/16Rなら`UTIBO`、34R/22なら`KASGA`, 16Lなら`SNOKE`.
*未翻訳
The main airport of this sector. Previously only handling domestic traffic and very limited international flights to key East Asian cities, Haneda now handles a fair amount of international traffic along with most of Tokyo's domestic traffic. As such, traffic is biased towards the west for departures and southwest for arrivals.
There is custom traffic for `RJTT`. The proportions are very much estimates but shouldn't be too far off from reality.
Most fixes visible on the map have a defined hold including many fixes along the STARs. The published hold for missed approaches is `UTIBO` for 34L/23/16R, `KASGA` for 34R/22, and `SNOKE` for 16L.
Aircraft arrive at 6 points:
- `SPENS` -`Y71`-> `XAC` (west from western Japan, Korea, Northern China)
@@ -113,13 +113,13 @@ A few different configurations are used in real operations; four are available i
### `RJAA` 成田国際空港
成田空港です。国内便が少ないですが、LCCと国際便とカーゴ便が多いです。
発着便の設定は推測ですが現実とかけ離れてることはないでしょう。
マップ上のフィックスのいくつかは指定のホールドが設定されています。ミスドアプローチのホールドは16R/34Lなら`BINKS`で16L/34Rなら`BOSPA`.
*未翻訳
The secondary, yet also major airport of this sector. Previously handling almost all of Tokyo's international traffic, it has lost some of it to Haneda recently. However, it still handles a large chunk of Tokyo's international flights as well as the many cargo flights from FDX/UPS etc. RWY 34R which was too short when Narita opened to handle heavy aircraft has now been extended and can generally handle most aircraft other than the largest of aircraft such as A388.
There is custom traffic for `RJAA`. The proportions are very much estimates but shouldn't be too far off from reality.
Most fixes visible on the map have a defined hold including many fixes along the STARs. The published hold for missed approaches is `SWIMY` for 16R/34L and `ABBOT` for 16L/34R.
Aircraft arrive at 4 points:
- `MOE` -`Y81`-> `BAFFY` -`Y81`-> `RUTAS` (southwest from western and southwestern)
@@ -209,12 +209,34 @@ Approaches are available using APP mode from `TOHNE` and `ASEKI`. Arrival routes
## For Developers
*未翻訳
Note that traffic data (`airlines = `) is expanded by a python script `expand_airlines.py` from the shorter `source/RJTT.txt` according to the definitions in '`#!`' comments. If submitting a proposed change, please submit your changes in the source file.
この追加ファイルに貢献したい方はsource/RJTT.txtを変更してから/tools/で"deploy.py RJTT"を実行してください。
## 変更履歴
* 2.2.0 - 2020/12/02
-日本語初リリース
* 2.2.1 - 2020/12/19
-管制区の離脱ポイントの交通量バランスを調整しました
-管制区の離脱ポイントの交通量バランスを調整しました
* 2.2.2 - 2020/12/29
-RJTTにJCGがスポーンしない不具合を修正
* 3.0.0 - 2021/02/20
- ソースをほぼ丸ごと再作成
- `KC2`のWTCを修正
- `HKE` 北総 VORDME 廃止
- `SWIMY``ABBOT`廃止
- 新たに`BOSPA`を設定
- `TEMIS`でのホールド変更
- READMEに出典の記載を追加
- レア発着機を追加
- 磁気変動を-82020)に更新
- いくつのSTARの最初ポイントでの推定方向を修正(プレイへの影響はありません)
- アークのキャパシティオーバー時のベクタリングを容易にするためにポイントマージのアークの最終ポイントからのアプローチを追加
- FAFからのアプローチを追加、これによって直接IFからの進入が可能
- ポイントマージアークの描写を改良
- SIDの名前の形式を変更
- 間違ってる名前と発音の修正
- `RJTT` 16L/Rの優先度を修正 (16Lを優先)
- 16Rからの離陸を22との交差点より先から始まるように修正
- `RJTL`の発着レートを三分の一に下げました.
- `RJAA` ILS Y 16L/16R アプローチを実装
- `RJTT` ILS X 34L/ILS Y 34R アプローチを実装
File diff suppressed because it is too large Load Diff
+177
View File
@@ -0,0 +1,177 @@
**DUE TO NATURE OF TRAFFIC AT THE `ROAH` AERODROME, THIS AIRPORT FILE HAS QUIRKS RELATED TO MILITARY AIRCRAFT TO/FROM `ROAH`.**
# `ROAH` ACA 1.0.0
This is an implementation of the Naha ACA (Approach Control Area) for [Endless ATC](https://steamcommunity.com/app/666610) featuring `ROAH` Naha Airport in Okinawa, Japan, as well as `RODN` Kadena Air Base and `ROTM` MCAS Futenma. The airspace ceiling is FL200.
Based on AIP Japan (Ministry of Land, Infrastructure, Transport and Tourism) (https://aisjapan.mlit.go.jp/html/AIP/html/DomesticAIP.do). The choice of SIDs and STARs may not be 100% accurate to real life but should be reasonably accurate reflecting daytime IMC conditions. All aircraft are assumed to be RNAV capable; no conventional NAVAID-based SIDs or STARs are implemented unless there is no RNAV alternative. Coastline data from naturalearthdata.com.
The Naha ACA is a mostly circular terminal area typical for an island airport. There is a heavy military presence, and military training areas are scattered around the main island as well between the airways that extend out from the Naha `NHC` VORTAC. Approach and departure paths cross over/under each other just north of Naha, and there are many potential conflict points to the west/east of Okinawa as well. The majority of traffic enters the ACA from the northeast from mainland Japan and southwest from the other Ryukyu islands such as Miyakojima and Ishigaki. USAF training area W-178(A) is depicted as inactive for gameplay purposes. Expect heavy use of vectors, especially as traffic increases.
STARs are implemented as approach transitions. To activate an approach, an aircraft must be flying direct to an applicable fix, then the APP button can be activated. Multiple approaches may be available from a fix, to the same airport or even different airports. Pressing the APP button again before issuing the approach clearance (do not long press) will select the next approach available from that fix. If the aircraft is already on an approach from that fix, you will need to cancel the approach clearance first before issuing another approach clearance.
`ROKR` Kerama, `RORA` Aguni, `RORE` Iejima, and `RODE` Ie Shima Auxiliary are not represented due to a lack of traffic to/from outside of the ACA. However, the runways of the former three airports are shown on the map.
## Airports
### `ROAH` Naha
The main airport of this sector. Jointly used by civilian and JSDF traffic, this airport on the southern tip of Okinawa Island has added a new parallel runway in the sea to the west in response to increased traffic including the increases in scrambles of fighter jets. Unlike Chitose in Hokkaido, civilian and military traffic use the same runways, meaning passengers onboard airliners are able to see fighters taking off with afterburners from their window seat.
As a controller, the mix of aircraft may be more exciting than the normal airport, but will need attention when the `F16` zooming along catches up to the `AT46`... STARs are available, however in real life vectors are used heavily.
**SOME MILITARY AIRCRAFT (`F16`, `T4`, `P3`, `E2`) ARE DEPICTED AS AIRCRAFT LANDING AT "`JF`" AERODROME FOR TECHNICAL REASONS. THESE AIRCRAFT SHOULD LAND AT `ROAH`.**
There is custom traffic for `ROAH`. The proportions are very much estimates but shouldn't be too far off from reality.
Major fixes on the map have a defined hold including many fixes along the STARs. The published hold for missed approaches is `OLVAL`.
Aircraft arrive at 3 points:
- `PRIUS` -`Y525`-> `IHEYA` (north/north east from mainland Japan/Korea)
- `GEMNI` -`Y57`-> `VELNO` (southwest from western Ryukyu Islands/Taiwan)
- `BUICK` -`V75`-> `NANJO` (east from Daito Islands/Pacific Ocean)
Aircraft depart via:
- `CHAMP` (north via `Y579` to Korea)
- `AMAMI` (north/northeast via `Y574`/`Y53`/`Y25` etc. northeast for mainland Japan)
- `BUICK` (east via `V75` for Daito Islands/Pacific Ocean)
- `GANJU` or `CANOP` depending on runway (southwest for western Ryukyu Islands/Taiwan)
There are two runways:
- 18L/36R
- 18R/36L (new west parallel runway)
Two landing configurations are in general use:
- Landing 36L, departing 36R
The west runway is used for arrivals while the east runway is used for departures. In real life, traffic may land 36R for a shorter taxi if traffic allows.
Approaches to 36L are available from `BLISS`.
STARs are available using APP mode from `IHEYA`, `VELNO`, `BUICK`, and some intermediate points on the STARs. Military aircraft may only engage app mode from certain outer fixes due to technical reasons; recommend vectors to final if not suitable STAR available.
Use caution for departures towards `KIZNA` conflicting with 05 arrivals to `RODN`. Vectoring may be required to the west at altitude 1200 to clear `RODN` 05 arrivals descending through 2200 at `JIMMY`.
Simultaneous approaches to 36L and 36R are NOT authorized.
- Landing 18R, departing 18L
The west runway is used for arrivals while the east runway is used for departures. In real life, traffic may land 18L for a shorter taxi if traffic allows.
Approaches to 18R are available from `SALSA`.
STARs are available using APP mode from `IHEYA`, `VELNO`, `BUICK`, and some intermediate points on the STARs. Military aircraft may only engage app mode from certain outer fixes due to technical reasons, **except for from `VIGER`**. **FOR `JF` AIRCRAFT, TO INITIATE AN APPROACH FROM `VIGER`, USE THE SECOND APPROACH BY SELECTING "APP" TWICE. THE ASSIGNED APPROACH SHOULD BE TO RWY `18LJF` VIA 15 DME ARC CCW. *`JF` aircraft will go around if the runway selected is `18L`.*** Recommend vectors to final if not suitable STAR available.
Use caution for arrivals conflicting with 05 arrivals to `RODN`. `RODN` arrivals may need to held over `JACKS` for a gap in `ROAH` arrivals.
Simultaneous approaches to 18L and 18R are NOT authorized.
### `RODN` Kadena Air Base
This is the USAF's home in Okinawa. A variety of aircraft, military or chartered civilian, fly in and out of this aerodrome going to training areas or other USAF bases in Japan/Guam/USA.
There is custom traffic for `RODN`. The proportions and callsigns are very much plain guesses however, no assertions are made regarding accuracy (instead, assertions are made regarding its *inaccuracy*.)
Major fixes on the map have a defined hold.
Aircraft depart to ATS routes via `BASHO` `BUICK` `DODGE` or `ONC`, or to the North Range and South Range. There are real life SIDs but they are all just two points in a (mostly) straight line after departure to a waypoint not connected to the ATS routes. Therefore no SIDs are implemented, just a heading after departure. Departures should be vectored until direct to exit point can be issued.
There are two runways:
- 05L/23R
- 05R/23L
There are two simple runway configurations:
- Landing 05L, departing 05R
The north runway is mainly used for arrivals and the south runway is mainly used for departures.
Approaches to 05L are available from `JACKS` etc.
No STARs are available, arrivals should be vectored to `JACKS` or other fixes on the approach.
Use caution for `ROAH` arrivals to 18s or departures from 36s. Arrivals must descend through 2200 at `JIMMY` to remain on GS. Recommend vectors for `ROAH` 36 departures to maintain separation. ~~Recommend holding `RODN` arrivals at `JACKS` until gap can be made in `ROAH` 18 arrivals.~~ **Due to conflicts with `ROAH` 36 departures, 05L has been raised 500ft to displace the glideslope so 05 approaches do not conflict.** However, the `JIMMY` 2200 restriction has been maintained to simulate the original GS.
The published hold for missed approaches is straight ahead to `IMONO`.
- Landing 23R, departing 23L
The north runway is mainly used for arrivals and the south runway is mainly used for departures.
Approaches to 23R are available from `IMONO` etc.
No STARs are available, arrivals should be vectored to `IMONO` or other fixes on the approach.
Use caution for `ROAH` arrivals to 18s or departures from 36s. Departures must climb to at least 2200 to clear. **Due to conflicts between 05 arrivals and `ROAH` 36 departures, 05L/23R has been raised 500ft to displace the glideslope.** However, the altitudes for the fixes along the 23R ILS have been maintained to simulate the original GS.
The published hold for missed approaches is straight ahead to `JACKS`.
### `ROTM` MCAS Futenma
A USN airfield south of Kadena. Most traffic would be helicopters to training areas around Okinawa, but there is some fixed wing traffic to other US military facilities.
There is custom traffic for `ROTM`. The proportions and callsigns are very much plain guesses however, no assertions are made regarding accuracy (instead, assertions are made regarding its *inaccuracy*.)
Aircraft depart to ATS routes via `BASHO` `BUICK` `DODGE` or `ONC`. No SIDs are implemented, just a heading after departure. Departures should be vectored until direct to exit point can be issued.
There is one runway:
- 06/24
There are two simple runway configurations:
- Landing and departing 06
No approach fixes are available, and no STARs are available, arrivals should be vectored to final.
Use caution for `ROAH` traffic under the approach path and parallel `RODN` arrivals to the north.
- Landing and departing 24
No approach fixes are available, and no STARs are available, arrivals should be vectored to final.
Use caution for `ROAH` traffic under the departure path and parallel `RODN` arrivals to the north.
### `ROKJ` Kumejima
A runway with a small apron on this island west of Okinawa. The only scheduled service is to `ROAH` Naha, and a seasonal service to `RJTT` Tokyo Haneda.
There is custom traffic for `ROKJ`. Unfortunately, traffic to `ROAH` cannot be simulated due to the game not supporting this. Only the seasonal traffic to/from the northeast is simulated.
Aircraft depart and arrive via the `NHC` - `LAVON` - `GURUX` - `DORIS` corridor.
There is one runway:
- 03/21
Only one runway configuration is implemented:
- Landing and departing 03
Approaches are available from `DUFFY` and `DORIS`.
The published hold for missed approaches is a *left* turn to `DORIS`.
## Known Issues
- Have different types of traffic use different entry/exit gateways are not possible in this game, therefore aircraft using civil and military routes are separated by duplicating `ROAH`, which means there are two runways each of 18L/36R and 18R/36L. As the game will allow you to select approaches meant for a different airport if they share a starting fix with an approach for the airport the selected aircraft is landing at, this can lead to military aircraft flying the "civilian" approach and going around due to trying to land at the "wrong" airport. To avoid this issue, civil and military aircraft landing `ROAH` do not have approaches that share fixes.
- Many areas have their ceiling marked as "0" as they are likely not active for all of their hours of operation and interfere with standard flight paths, or because they are shared with traffic to different airports (which is not supported by the game)
- No `ROAH`-`ROKJ` traffic
- No `RODN` SIDs - the SIDs are available on the AIP, but the connecting routes to airways are not published as airways or procedures, or even as direct routes or flight planned routes via AIC. Author is only aware of one - `ADDAN` (`DCT`) `BASHO` (`DCT`) `AMAMI`. In fact, `BASHO` does not appear to be used for any other purpose...
## Disclaimer
This is a best effort work based on air traffic observations and official aeronautical publications. No guarantee is made that the representation of Naha ACA matches real life procedures in any way. Especially, procedures around `RODN` Kadena and `ROTM` Futenma may be grossly inaccurate, and callsigns for military aircraft are very likely to be either incorrect, out of date, or completely fabricated. Any information (that is not classified or secret in any way) regarding inaccuracies is appreciated.
## For Developers
This file is built from `source\ROAH.txt` via `deploy.py`. Make any contributions to `source\ROAH.txt` and NOT to `.\ROAH.txt`.
## Changelog
* 1.0 - 2021/02/08 - Initial version.
+2516 -7464
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+23
View File
@@ -0,0 +1,23 @@
[expand.callsigns]
ckstr = check star
rch = reach
cnv7 = convoy 7
cnv3 = convoy 3
madfox = mad fox
pswrd = password
brgham = brigham
vampr = vampire
tmboy = tomboy
neptn = neptune
cygns = cygnus
#sfj = stah-foo-lai-yaa
#ana = ollu neeppawn
#jal = juh-pawn eh are
#snj = nyuh sky
#jta = j oh-shun
#ado = eh are do
#jjp = orenji lie-nuh
#apj = eh are peach
#rsd = state aero
File diff suppressed because it is too large Load Diff
+373
View File
@@ -0,0 +1,373 @@
Endless ATC Dubai CTA v1.4 by Zac Kaplowitz
AIRAC 2103
v1.4 covers the Dubai CTA (OMDB, OMSJ, OMDW) in the 30 configuration. The Minhad restricted airspace is not yet included.
At OMDB, 30L is for arrivals, 30R is for departures. The platform altitude for 30L is 2000 feet. The platform altitude for 30R is 3000 feet. These altitudes must be used for glideslope intercept.
Aircraft should never fly the full STAR unless traffic necessitates it. Vectors should be used from the downwind leg to expedite the flow of traffic. A 90 degree base leg and a 30 degree ILS intercept must be used.
D-APO is implemented at OMDB. With skill set to 12 or above, 30R will open for arrivals as well as departures. 30R arrivals must still maintain separation from 30L arrivals and must establish at 3000 feet.
For the purposes of separation, the 30L and 30R localisers are considered to be the same localiser.
At OMSJ, 30 is used for both arrivals and departures, meaning ICAO separation minima of 7nm must be applied on approach. The platform altitude for 30 is 2000 feet.
At OMDW, 30 is used for both arrivals and departures, meaning ICAO separation minima of 7nm must be applied on approach. The platform altitude for 30 is 2000 feet.
The initial climb at OMDB is 4000 feet. It is 3000 feet at OMDW, and 2000 feet at OMSJ.
Airspace from 1500-FL150.
On initial contact, arriving aircraft should be cleared for the arrival.
The minimum separation in the CTA is 3nm. The minimum separation on the localiser at OMDB is 2.5nm. Aircraft on the same SID must be handed off to UAE Radar with at least 8nm in trail.
Aircraft entering the Muscat FIR via the same SID (any ANVIX departure, OMDB IVURO departures, OMDW NOLSU departures, OMSJ GETID departures) must be separated by 20nm on CTA exit.
In general altitudes are used for arrivals and odd altitudes for departures. This is ignored below 4000ft, as 3000ft is used to separate arrivals more efficiently.
Realistic traffic config:
Skill 7, cap 9
Flow 30, cap 30
---------------------------------------------------------
---------------------------------------------------------
---------------------------------------------------------
General Arrival procedures
Speeds
CTA entry - 230 knots
Turning downwind on the DATOB5Z, IMPED3C, NOLSU2M, PUVAL6Z arrivals - 210 knots
Passing the threshold on the downwind leg - 190 knots
Until 10nm - 190 knots
After 10nm - 160 knots
---------------------------------------------------------
---------------------------------------------------------
OMDB Arrival Procedures
IMPED3C
Passing IMPED, direct ULDOT may be given for a straight-in approach. From the upwind leg, directs may be given to GIRGO, VELAR or RIDEV.
6000 feet until DB515, then not below 4000 feet until established on downwind, then as required.
---------------------------------------------------------
OMDB Arrival Procedures
LORID4D
If there are no ANVIX departures from OMDB, direct DB533 is permitted once past ORGUR. Directs to DB528 or RARPI are permitted once past EMOPO.
10000 feet until ORGUR, then 8000 feet until crossing DB533, then 6000 feet, then as required.
---------------------------------------------------------
OMDB Arrival Procedures
PUVAL5C
If there are no IVURO departures from OMDB and no arrivals or departures at OMSJ, direct GIRGO/VELAR/RIDEV may be given.
10000ft until clear of IVURO departures from OMDB and GETID departures from OMSJ, then 9000 feet until clear of GONVI arrivals into OMSJ, then 8000 feet, then 6000 feet, then as required.
---------------------------------------------------------
OMDB Arrival Procedures
VUTEB3D
No direct routings permitted.
8000 feet until PATID, then 6000 feet until clear of departing traffic from OMDB and OMSJ, then 4000 feet until clear of 30L localiser, then as required.
---------------------------------------------------------
---------------------------------------------------------
OMSJ Arrival Procedures
GONVI4M
No direct routings permitted.
8000 feet until UKROL, then as required.
---------------------------------------------------------
OMSJ Arrival Procedures
LORID4M
No direct routings permitted.
10000 until clear of OMDB westbound departures, then 8000 feet until UKROL, then as required.
---------------------------------------------------------
OMSJ Arrival Procedures
NOLSU2M
Passing NOLSU, direct NOGSO may be given for a straight-in approach.
6000 feet until SJ516, then as required, while ensuring traffic crosses SJ517 below 4000 feet.
---------------------------------------------------------
OMSJ Arrival Procedures
PUVAL6M
Direct UKTAD is permitted.
8000 feet until UKROL, then as required.
---------------------------------------------------------
---------------------------------------------------------
OMDW Arrival Procedures
DATOB5Z
If there are no westbound or northbound departures from any airports, direct DEDAX is permitted.
10000 feet until DW427, then 8000 feet until DEDAX (or clear of OMDW departures), then as required.
---------------------------------------------------------
OMDW Arrival Procedures
LORID3Z
If there are no southbound departures from OMDW, direct DEDAX is permitted.
8000 feet until TATMO, then 6000 feet until DEDAX (or clear of OMDW departures), then as required.
---------------------------------------------------------
OMDW Arrival Procedures
PUVAL6Z
No directs permitted.
12000 feet until IVOXI, then 10000 feet until DW427, then 8000 feet until DEDAX (or clear of OMDW departures), then as required.
---------------------------------------------------------
OMDW Arrival Procedures
UMAMI4Z
Passing UMAMI, direct GEXIK may be given for a straight-in approach.
6000 feet, then as required.
---------------------------------------------------------
---------------------------------------------------------
---------------------------------------------------------
General Departure Procedures
High speed in the CTA
High speed (above 250kt) for departures is permitted once all turns greater than 30 degrees are completed.
---------------------------------------------------------
General Departure Procedures
Separation minima
Aircraft on the same SID must be handed off to UAE Radar 8nm in trail or greater. Aircraft entering the Muscat FIR via the same SID (any ANVIX departure, OMDB IVURO departures, OMDW NOLSU departures, OMSJ GETID departures) must be separated by 20nm on CTA exit.
---------------------------------------------------------
---------------------------------------------------------
OMDB Departure Procedures
ANVIX7F
No direct routings permitted.
7000 feet until DB588, then 9000 feet until clear of OMDW arrivals, then FL150.
---------------------------------------------------------
OMDB Departure Procedures
DAVMO4F
No direct routings permitted.
5000 feet until clear of VUTEB and PUVAL arrivals into OMDB, then 7000 feet clear of NOLSU and PUVAL arrivals into OMSJ, then FL150.
---------------------------------------------------------
OMDB Departure Procedures
EMERU2F
No direct routings permitted.
7000 feet until DB587, then FL150.
---------------------------------------------------------
OMDB Departure Procedures
IVURO1F
No direct routings permitted.
5000 feet until clear of VUTEB and PUVAL arrivals into OMDB, then 7000 feet until clear of NOLSU and PUVAL arrivals into OMSJ, then FL150.
---------------------------------------------------------
OMDB Departure Procedures
KUTLI4F
No direct routings permitted.
7000 feet until DB587, then FL150.
---------------------------------------------------------
OMDB Departure Procedures
NABIX3F
No direct routings permitted.
7000 feet until clear of LORID arrivals into OMDB and OMSJ, then FL150.
---------------------------------------------------------
OMDB Departure Procedures
RIDAP2F
No direct routings permitted.
7000 feet until clear of LORID arrivals into OMDB and OMSJ, then FL150.
---------------------------------------------------------
OMDB Departure Procedures
SENPA3F
No direct routings permitted.
7000 feet until clear of LORID arrivals into OMDB and OMSJ, then FL150.
---------------------------------------------------------
---------------------------------------------------------
OMSJ Departure Procedures
ANVIX5R
No direct routings permitted.
5000 feet until clear of GONVI arrivals into OMSJ, then 7000 feet until clear of PUVAL arrivals into OMDB and OMSJ, then FL150.
---------------------------------------------------------
OMSJ Departure Procedures
DAVMO3R
No direct routings permitted.
5000 feet until clear of NOLSU and PUVAL arrivals into OMSJ, then FL150.
---------------------------------------------------------
OMSJ Departure Procedures
EMERU1R
No direct routings permitted.
5000 feet until clear of GONVI arrivals into OMSJ, then 7000 feet until clear of PUVAL arrivals into OMDB and OMSJ, then FL150.
---------------------------------------------------------
OMSJ Departure Procedures
GETID1R
No direct routings permitted.
5000 feet until clear of GONVI arrivals into OMSJ, then 7000 feet until clear of PUVAL arrivals into OMDB and OMSJ, then FL150.
---------------------------------------------------------
OMSJ Departure Procedures
KUTLI3R
No direct routings permitted.
5000 feet until clear of GONVI arrivals into OMSJ, then 7000 feet until clear of PUVAL arrivals into OMDB and OMSJ, then FL150.
---------------------------------------------------------
OMSJ Departure Procedures
NABIX2R
No direct routings permitted.
2000 feet until clear of DAVMO and IVURO departures from OMDB, then 7000 feet until clear of VUTEB arrivals into OMDB, then FL150.
---------------------------------------------------------
OMSJ Departure Procedures
RIDAP2R
No direct routings permitted.
2000 feet until clear of DAVMO and IVURO departures from OMDB, then 7000 feet until clear of VUTEB arrivals into OMDB, then FL150.
---------------------------------------------------------
OMSJ Departure Procedures
SENPA2R
No direct routings permitted.
2000 feet until clear of DAVMO and IVURO departures from OMDB, then 7000 feet until clear of VUTEB arrivals into OMDB, then FL150.
---------------------------------------------------------
---------------------------------------------------------
OMDW Departure Procedures
ANVIX4L
No direct routings permitted.
5000 feet until DW465, then 7000 feet until DW466, then FL150.
---------------------------------------------------------
OMDW Departure Procedures
DAVMO4L
No direct routings permitted.
7000 feet until XARTA, then FL150.
---------------------------------------------------------
OMDW Departure Procedures
EMERU1L
No direct routings permitted.
5000 feet until DW465, then FL150, handoff once leaving 5000 feet. Vectors may need to be used for separation as this SID is very short.
---------------------------------------------------------
OMDW Departure Procedures
KUTLI3L
No direct routings permitted.
5000 feet until DW465, then FL150, handoff once leaving 5000 feet. Vectors may need to be used for separation as this SID is very short.
---------------------------------------------------------
OMDW Departure Procedures
NABIX3L
No direct routings permitted.
7000 feet until XARTA, then FL150.
---------------------------------------------------------
OMDW Departure Procedures
NOLSU3L
No direct routings permitted.
5000 feet until DW465, then 7000 feet until DW466, then FL150.
---------------------------------------------------------
OMDW Departure Procedures
RIDAP3L
No direct routings permitted.
7000 feet until XARTA, then FL150.
---------------------------------------------------------
OMDW Departure Procedures
SENPA3L
No direct routings permitted.
7000 feet until XARTA, then FL150.
---------------------------------------------------------
---------------------------------------------------------
---------------------------------------------------------
---------------------------------------------------------
---------------------------------------------------------
Changelog
v1.0 - 11/03/2021 - Initial release
v1.1 - 11/03/2021 - Added D-APO, fixed callsign pronunciations, reduced frequency of DAVMO and IVURO departures, fixed auto-descent bug
v1.2 - 17/03/2021 - Added OMSJ and OMDW, adjusted OMDB departure proportions, modified MRVAs to allow for OMSJ and OMDW, modified readme climb instruction to reflect real world procedures for deconfliction of traffic to different airports in the CTA
v1.3 - 24/03/2021 - Fixed KUTLI3L departure, other minor fixes
v1.4 - 01/04/2021 - Updated to Endless ATC v4.4
+330
View File
@@ -0,0 +1,330 @@
[airspace]
zoom = 6.0
elevation = 302
floor = 2000
descendaltitude = 10000
ceiling = 12000
above = 14000
transitionaltitude = 5500
usa = false
metric = false
separation = 3
center = N50.8658981323, E7.1427397728
magneticvar = 2.0
boundary =
N50.754601, E6.020928
N50.609104, E6.205884
N50.499370, E6.258987
N50.412529, E6.384115
N50.510673, E6.848411
N50.516634, E7.466641
N50.549697, E7.441157
N50.718044, E7.891504
N50.636724, E8.011521
N50.690550, E8.126655
N50.775308, E8.037499
N50.833149, E7.975030
N50.877131, E8.134464
N51.035012, E7.935050
N51.098429, E8.085047
N51.198818, E8.006635
N51.132102, E7.828882
N51.090334, E6.756269
beacons =
KBO, N50.86170, E7.14552, 0, Koeln/Bonn
WYP, N51.04840, E7.28000, -261, Wipper
COL, N50.78350, E7.59419, -298, Cola
NVO, N50.82267, E6.63661, 068, Noervenich
GULKO, N50.75367, E7.93700, -276, gulko
DEPOK, N50.71367, E6.86133, 0, depok
KOPAG, N51.06767, E7.80900, -205, kopag
DK034, N50.88600, E7.12150, 0, deltakilo034
DK035, N50.93483, E7.13567, 0, deltakilo035
DK036, N50.97050, E7.24033, 0, deltakilo036
DK037, N50.99183, E7.31383, 0, deltakilo037
DK038, N51.02500, E7.41350, 0, deltakilo038
DK040, N50.91950, E7.07350, 0, deltakilo039
DK130, N50.82450, E7.20600, 0, deltakilo130
DK132, N50.80300, E7.23717, 0, deltakilo132
DK135, N50.75167, E7.17933, 0, deltakilo135
DK141, N50.81767, E7.23667, 0, deltakilo141
DK143, N50.81167, E7.29317, 0, deltakilo143
DK144, N50.82583, E7.34817, 0, deltakilo144
DK145, N50.86100, E7.35933, 0, deltakilo145
DK415, N51.08533, E6.90050, 0, deltakilo415
DK416, N51.09700, E7.00450, 0, deltakilo416
DK417, N51.06617, E7.18400, 0, deltakilo417
DK418, N51.05583, E7.46417, 0, deltakilo418
DK428, N50.98167, E7.43083, 0, deltakilo428
DK455, N51.03533, E6.90450, 0, deltakilo122
DK495, N50.96750, E6.78750, 0, deltakilo495
DK515, N50.98783, E7.54500, 0, deltakilo515
DK527, N50.87367, E7.73750, 0, deltakilo527
DK554, N50.95333, E7.42600, 0, deltakilo554
DK615, N50.68200, E7.47050, 0, deltakilo615
DK616, N50.69483, E7.54683, 0, deltakilo616
DK617, N50.81617, E7.63217, 0, deltakilo617
DK627, N50.72650, E7.75083, 0, deltakilo627
DK654, N50.69617, E7.39433, 0, deltakilo654
DK694, N50.62917, E7.27850, 0, deltakilo694
LEGDU, N50.98650, E6.97617, 0, legdu
RARIX, N50.75517, E7.31200, 0, rarix
KUKIT, N50.93150, E7.35417, 0, kukit
PODIP, N50.94533, E7.81717, 0, podip
KUMIK, N50.83900, E8.07350, 0, kumik
[airport1]
name = Cologne Bonn Airport
code = EDDK
runways =
rwy1, 06, N50.8601, E7.12378, 64.0, 8068, 0, 0, 231
rwy2, 14L, N50.8805, E7.12908, 136, 12516, 0, 0, 230
rwy3, 14R, N50.8708, E7.12086, 136, 6112, 0, 0, 221
entrypoints =
065, kopag
114, gulko
229, depok
climbaltitude = 5000
airlines =
AUA, 2, E195/A319/A320/A321, Austrian, e
BLA, 1, B733/B735/B738, Blue Air, s
BUC, 1, A320/MD82, Bulgarian Charter, s
CAI, 4, B738, Corendon, sw
DLH, 3, CRJ9/A319/A320/A321, Lufthansa, s
EWG, 10, A319/A320, Eurowings
EWG, 10, A319/A320, Eurowings
FDX, 10, B752/B772/MD11/AT75, Fedex
FHM, 2, A320, Eurobird, sw
HES, 1, A321, Holiday Europe, s
IRA, 1, A306, Iranair, e
JAW, 1, E170, Jasmin, s
LBT, 1, A320, Nouvelair, s
MAC, 1, A320, Arabia Maroc, w
MSC, 1, A320, Air Cairo, s
NOS, 1, B738, Moonflower, w
OHY, 1, A320/A321, Onur Air
PBD, 1, B738, Pobeda, ne
PGT, 2, A320/A321/B738, Sunturk, s
RYR, 10, B738, Ryanair
SQP, 1, B737/B738/B739, Skyup, e
SRN, 7, AT72, Sprintair
SRR, 8, B762/B763, Whitestar
SWT, 8, AT43/AT72/B752, Swift
SXS, 1, B738, Sunexpress, s
THY, 1, A320/A321/B738/B739, s
TUI, 6, B738, Tuijet, sw
UPS, 10, B748/B752/B763/MD11, UPS
WZZ, 8, A320/A321, Wizzair, se
[departure1]
runway = rwy2
route1 =
NVO2F, noervenich two foxtrott
N50.8030, E7.2372
N50.7517, E7.1793
N50.8227, E6.6366
#DK132, DK135, NVO
route2 =
WYP5F, wipper five foxtrott
N50.8245, E7.2060
N50.8177, E7.2367
N50.8117, E7.2932
N50.8258, E7.3482
N50.8610, E7.3593
N51.0484, E7.2800
#DK130, DK141, DK143, DK144, DK145, WYP
route3 =
COL3F, cola three foxtrott
N50.8245, E7.2060
N50.7835, E7.5942
#DK130, COL
route4 =
POD8F, podip six foxtrott
N50.8245, E7.2060
N50.7835, E7.5942
N50.9453, E7.8172
#DK130, COL, PODIP
route5 =
KUM7F, kumik seven foxtrott
N50.8245, E7.2060
N50.7835, E7.5942
N50.8390, E8.0735
#DK130, COL, KUMIK
[departure2]
runway = rwy2, rev
route1 =
NVO2B, noervenich two bravo
N50.9195, E7.0735
N50.8227, E6.6366
#DK040 NVO
route 2 =
WYP5B, wipper five bravo
N50.8860, E7.1215
N50.9348, E7.1357
N50.9705, E7.2403
N51.0484, E7.2800
#DK034, DK035, DK036, WYP
route 3 =
COL3B, cola three bravo
N50.8860, E7.1215
N50.9348, E7.1357
N50.9705, E7.2403
N50.9918, E7.3138
N50.7835, E7.5942
#DK034, DK035, DK036, DK037, COL
route 4 =
POD8B, podip eight bravo
N50.8860, E7.1215
N50.9348, E7.1357
N50.9705, E7.2403
N50.9918, E7.3138
N51.0250, E7.4135
N50.9453, E7.8172
#DK034, DK035, DK036, DK037, DK038, PODIP
route 5 =
KUM9B, kumik niner bravo
N50.8860, E7.1215
N50.9348, E7.1357
N50.9705, E7.2403
N50.9918, E7.3138
N51.0250, E7.4135
N50.9453, E7.8172
N50.8390, E8.0735
#DK034, DK035, DK036, DK037, DK038, PODIP, KUMIK
[approach1]
runway = rwy2
beacon = GULKO
route 1 =
320
N50.7536, E7.9370
N50.9817, E7.4308
N51.0484, E7.2800
N51.0662, E7.1840, 0, 220
N51.0970, E7.0045
N51.0853, E6.9005
N51.0353, E6.9045
11, 3000, 200
#GULKO, DK428, WYP, DK417(220-), DK416, DK415, DK455
[approach2]
runway = rwy2
beacon = KOPAG
route1 =
270
N51.0677, E7.8090
N51.0558, E7.4642
N51.0484, E7.2800
N51.0662, E7.1840, 0, 220
N51.0970, E7.0045
N51.0853, E6.9005
N51.0353, E6.9045
11, 3000, 200
#KOPAG, DK418, WYP, DK417(220-), DK416, DK415, DK455
[approach3]
runway = rwy2
beacon = DEPOK
route1 =
080
N50.7137, E6.8613
N50.9675, E6.7875, 0, 220
N51.0353, E6.9045
11, 3000, 200
#DEPOK, DK495(220-), DK455
[approach4]
runway = rwy2, rev
beacon = GULKO
route1=
320
N50.7536, E7.9370
N50.7265, E7.7508, 0, 220
N50.6948, E7.5468
N50.6820, E7.4705
N50.6961, E7.3943
11, 3000, 200
#GULKO, DK627(220-), DK616, DK615, DK654
[approach5]
runway = rwy2, rev
beacon = KOPAG
route1 =
270
N51.0677, E7.8090
N50.8162, E7.6322, 0, 220
N50.6948, E7.5468
N50.6820, E7.4705
N50.6961, E7.3943
11, 3000, 200
#KOPAG, DK617(220-), DK616, DK615, DK654
[approach6]
runway = rwy2, rev
beacon = DEPOK
route1 =
080
N50.7137, E6.8613
N50.6292, E7.2785, 0, 220
N50.6961, E7.3943
11, 3000, 200
#DEPOK, DK694, DK654
[approach7]
runway = rwy1, rev
beacon = GULKO
route1 =
180
N50.7536, E7.9370
N50.8737, E7.7375, 0, 220
N50.98783, E7.54500
N50.95333, E7.42600
11, 3000, 220
#GULKO, DK527(220-), DK515, DK554
[approach8]
runway = rwy1, rev
beacon = KOPAG
route 1 =
090
N51.0677, E7.8090
N50.98783, E7.54500
N50.95333, E7.42600
11, 3000, 220
#KOPAG, DK515, DK554
[configurations]
config1 =
0, rwy2, landstart
#14L single
config2 =
0, rwy2, landstartrev
#32R single
config3 =
0, rwy2, landstart
0, rwy1, landrev
#ARR 14L/24 DEP24
config4 =
0, rwy2, landstartrev
0, rwy1, landrev
#ARR 32R/24 DEP32R
+25
View File
@@ -0,0 +1,25 @@
Cologne Bonn Airprot
Cologne is a medium sized airport located in the west of Germany.
During Daytime it is not particulary busy but during the night at peak time there are a lot cargo aircraft coming in.
A big challenge of EDDK is that the APP sector is quite small and therefore precise preplanning is required to handle traffic.
Normal config at EDDK is 14L or 32R single operations and runway 24 may be used in adition to that as a landing runway to shorten flight and taxi times.
If runway 14L/32R and 24 are active for landing it is required to separate the arrivals as these are crossing runways, so having runway 24 open, does not mean double capacity.
Arrivals will be transfered via GULKO, KOPAG and DEPOK at FL100 (I don't know how to have different ALTs for different WPs) and then will normally be vectored towards final approach.
In addition I added transition from GULKO/KOPAG/DEPOK for 14L/32R and GULKO/KOPAG for 24 which may be used but aren't normally in real life.
If you want to use the 24 transitions you'll need to click the APP button twice, then you can toggle through the transitions.
The DEPOK transition is slightly modified in comparison to real life to make it usable in the game
There is no transition out of DEPOK for runway 24, so you'll need to vector the aircraft if you want them on runway 24.
Departures will normally easily overclimb the arrivals and will be handed of climbing to FL140.
I might add:
- 06/24 departures at a later stage, which would allow to add 06/14L 06/32R and 24 single operations.
- a transition from DEPOK for runway 24 if neede
Most importantly enjoy the airport!
Any feedback is highly appreciated!
File diff suppressed because it is too large Load Diff
+48
View File
@@ -0,0 +1,48 @@
# Munich Airport "Franz Josef Strauß" in the south of Germany.
Second hub of Lufthansa, offering many international and intercontinental routes. Munich has two runways, equally used for takeoffs and landings.
![Image of EDDM airport in EndlessAtc](images/eddm1.png)
## Some tips on how it can be played
- The approaches are meant to help coordination during high traffic. During low traffic, controllers usually skip the transitions completely and vector to final, sometimes giving directs to waypoints.
- Departures are cleared to FL70, meaning that they might have to pass below approaching traffic following the transitions. This is one reason why vectoring arriving planes can be handy, as you can keep more space between arrivals and departures.
- Skill Cap 16 works fine so that some planes can still depart between the arrivals.
## Already working:
- most SIDs exist
- various transitions and approach waypoints
- real airspaces
- pre-covid airlines
## TODOs, help wanted!
- general aviation traffic missing, maybe government traffic
- special cargo traffic missing, for example antonovs
- airline traffic frequency balance probably not ideal
- check if airspace height restrictions make sense
- check if some SIDs can be removed because they are barely used in real life
- check if arrival entry directions make sense, same for descent altitude
## Changelog
### v1.2
- added rwy configs
- use new feature of v4.4.0: stars now end on heading like in real life. No more automatic approaches
### v1.1
- Planes now arrive with clearance to ROKIL, LANDU, BETOS or NAPSA, more like in real life where MIQ/OTT are pretty much never used
- Moved transition altitude to 6000ft, to make transition more realistic for arriving traffic. This is not 100% realistic, but the game does not offer a transition level
- Added new Commercial jets and cargo airlines, also added some airlines I forgot
- Added some explanations on how to play to readme
- Overwriting default speed restriction set by the game, so that planes don't slow down automatically anymore
- Removed OBI VOR because it was next to a waypoint, so it was more annoying than helpful
- Removed unused default sids
### v1.0
Initial version
**Feedback or improvements? Create an issue or contribute directly: https://github.com/AdamJCavanaugh/EndlessATCAirports#contributing**. This airport uses no source file to generate stuff, so the [EDDM.txt](EDDM.txt) file can be edited as is.
+531
View File
@@ -0,0 +1,531 @@
[airspace]
zoom = 2.5
elevation = 425
floor = 3000
descendaltitude = 11000
ceiling = 15000
above = 24000
transitionaltitude = 5500
usa = false
metric = fasle
separation = 3
center = N51.605833, E8.16167
magneticvar = 0.106
boundary =
N51.99450, E6.81517
N51.92733, E6.78683
N51.68950, E7.44417
N51.51833, E7.30500
N51.42483, E7.34250
N51.31500, E7.45967
N51.14133, E7.82733
N50.87467, E8.11350
N50.92067, E8.30300
N51.01833, E8.59283
N51.33450, E8.88500
N51.47417, E8.86150
N51.57583, E9.00433
N51.80567, E9.00167
N51.80567, E8.86017
N51.90417, E8.86017
N52.13650, E8.79433
N52.13650, E8.59383
N52.29467, E8.52233
N52.32417, E8.36483
N52.32417, E7.86167
N52.26817, E7.53617
N52.24133, E7.05283
N52.05167, E6.69033
beacons =
DOR, N51.52530, E7.63106, 0, Wickede
HMM, N51.85690, E7.70829, 0, Hamm
GMH, N51.17050, E7.89204, 0, Germinghausen
MOD, N52.13800, E7.68724, 0, Munster
PAD, N51.62360, E8.63944, 0, Paderborn
MYN, N52.15930, E7.79999, 0, Munster
OSN, N52.20010, E8.28552, 0, Osnabruck
RKN, N52.13320, E6.76388, 0, Rekken
WRB, N51.50683, E9.11000, 0, Warburg
LW101, N51.47700, E7.49383, 0, limawhiskey101
LW102, N51.44050, E7.47900, 0, limawhiskey102
LW103, N51.40650, E7.50883, 0, limawhiskey103
LW104, N51.38783, E7.52483, 0, limawhiskey104
LW105, N51.28617, E7.82617, 0, limawhiskey105
LW106, N51.49017, E7.43017, 0, limawhiskey106
LW107, N51.55750, E7.37133, 0, limawhiskey107
LW108, N51.39417, E7.31417, 0, limawhiskey108
LW200, N51.55850, E7.72350, 0, limawhiskey200
LW201, N51.56833, E7.74967, 0, limawhiskey201
LW202, N51.57900, E7.78083, 0, limawhiskey202
LW203, N51.60450, E7.79917, 0, limawhiskey203
LW204, N51.63217, E7.75367, 0, limawhiskey204
LW205, N51.81017, E7.72500, 0, limawhiskey205
LW206, N51.52150, E7.79467, 0, limawhiskey206
LW207, N51.50417, E7.78483, 0, limawhiskey207
LW208, N51.43367, E7.74283, 0, limawhiskey208
LW209, N51.52400, E7.90100, 0, limawhiskey209
LW211, N51.40917, E7.44917, 0, limawhiskey211
DESOD, N51.41567, E8.08767, 0, desod
ARNOP, N51.41567, E8.17650, 0, arnop
BAMSU, N51.19083, E7.30717, 0, bamsu
DOMEG, N51.71150, E7.58550, -170, domeg
NUDGO, N51.41567, E8.43800, 0, nudgo
ADEMI, N51.48467, E7.88583, -284, ademi
D079J, N51.55550, E7.88583, 0, d079j
LP100, N51.64150, E8.68067, 0, limapapa100
LP101, N51.65217, E8.70550, 0, limapapa101
LP102, N51.71617, E8.68783, 0, limapapa102
LP104, N51.65317, E8.77400, 0, limapapa104
LP105, N51.76917, E8.32683, 0, limapapa105
LP106, N51.70750, E8.63800, 0, limapapa106
LP107, N51.67883, E8.58217, 0, limapapa107
LP202, N51.50750, E8.53317, 0, limapapa202
LP203, N51.71100, E8.14767, 0, limapapa203
LP204, N51.58017, E8.53083, 0, limapapa204
LP205, N51.57017, E8.50433, 0, limapapa205
LP206, N51.51983, E8.49200, 0, limapapa206
LP207, N51.53583, E8.42050, 0, limapapa207
GISDI, N51.27617, E8.81300, 0, gisdi
TINSA, N51.51783, E8.07233, 0, tinsa
D078I, N51.63883, E8.82900, 0, d078i
D254I, N51.58367, E8.38767, 0, d254i
DG022, N52.10550, E7.54283, 0, deltagolf022
DG023, N52.12700, E7.64450, 0, deltagolf023
DG026, N52.10083, E7.64083, 0, deltagolf026
DG027, N52.05733, E7.70267, 0, deltagolf027
DG071, N52.14417, E7.72150, 0, deltagolf071
DG072, N52.14117, E7.71050, 0, deltagolf071
DG073, N52.18267, E7.69383, 0, deltagolf073
MOD11, N52.05000, E7.42033, 0, mod11
MY270, N52.16617, E7.96933, 0, my270
[airport1]
name = Dortmund Airport
code = EDLW
runways =
LWrwy1, 06, N51.5147, E7.6019, 61.0, 6562, 984, 984, 418
climbaltitude = 5000
entrypoints =
040, DOMEG
150, ADEMI
airlines =
EZY, 1, A319/A320, Easy, n
EWG, 6, A319/A320, Eurowings
RYR, 8, B738, Ryanair
SEH, 1, A20N, Air Crete, s
SXS, 2, B738, Sunexpress, s
WZZ, 10, A320/A321/A20N/A21N, Wizzair,
[airport2]
name = Paderborn Lippstadt Airport
code = LP
runways =
LPrwy1, 06, N51.6087, E8.60318, 57.0, 7152, 0, 0, 699
traffic = 3
climbaltitude = 5000
entrypoints =
210, PAD
340, PAD
airlines =
CAI, 1, B738, Correndon, s
EWG, 5, A319/A320, Eurowings
FHY, 1, A320, Freebird Air, s
DLH, 4, CRJ9, Lufthansa, s
OHY, 1, A320/A321, Onur Air, s
SDR, 5, A319/A320, Sundair
PGT, 1, A320/A20N/A21N/B738, Sunturk, s
SXS, 2, B738, Sunexpress
TUI, 1, B738, Tuifly
[airport3]
name = Munster Osnabruck Airport
code = DG
runways =
DGrwy1, 07, N52.1315, E7.67006, 71.0, 7119, 0, 656, 156
traffic = 3
climbaltitude = 5000
entrypoints =
190, HMM
050, OSN
airlines =
CAI, 5, B738, Correndon, s
DLH, 2, C525, Lufthansa, n
DLH, 3, CRJ9/E190, Lufthansa, s
EWG, 2, A319/A320, Eurowings
RYR, 2, B738, Ryanair
SXS, 4, B738, Sunexpress, s
TIX, 1, C525, Matrix
[configurations]
config1 =
0, LWrwy1, landstart
0, LPrwy1, landstart
0, DGrwy1, landstart
config2 =
0, LWrwy1, landstartrev
0, LPrwy1, landstart
0, DGrwy1, landstart
config3 =
0, LWrwy1, landstartrev
0, LPrwy1, landstartrev
0, DGrwy1, landstartrev
config4 =
0, LWrwy1, landstart
0, LPrwy1, landstartrev
0, DGrwy1, landstartrev
config5 =
0, LWrwy1, landstart
0, LPrwy1, landstart
0, DGrwy1, landstartrev
config6 =
0, LWrwy1, landstart
0, LPrwy1, landstartrev
0, DGrwy1, landstart
config7=
0, LWrwy1, landstartrev
0, LPrwy1, landstartrev
0, DGrwy1, landstart
config8=
0, LWrwy1, landstartrev
0, LPrwy1, landstartrev
0, DGrwy1, landstart
[departure 1]
runway = LWrwy1
route1 =
BAM2Q, bamsu two quebec
N51.55850, E7.72350
N51.52150, E7.79467
N51.50417, E7.78483
N51.40917, E7.44917
N51.19083, E7.30717
#LW200, LW206, LW207, LW211, BAMSU
route2 =
GMH8Q, germinghausen eight quebec
N51.55850, E7.72350
N51.52150, E7.79467
N51.50417, E7.78483
N51.43367, E7.74283
N51.17050, E7.89204
#LW200, LW206, LW207, LW208, GMH
route3 =
NUD3Q, nudgo three quebec
N51.56833, E7.74967
N51.52400, E7.90100
N51.41567, E8.08767
N51.41567, E8.17650
N51.41567, E8.43800
#LW201, LW209, DESOD, ARNOP, NUDGO
route4 =
OSN8Q, osnabruck eight quebec
N51.57900, E7.78083
N51.60450, E7.79917
N51.81017, E7.72500
N52.20010, E8.28552
#LW202, LW203, LW205, OSN
route 5 =
HMM7Q, hamm seven quebec
N51.57900, E7.78083
N51.60450, E7.79917
N51.81017, E7.72500
N51.85690, E7.70829
#LW202, LW203, LW205, HMM
route 6 =
DOM3Q, domeg three quebec
N51.57900, E7.78083
N51.60450, E7.79917
N51.63217, E7.75367
N51.71150, E7.58550
#LW202, LW203, LW204, DOMEG
[departures2]
runway = LWrwy1, rev
route1 =
BAM2U, bamsu two uniform
N51.47700, E7.49383
N51.39417, E7.31417
N51.19083, E7.30717
#LW101, LW108, BAMSU
route2 =
GMH1U, germinghausen one uniform
N51.47700, E7.49383
N51.44050, E7.47900
N51.40650, E7.50883
N51.28617, E7.82617
N51.17050, E7.89204
#LW101, LW102, LW103, LW105, GMH
route3 =
NUD2U, nudgo two uniform
N51.47700, E7.49383
N51.44050, E7.47900
N51.40650, E7.50883
N51.38783, E7.52483
N51.41567, E8.17650
N51.41567, E8.43800
#LW101, LW102, LW103, LW104, ARNOP, NUDGO
route4 =
OSN2U, osnabruck two uniform
N51.47700, E7.49383
N51.49017, E7.43017
N51.55750, E7.37133
N51.71150, E7.58550
N52.20010, E8.28552
#LW101, LW106, LW107, DOMEG, OSN
route5 =
HMM1U, hamm one uniform
N51.47700, E7.49383
N51.49017, E7.43017
N51.55750, E7.37133
N51.71150, E7.58550
N51.85690, E7.70829
#LW101, LW106, LW107, DOMEG, HMM
route6 =
DOM2U, domeg two uniform
N51.47700, E7.49383
N51.49017, E7.43017
N51.55750, E7.37133
N51.71150, E7.58550
#LW101, LW106, LW107, DOMEG
[departures3]
runway = LPrwy1
route1 =
TIN1X, tinsa one x-ray
N51.65217, E8.70550
N51.70750, E8.63800
N51.67883, E8.58217
N51.51783, E8.07233
#LP101, LP106, LP107, TINSA
route 2 =
DOM4X, domeg four x-ray
N51.65217, E8.70550
N51.71617, E8.68783
N51.76917, E8.32683
N51.71150, E7.58550
#LP101, LP102, LP105, DOMEG
route3 =
HMM9X, hamm niner x-ray
N51.65217, E8.70550
N51.71617, E8.68783
N51.85690, E7.70829
#LP101, LP102, HMM
route4 =
WRB1X, warburg one x-ray
N51.64150, E8.68067
N51.65317, E8.77400
N51.50683, E9.11000
#LP100, LP104, WRB
route5 =
GIS1X, gisdi one x-ray
N51.64150, E8.68067
N51.65317, E8.77400
N51.27617, E8.81300
#LP100, LP104, GISDI
[departures4]
runway = LPrwy1, rev
route1 =
TIN1W, tinsa one whiskey
N51.58017, E8.53083
N51.53583, E8.42050
N51.51783, E8.07233
#LP204, LP207, TINSA
route2 =
DOM5W, domeg five whiskey
N51.58017, E8.53083
N51.71100, E8.14767
N51.71150, E7.58550
#LP204, LP203, DOMEG
route3 =
HMM8W, hamm eight whiskey
N51.58017, E8.53083
N51.85690, E7.70829
#LP204, HMM
route4 =
WRB1W, warburg one whiskey
N51.58017, E8.53083
N51.57017, E8.50433
N51.51983, E8.49200
N51.50750, E8.53317
N51.50683, E9.11000
#LP204, LP205, LP206, LP202, WRB
route5 =
GIS1W, gisdi one whiskey
N51.58017, E8.53083
N51.57017, E8.50433
N51.51983, E8.49200
N51.27617, E8.81300
#LP204, LP205, LP206, GISDI
[departures5]
runway = DGrwy1
route1 =
RKN9Y, rekken niner yankee
N52.14117, E7.71050
N52.18267, E7.69383
N52.13320, E6.76388
#DG072, DG073, RKN
route2 =
OSN9E, osnabruck niner echo
N52.15930, E7.79999
N52.20010, E8.28552
#MYN, OSN
route3 =
HMM3Y, hamm three yankee
N52.14417, E7.72150
N51.85690, E7.70829
#DG071, HMM
route4 =
DOM2Y, domeg two yankee
N52.14417, E7.72150
N51.71150, E7.58550
#DG071, DOMEG
[departures6]
runway = DGrwy1, rev
route1 =
RKN1C, rekken one charlie
N52.10550, E7.54283
N52.13320, E6.76388
#DG022, RKN
route2 =
OSN9X, osnabruck niner x-ray
N52.12700, E7.64450
N52.10083, E7.64083
N52.05733, E7.70267
N52.20010, E8.28552
#DG023, DG026, DG027, OSN
route3 =
HMM1Z, hamm one zulu
N52.12700, E7.64450
N51.85690, E7.70829
#DG023, HMM
route4 =
DOM2Z, domeg two zulu
N52.12700, E7.64450
N51.71150, E7.58550
#DG023, DOMEG
[approach1]
runway = LWrwy1
beacon = DOR
route1 =
218
N51.52530, E7.63106, 0, 200
N51.40917, E7.44917, 0, 160
7.5, 2500, 160
[approach2]
runway = LWrwy1, rev
beacon = DOR
route1 =
079
N51.52530, E7.63106, 0, 200
N51.55550, E7.88583, 0, 160
7.5, 2500, 160
[approach3]
runway = LPrwy1
beacon = PAD
route1 =
254
N51.62360, E8.63944, 0, 200
N51.58367, E8.38767, 0, 180
7, 2500, 180
[approach4]
runway = LPrwy2
beacon = PAD
route1 =
078
N51.62360, E8.63944, 0, 200
N51.63883, E8.82900, 0, 180
7, 2500, 180
[approach5]
runway = DGrwy1
beacon = HMM
route1 =
312
N51.85690, E7.70829
N52.05000, E7.42033, 0, 180
9, 2500, 180
[approach6]
runway = DGrwy1
beacon = OSN
route1 =
251
N52.20010, E8.28552
N52.05733, E7.70267, 0, 220
N52.05000, E7.42033, 0, 180
9, 2500, 180
[approach7]
runway = DGrwy1, rev
beacon = HMM
route1 =
032
N51.85690, E7.70829
N52.16617, E7.96933, 0, 180
9, 2500, 180
[approac8]
runway = DGrwy1, rev
beacon = OSN
route1 =
267
N52.20010, E8.28552
9.5, 3000, 180
Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

+309
View File
@@ -0,0 +1,309 @@
[airspace]
elevation = 179
center = N60.317199707, E24.963300705
magneticvar = 7.366
descendaltitude = 12000 ; minimum initial altitude for arrivals
ceiling = 27500 ; maximum selectable altitude
above = 28000 ; maximum departure altitude when SID is enabled (must be above ceiling)
radius = 70 ; airspace radius in NM
beacons =
HEL, N60.33780, E24.95370, 0, Helsinki
H, N60.33740, E24.99250, 0, Hotel
U, N60.30400, E24.92030, 0, Uniform
KOR, N60.37210, E25.06840, 0, Korso
ESP, N60.24830, E24.79640, 0, Espoo
KAD, N60.14700, E25.08110, 0, Kadis
HEK, N60.25490, E25.49120, 0, Heka
PVO, N60.29440, E25.58850, 0, Porvoo
VTI, N60.45930, E24.24410, 0, Vihti
ANT, N60.86300, E25.12680, 0, Antoni
ORM, N60.83350, E25.76210, 0, Orimaa
ABSUT,N060.13.08.610,E024.44.03.740,0,ABSUT
ARADE,N060.23.16.000,E025.34.08.000,0,ARADE
ASPIT,N060.11.56.860,E024.24.34.530,0,ASPIT
BIFIX,N060.27.45.610,E025.16.18.750,0,BIFIX
DIPMO,N060.12.06.790,E024.41.48.990,0,DIPMO
EESTI,N060.04.52.000,E025.24.24.000,0,EESTI
EHOTE,N060.01.03.000,E024.29.20.000,0,EHOTE
ELKUN,N060.27.23.110,E024.50.04.300,0,ELKUN
ENUTO,N060.28.53.000,E024.46.32.000,0,ENUTO
EXEVO,N060.15.10.220,E024.48.29.310,0,EXEVO
FANNI,N060.33.40.890,E025.12.18.080,0,FANNI
GESVO,N060.07.31.080,E024.46.38.690,0,GESVO
GONAP,N060.10.04.940,E024.37.24.270,0,GONAP
GUMVO,N060.23.38.100,E025.07.08.030,0,GUMVO
HELPO,N060.28.16.250,E024.27.42.110,0,HELPO
IDMOP,N060.24.03.000,E025.03.09.000,0,IDMOP
KAAVI,N060.32.02.460,E025.08.25.540,0,KAAVI
KENON,N060.24.03.810,E025.23.05.020,0,KENON
KUKKA,N060.37.30.150,E025.07.52.250,0,KUKKA
LASTU,N060.30.01.520,E025.03.56.430,0,LASTU
LOHIG,N060.08.07.750,E024.47.54.580,0,LOHIG
MALKE,N060.14.16.370,E024.29.36.090,0,MALKE
MEHAK,N060.25.33.870,E025.09.14.010,0,MEHAK
MILLI,N060.29.14.960,E025.02.25.850,0,MILLI
NAPUN,N060.49.41.000,E025.16.22.000,0,NAPUN
NEKKU,N060.16.18.460,E024.34.00.920,0,NEKKU
NEMVI,N060.16.01.450,E024.33.23.970,0,NEMVI
NOFOX,N060.21.20.120,E025.16.59.770,0,NOFOX
OBONU,N060.09.31.660,E025.08.21.740,0,OBONU
OBUPU,N060.24.47.890,E024.52.44.680,0,OBONU
ORILE,N060.08.26.730,E024.48.35.940,0,ORILE
PERHO,N060.29.59.290,E025.19.06.040,0,PERHO
PODOM,N060.12.20.890,E024.40.10.570,0,PODOM
RULLI,N060.08.17.700,E024.31.23.330,0,RULLI
SUTAX,N060.29.38.260,E024.59.05.080,0,SUTAX
VALOX,N059.43.54.000,E024.08.20.000,0,VALOX
TEVRU,N060.49.16.000,E024.49.29.000,0,TEVRU
ADIVO,N060.17.51.000,E023.58.53.000,0,ADIVO
ARVEP,N060.14.58.000,E026.23.57.000,0,ARVEP
KUVEM,N060.11.26.000,E023.56.14.000,0,KUVEM
NEPEK,N060.44.33.000,E024.29.08.000,0,NEPEK
RENKU,N059.53.09.000,E024.53.48.100,0,RENKU
KOIVU,N059.50.41.000,E024.39.55.000,0,KOIVU
LUSEP,N060.57.08.000,E025.15.53.000,0,LUSEP
LAKUT,N060.26.17.000,E023.52.35.000,0,LAKUT
DIVAM,N059.50.54.000,E023.35.37.000,0,DIVAM
INTOR,N059.49.40.000,E025.11.12.000,0,INTOR
ROPAM,N060.07.59.000,E025.36.06.000,0,ROPAM
VEPIN,N060.37.53.000,E026.19.59.000,0,VEPIN
line1 =
N60.02803, E22.64619
N60.03760, E22.69736
N60.05728, E22.74980
N60.07681, E22.79346
N60.10137, E22.81914
N60.18662, E22.84443
N60.21582, E22.86709
N60.20972, E22.91172
N60.09854, E22.99414
N60.04727, E23.08018
N60.04131, E23.14844
N60.02183, E23.19844
N59.97222, E23.18848
N59.91270, E23.11572
N59.86880, E23.00977
N59.82637, E22.96387
N59.81602, E23.02129
N59.84492, E23.18145
N59.92578, E23.32676
N59.98623, E23.46357
N59.96816, E23.59268
N59.96567, E23.72178
N60.00918, E24.02520
N60.04233, E24.34258
N60.02129, E24.44561
N60.04629, E24.51797
N60.11426, E24.60049
N60.15835, E24.84873
N60.15747, E24.95762
N60.19409, E25.15586
N60.24834, E25.26787
N60.26123, E25.45576
N60.30249, E25.54824
N60.33320, E25.65645
N60.26743, E25.71543
N60.26753, E25.75801
N60.31460, E25.84580
N60.34678, E25.94590
N60.34150, E26.03584
N60.37158, E26.04023
N60.42529, E26.00625
N60.47422, E25.95596
N60.47490, E26.03604
N60.40659, E26.20469
N60.42407, E26.37773
N60.46680, E26.45645
N60.55181, E26.49580
N60.62456, E26.56934
N60.62793, E26.60645
N60.59561, E26.60176
N60.54600, E26.55117
N60.47158, E26.51973
N60.41289, E26.53467
N60.43770, E26.60742
N60.45508, E26.72148
N60.47148, E26.95117
N60.52515, E27.07559
N60.54346, E27.20527
N60.53867, E27.24189
line2 =
N59.45063, E26.97471
N59.47178, E26.85205
N59.55391, E26.62500
N59.55391, E26.46084
N59.63467, E25.79375
N59.62754, E25.61572
N59.63901, E25.50928
N59.59800, E25.50742
N59.55947, E25.52090
N59.52114, E25.44375
N59.52207, E24.87754
N59.45566, E24.58359
N59.47266, E24.38037
N59.37593, E24.17539
N59.37231, E24.05361
line3 =
N61.26250, E22.70195
N61.21904, E22.65859
N61.20166, E22.61289
line4 =
N61.23398, E22.63154
N61.26807, E22.66309
N61.30039, E22.71787
[airport1]
name = Helsinki Vantaa Airport
code = EFHK
runways =
rwy1, 04L, N60.3129, E24.9039, 48.0, 10039, 0, 196, 133
rwy2, 04R, N60.3098, E24.9332, 48.0, 11286, 787, 0, 150
rwy3, 15, N60.3303, E24.9645, 154.1, 9518, 0, 0, 162
climbaltitude = 4000
sids=
VALOX
TEVRU
ADIVO
ARVEP
KUVEM
NEPEK
RENKU
KOIVU
entrypoints =
240,DIVAM
280,LAKUT
360,LUSEP
150,INTOR
100,ARVEP
130,ROPAM
airlines =
TRA, 4, B737/B738, Transavia, DIVAM
KLM, 2, B737/B738/E190/E170, KLM, DIVAM
AFR, 2, A319/A320, Air France, DIVAM
BAW, 3, A319/A320/A321, Speedbird, DIVAM
CSN, 1, A380/B77W, China Southern, INTOR
DLH, 2, A319/A320/A321, Lufthansa, DIVAM
FIN, 5, A319/A320/A321/A330/A350/E190, Finnair, nwse
NAX, 5, B738, Norshuttle, nwse
IBK, 5, B738, Nortrans, nwse
TAP, 1, A319/A320/A321, Airportugal, DIVAM
JAL, 1, B789/B788, Japanair, INTOR
AFL, 2, A320, AEROFLOT, ROPAM
SAS, 4, A320/A321/B738, Scandinavian, LAKUT
FDB, 2 , B738, Skydubai , INTOR
[approach1]
runway = rwy2,rev
beacon = KENON
route1 =
038
N060.24.03.810,E025.23.05.020
N060.27.45.610,E025.16.18.750
11.9, 300, 210
[approach2]
runway = rwy2,rev
beacon = KAAVI
route1 =
038
N060.32.02.460,E025.08.25.540
N060.27.45.610,E025.16.18.750
11.9, 300, 210
[approach3]
runway = rwy2,rev
beacon = ARADE
route1 =
038
N060.23.16.000,E025.34.08.000
N060.27.45.610,E025.16.18.750
11.9, 300, 210
[approach4]
runway = rwy2,rev
beacon = KUKKA
route1 =
038
N060.37.30.150,E025.07.52.250
N060.27.45.610,E025.16.18.750
11.9, 300, 210
[approach5]
runway = rwy3
beacon = HELPO
route1 =
038
N060.28.16.250,E024.27.42.110
N060.27.23.110,E024.50.04.300
8.7, 2000, 210
[approach6]
runway = rwy3
beacon = SUTAX
route1 =
038
N060.29.38.260,E024.59.05.080
N060.27.23.110,E024.50.04.300
8.7, 2000, 210
[approach7]
runway = rwy1
beacon = NEMVI
route1 =
038
N060.16.01.450,E024.33.23.970
N060.12.20.890,E024.40.10.570
9.7, 2300, 210
[approach8]
runway = rwy1
beacon = LOHIG
route1 =
038
N060.08.07.750,E024.47.54.580
N060.12.20.890,E024.40.10.570
9.7, 2300, 210
[approach9]
runway = rwy1
beacon = EHOTE
route1 =
038
N060.01.03.000,E024.29.20.000
N060.12.20.890,E024.40.10.570
9.7, 2300, 210
##############################################################
[configurations]
##############################################################
config1 =
0, rwy1, landstart
config2 =
0, rwy2, landstartrev
5, rwy1, landrev
config3 =
0, rwy3, land
0, rwy1, startrev
config3 =
0, rwy3, start
0, rwy1, land
config4 =
0 , rwy2, start
0 , rwy1, land
5, rwy2, land
config5 =
0 , rwy2, landrev
0 , rwy1, startrev
config6 =
0, rwy3, land
0, rwy1, startrev
+288
View File
@@ -0,0 +1,288 @@
[airspace]
elevation = 47
center = N64.9300994873, E25.3546009064
magneticvar = 8.024
radius = 40 ; airspace radius in NM
zoom = 7.0 ; default zoom level, increase to zoom in
elevation = 13 ; ground altitude in feet
floor = 1500 ; minimum selectable altitude
descendaltitude = 10000 ; minimum initial altitude for arrivals
ceiling = 9000 ; maximum selectable altitude
above = 37000 ; maximum departure altitude when SID is enabled (must be above ceiling)
transitionaltitude = 5000 ; highest altitude displayed in feet instead of flight level
speedrestriction = 15, 220 ; radius in NM, and speed in knots
usa = false ; American-style callsign pronunciation and runway names
metric = false ; display altitudes in metres instead of feet
separation = 3 ; minimum allowed distance between aircraft in NM
beacons =
OUK, N64.93160, E25.35930, 0, Oulu
LAA, N64.96630, E25.21120, 0, Laanila
TP, N64.88450, E25.53160, 0, Tango-Papa
VA, N64.12950, E24.64280, 0, Victor-Alfa
SUVIB,N64.25.55.00,E25.07.44.000 , 0 SUVIB
IXONO,N064.35.30.000,E024.41.07.000,0,IXONO
XEVAP,N064.50.13.000, E024.18.36.000,0, XEVAP
NUBVU,N065.12.04.000, E025.45.11.000,0,NUBVU
UGMOR,N064.39.40.000, E026.08.30.000,0,UGMOR
ABKEM,N064.28.55.000, E025.48.41.000,0,ABKEM
MIKNU,N064.26.39.000,E025.26.14.000,MIKNU
OSMAM,N064.46.02.320,E025.36.37.670,OSMAM
GITVU,N065.01.15.460,E024.59.42.200,GITVU
ADKIN,N064.50.17.870,E025.42.41.880,ADKIN
line1 =
N65.08643, E24.78604
N65.07397, E24.65117
N65.04287, E24.57656
N64.97856, E24.57861
N64.95781, E24.69893
N64.99102, E24.84824
N65.02627, E24.89180
N65.03872, E24.99756
N65.05532, E24.97061
N65.08643, E24.78604
line2 =
N65.80654, E22.62031
N65.87095, E22.74658
N65.78647, E22.91934
N65.73535, E23.10234
N65.74990, E23.15459
N65.78613, E23.22109
N65.80435, E23.41836
N65.80532, E23.59209
N65.82852, E23.69141
N65.78223, E23.89053
N65.80527, E24.15547
N65.81235, E24.23750
N65.78047, E24.40430
N65.82202, E24.53262
N65.85835, E24.59160
N65.85918, E24.62803
N65.83169, E24.62324
N65.75713, E24.58154
N65.67070, E24.67490
N65.65640, E24.76426
N65.66035, E24.83936
N65.54629, E25.24180
N65.47925, E25.34785
N65.35273, E25.30791
N65.24321, E25.29785
N65.14326, E25.25586
N65.09863, E25.34023
N65.06514, E25.36230
N65.00947, E25.37266
N64.98428, E25.27109
N64.95103, E25.22803
N64.91641, E25.28076
N64.86035, E25.28818
N64.85347, E25.21426
N64.87520, E25.13428
N64.88403, E24.94219
N64.85210, E24.74756
N64.80630, E24.65762
N64.80103, E24.55791
N64.73867, E24.53018
N64.68013, E24.44063
N64.51528, E24.27832
N64.38599, E24.02227
N64.27412, E23.92480
N64.25825, E23.86143
N64.13418, E23.65293
N64.04092, E23.59893
N64.03447, E23.49395
line3 =
N64.39116, E26.77988
N64.41499, E26.81465
N64.44038, E26.83086
N64.46948, E26.81387
N64.50542, E26.82676
N64.52998, E26.86611
N64.52329, E27.11182
N64.49668, E27.21367
N64.41392, E27.21729
N64.36929, E27.26162
N64.33042, E27.36543
N64.33906, E27.46914
N64.38047, E27.57822
N64.39668, E27.72695
N64.38135, E27.92500
N64.33325, E27.91309
N64.30674, E27.92969
N64.30854, E27.88252
N64.30405, E27.80059
N64.28174, E27.73779
N64.24468, E27.76465
N64.23281, E27.85918
N64.20488, E27.94014
N64.17769, E28.05762
line4 =
N64.12119, E28.07334
N64.12808, E28.00947
N64.14478, E27.92891
N64.22480, E27.65264
N64.27446, E27.56240
N64.26958, E27.50645
N64.25049, E27.48115
N64.22979, E27.42070
N64.20918, E27.32285
N64.17339, E27.28223
N64.13071, E27.28750
N64.12036, E27.25850
N64.15791, E27.20010
N64.20088, E27.07324
N64.23848, E26.94248
N64.27778, E26.92070
N64.36162, E26.79297
N64.39116, E26.77988
N64.39116, E26.77988
N64.39116, E26.77988
line5 =
N65.91210, E24.71056
N65.85918, E24.62799
[airport1]
name = Oulu Airport
code = EFOU
runways =
rwy1, 12, N64.9358, E25.3319, 121.0, 8205, 0, 0, 47
sids=
MIKNU
IXONO
UGMOR
ABKEM
## name, position, <pronunciation>
airlines =
FIN, 3, A320, FINNAIR, SUVIB
SAS, 3, A320, Scandinavian, IXONO
# you may also give just the name of a beacon from the beacon list
entrypoints =
150,SUVIB
210,IXONO
100,ABKEM
290,XEVAP
[departure1]
runway = rwy1
route1 =
MIKNU1A, MIKNU one alpha
N064.53.39.380,E025.29.40.240
N064.26.39.000,E025.26.14.000
route2 =
IXONO1A, IXONO one alpha
N064.53.39.380,E025.29.40.240
N064.49.23.300,E025.23.37.340
N064.35.30.000,E024.41.07.000
route3 =
ABKEM1A, ABKEM one alpha
N064.53.39.380,E025.29.40.240
N064.28.55.000,E025.48.41.000
route4 =
UGMOR1A, UGMOR one alpha
N064.53.39.380,E025.29.40.240
N064.39.40.000,E026.08.30.000
route5 =
XEVAP1A, XEVAP one alpha
N064.53.39.380,E025.29.40.240
N064.49.23.300,E025.23.37.340
N064.50.13.000,E024.18.36.000
[approach1]
runway = rwy1
beacon = SUVIB
route1 =
369
N64.25.55.00,E25.07.44.000
N064.56.58.180,E024.53.42.380
12, 2300, 210
[approach2]
runway = rwy1
beacon = IXONO
route1 =
004
N064.35.30.000,E024.41.07.000
N064.56.58.180,E024.53.42.380
12, 2300, 210
[approach3]
runway = rwy1
beacon = XEVAP
route1 =
055
N064.50.13.000,E024.18.36.000
N064.56.58.180,E024.53.42.380
12, 2300, 210
[approach4]
runway = rwy1
beacon = ABKEM
route1 =
310
N064.28.55.000,E025.48.41.000
N064.56.58.180,E024.53.42.380
12, 2300, 210
[approach5]
runway = rwy1,rev
beacon = SUVIB
route1 =
021
N64.25.55.00,E25.07.44.000
N064.46.02.320,E025.36.37.670
10, 2300, 210
[approach6]
runway = rwy1,rev
beacon = IXONO
route1 =
056
N064.35.30.000,E024.41.07.000
N064.46.02.320,E025.36.37.670
10, 2300, 210
[approach7]
runway = rwy1,rev
beacon = XEVAP
route1 =
087
N064.50.13.000,E024.18.36.000
N064.46.02.320,E025.36.37.670
10, 2300, 210
[approach8]
runway = rwy1,rev
beacon = ABKEM
route1 =
333
N064.28.55.000,E025.48.41.000
N064.46.02.320,E025.36.37.670
10, 2300, 210
[approach9]
runway = rwy1,rev
beacon = OSMAM
route1 =
021
N064.46.02.320,E025.36.37.670
10, 2300, 210
##############################################################
[configurations]
##############################################################
config1 =
0, rwy1, landstart
config2 =
0, rwy1, landstartrev
## score, identifier, usage, <offsetheading>, <nosid>
# score is the score (skill) at which the runway will be activated
# identifier is a unique runway name specified earlier
# usage is a string (without spaces) that may contain these words: start, land, rev, int, track
# where rev means reversed use (opposite direction), int means intersection departure (takeoffs begin 30% down the rwy), track means backtrack after landing
# offsetheading means planes will fly a specific heading just after takeoff (especially useful for allowing parallel takeoffs with divergent climbout headings)
# nosid option means planes will depart on the given offsetheading, with SID mode disabled
# when rwy configurations are omited, two configs are automatically created, one for each rwy direction, with all runways active
+7
View File
@@ -0,0 +1,7 @@
Oulu Airport located in northern finland
most flights are from stockholm/helsinki
# Already Working
- sids to the south
- stars from the south
# wip sids and stars from the north(rarely used cause all traffic to the airport is from the south)
+54
View File
@@ -0,0 +1,54 @@
# Helsinki airport
helsinki airport has 3 runways most time of the time they use 1-2 runways
most common configurations
- 22r departures 15 arrival
- 22r departures 22l arrival
- 22r departures parallel arrivals
- 15 departures and arrivals
- 04r departures and 04l for arrivals
- 04r departures and parallel arrivals
(33 is rarely used for departures or arrival but its used when wind is about 310 to 360 degrees at 15 knots or higher)
# best flows below
# runway 15
lakut arrivals leave on a heading 075 from lakut
lusep arrivals leave on a heading 165 from lusep
intor arrivals leave on a heading 360 from intor
arvep arrivals leave on a heading 300 from arvep
divam arrivals leave on a heading 055 from divam
ropam arrivals leave on a heading 335 from ropam
# runway 22l
lakut arrivals leave on a heading 075 from lakut
lusep arrivals leave on a heading 165 from lusep
intor arrivals leave on a heading 360 from intor
arvep arrivals leave on a heading 300 from arvep
divam arrivals leave on a heading 055 from divam
ropam arrivals leave on a heading 335 from ropam
# runway 04l
lakut arrivals leave on a heading 130 from lakut
lusep arrivals leave on a heading 195 from lusep
intor arrivals leave on a heading 295 from intor
arvep arrivals leave on a heading 300 from arvep
divam arrivals leave on a heading 065 from divam
ropam arrivals leave on a heading 255 from ropam
# parallels
vector some to 22l and some to 22r or 04l and 04r good luck
# airlines
- finnair
- norwegian
- sas
- aeroflot
- japan airlines
- flydubai
- british airways
- tap air portugal
- lufthansa
- china southern
- klm
- transavia
+109 -11
View File
@@ -1,10 +1,13 @@
# KLAX Version 1.3 by James Gardner
# KLAX Version 1.4 by James Gardner
[airspace]
radius = 40
radius = 60
elevation = 125
usa = true
transition = 18001
transition = 18000
descendaltitude = 14000
ceiling = 18000
above = 22000
center = N33.94250107, W118.4079971
magneticvar = 12.466
beacons =
@@ -31,6 +34,12 @@ beacons =
RAL, N33.95200, W117.44900, 0, Riverside
GWF, N34.73870, W118.21700, 0, Gen William J Fox
OCN, N33.24060, W117.41800, 0, Oceanside
CRCUS, N34.0732027778, W117.498438889, 0, Circus
IRNMN, N34.2557111111, W118.894047222, 0, Ironman
RUKKI, N33.8980555556, W119.433055556, 0, Rukki
DSNEE, N33.8181888889, W117.447238889, 0, Disney
ROKKR, N34.5450333333, W119.07, 0, Rocker
JANNY, N34.5662388889, W118.356219444, 0, Janny
line1 =
N33.28203, W119.52515
@@ -100,8 +109,8 @@ runways =
rwy4, 07R, N33.9338, W118.419, 83.0, 11096, 0, 0, 118
entrypoints =
300
030, emt
080, CRCUS
320, IRNMN
[airport2]
name = Long Beach Daugherty Field Airport
@@ -114,9 +123,9 @@ runways =
climbaltitude = 7000
entrypoints =
330
030
300
300, RUKKI
60, DSNEE
90, DSNEE
120
airlines =
@@ -135,9 +144,8 @@ runways =
climbaltitude = 9000
entrypoints =
330
030
300
50, PMD
330, ROKKR
120
airlines =
@@ -266,6 +274,96 @@ route2 =
elmoo
N34.182333, W118.350167
N34.0985, W118.081258
# KLAX ANJLL4
[approach1]
runway = rwy4, rev
beacon = CRCUS
route1 =
241
N34.0732027778, W117.498438889, 12000, 270
N34.0068416667, W117.682797222, 10000
N34.0001833333, W117.75175, 9000, 250
N33.9935611111, W117.819316667, 8000, 210
N33.9860194444, W117.896886111, 5500
N33.9684527778, W118.074563889, 3500
13.1, 3500, 200
# KLAX IRNMN
[approach2]
runway = rwy1, rev
beacon = IRNMN
route1 =
131
N34.2557111111, W118.894047222, 12000
N34.1650805556, W118.810819444, 12000, 250
N34.0296472222, W118.663666667, 9000, 240
N34.0193194444, W118.554077778, 8000
N34.0101777778, W118.457105556, 7000, 210
N34.027175, W118.358394444, 6000
N34.0332611111, W118.298680556
N34.047, W118.119
15, 4500, 200
# KLGB BAUBB2
[approach3]
runway = rwy9, rev
beacon = RUKKI
route1 =
107
N33.8980555556, W119.433055556, 21000
N33.5716666667, W118.774752778, 11000
N33.5216666667, W118.465666667, 9000
N33.5182222222, W118.332027778, 7000
N33.5675, W118.178, 5000
N33.5996333333, W118.077822222, 4000
N33.6273194444, W118.055497222
8, 2500, 200
# KLGB DSNEE4
[approach4]
runway = rwy9, rev
beacon = DSNEE
route1 =
230
N33.8181888889, W117.447238889, 8000, 220
N33.763775, W117.62555, 7200
N33.7497833333, W117.672352778, 6500
N33.6968222222, W117.850591667, 4000
N33.6742388889, W117.925777778
10, 3000, 200
# KBUR ROKKR2
[approach5]
runway = rwy5
beacon = ROKKR
route1 =
120
N34.5450333333, W119.07, 11000, 250
N34.4416388889, W118.975211111, 9000
N34.3721777778, W118.906430556, 8000
N34.2671833333, W118.791361111, 7000
8, 3500, 200
# KBUR JANNY5
[approach6]
runway = rwy5
beacon = PMD
route1 =
251
N34.63140, W118.06400, 13000
N34.5662388889, W118.356219444, 8000
N34.5491666667, W118.432222222
N34.4807138889, W118.486588889, 7000
N34.3678277778, W118.574183333
N34.2671833333, W118.791361111, 6000
8, 3500, 200
[configurations]
config1 =
+6 -6
View File
@@ -1,15 +1,15 @@
# Los Angeles (Socal Area) For Endless ATC
This implements Los Angeles International Airport (KLAX), Bob Hope Airport (KBUR), Long Beach (Daugherty Field) Airport (KLGB), and Hawthorne Municipal Airport (KHHR) into the [Endless ATC](https://steamcommunity.com/app/666610) game.
This implements Los Angeles International Airport (KLAX), Bob Hope Airport (KBUR), Long Beach (Daugherty Field) Airport (KLGB), ~~and Hawthorne Municipal Airport (KHHR)~~ (Removed in 1.3) into the [Endless ATC](https://steamcommunity.com/app/666610) game.
## Features
### Implemented
* Arrivals and departures at KLAX, KBUR, KLGB and KHHR.
* Departures thats (somewhat) mirror the actual SID's.
* Arrivals and departures at KLAX, KBUR, KLGB ~~and KHHR~~ (Removed in 1.3).
* Custom traffic to match GA and Airlines at KBUR and KLGB.
* Custom SIDS that match the departure path perfectly.
* Custom STARS that replicate arrivals for all airports.
### Planned
@@ -21,8 +21,7 @@ This implements Los Angeles International Airport (KLAX), Bob Hope Airport (KBUR
Due to the limitations of [Endless ATC](https://steamcommunity.com/app/666610) there are many aspects that are not particuarly accurate.
* Only around 50% of SIDS are included for KBUR and KLGB, and only around 20% are included for KLAX (Los Angeles has 23 SID's).
* No STARS since there is currently no way to model this.
* Only around 50% of SIDS are included for KBUR and KLGB, and only around 20% are included for KLAX (Los Angeles has 23 SID's). The majority of these are unused or extremly uncommon. I did not see a point in implementing them since there is no way to prioritize certian SIDs over others.
## Credits
@@ -30,6 +29,7 @@ Thanks to Startgrid for this amazing game! Without him this wouldn't be happenin
## Changelog
* 1.4 - 3/17/2021 - Custom STARS, updated entrypoints.
* 1.3 - 10/31/2020 - Custom SIDS, updated entrypoints.
* 1.2 - 7/31/2020 - Added KHHR support for increased GA traffic.
* 1.2 - 7/31/2020 - ~~Added KHHR support for increased GA traffic.~~ (Removed in 1.3)
* 1.1 - 7/28/2020 - Initial Release. Includes KLAX, KBUR, and KLGB.
+175
View File
@@ -0,0 +1,175 @@
# KSAN Version 1.0 by James Gardner
[airspace]
radius = 30
elevation = 17
usa = true
transition = 18000
descendaltitude = 9000
ceiling = 10000
above = 18000
center = N32.936006165, W117.090002441
magneticvar = 12.349
beacons =
AN, N32.73990, W117.21600, 0, Boing
NZY, N32.70260, W117.21600, 0, North Island
MZB, N32.78220, W117.22500, 0, Mission Bay
MY, N32.77990, W117.04500, 0, Deoro
NKX, N32.86970, W117.15500, 0, Miramar
NRS, N32.56420, W117.11000, 0, Imperial Beach
PGY, N32.61030, W116.97900, 0, Poggi
TIJ, N32.54040, W116.95300, 0, Tijuana
OCN, N33.24060, W117.41800, 0, Oceanside
NFG, N33.27440, W117.38700, 0, Camp Pendleton
JLI, N33.14050, W116.58600, 0, Julian
HSKER, N32.8444444444, W116.606666667, 0, HSKER
COMIX, N33.1374361111, W117.483794444, 0, COMIX
line1 =
N32.95991, W118.50747
N33.03267, W118.55708
line2 =
N32.93560, W118.52891
N32.83892, W118.47319
N32.81851, W118.40859
N32.82759, W118.35039
N32.84946, W118.38320
N32.95991, W118.50747
line3 =
N33.35713, W118.46934
N33.31709, W118.44629
N33.32124, W118.37021
N33.31211, W118.29746
N33.38574, W118.34795
N33.41509, W118.39170
N33.47710, W118.55483
N33.46416, W118.56943
N33.43706, W118.56333
N33.43198, W118.55942
N33.42700, W118.50732
N33.41279, W118.49204
N33.35713, W118.46934
line4 =
N33.72217, W118.08052
N33.61963, W117.95210
N33.53848, W117.78853
N33.29551, W117.46743
N33.10005, W117.31885
N32.93887, W117.26299
N32.87339, W117.25576
N32.80625, W117.27070
N32.66401, W117.24346
N32.68789, W117.18374
N32.64917, W117.13740
N32.53975, W117.13047
N32.53335, W117.12827
N32.34360, W117.06313
N32.30503, W117.03477
N32.19854, W116.91367
N31.99736, W116.84800
N31.85107, W116.62080
N31.75801, W116.62388
N31.74033, W116.65210
N31.74365, W116.70171
N31.73457, W116.72207
line5 =
N33.30254, W115.91133
N33.43262, W116.06172
N33.50210, W116.05347
N33.52192, W116.01045
N33.51943, W115.94844
N33.45166, W115.88394
[airport1]
name = San Diego International Airport
code = KSAN
runways =
rwy1, 09, N32.7371, W117.204, 106.0, 9401, 700, 1810, 14
entrypoints =
060, HSKER
320, COMIX
airlines =
swa, 5, b737/b738, Southwest
aal, 3, a318/b738/B763, American
jbu, 2, a320, Jet Blue
ups, 1, b763, UPS
fdx, 1, b763, Fedex
xe, 1, e135, JetSuite
n-123ab, 1, c172/p28/e13bj/be35/be20/c152
[departure1]
runway = rwy1, rev
route1 =
cward2, seaward2
N32.7980083333, W117.315969444
N33.0634555556, W117.729230556
N33.3840138889, W117.909272222
route2 =
brdr7, border7
N32.7545972222, W117.276536111
N32.702833, W117.295667
N32.6253583333, W117.239327778
N32.61030, W116.97900
N32.6311166667, W116.769919444
N33.14050, W116.58600
route3 =
padrz2, padrez2
N32.7980083333, W117.315969444
N33.0634555556, W117.729230556
N33.1938888889, W117.861944444
route4 =
zzooo2, zoo2
N32.7545972222, W117.276536111
N32.6314555556, W117.245827778
N32.6018333333, W116.916133333
N32.630225, W116.7732
N33.0094138889, W116.587447222
N33.3993611111, W116.383111111
route5 =
zzooo2, zoo2
N32.7545972222, W117.276536111
N32.6314555556, W117.245827778
N32.6018333333, W116.916133333
N32.630225, W116.7732
N32.7012555556, W116.031180556
[approach1]
runway = rwy1, rev
beacon = HSKER
route1 =
195
N32.8444444444, W116.606666667, 8700, 270
N32.7741083333, W116.677463889, 8000
N32.7399166667, W116.749694444, 6100
N32.7075, W116.818055556, 6000
N32.6882222222, W116.879861111, 5000, 210
14.2, 4000, 200
[approach2]
runway = rwy1, rev
beacon = COMIX
route1 =
127
N33.1374361111, W117.483794444, 12000
N33.0505555556, W117.411388889
N32.9183333333, W117.300555556, 9000, 230
N32.8118, W117.212030556, 7000
N32.7788722222, W117.064397222, 6000, 210
N32.7388722222, W116.875, 4000
14.2, 4000, 200
[configurations]
config1 =
0, rwy1, landstartrev
+36
View File
@@ -0,0 +1,36 @@
# SOCAL West (San Diego) For Endless ATC
This is my rendition of San Diego TRACON, also known as SOCAL West (it is a SOCAL facility). San Diego is the busiest single runway airport in the world, making it one heck of a challenge for approach. I will warn you now, this is a seriously difficult custom airport. You better be up for the challange! Yes I know the only ILS approach is on runway 9, but that is really never used except for extreme weather situations. Runway 27 does have a localizer approach though, and so you will just have to use your imagination and pretend that the aircraft are on a localizer and not an ILS.
## Guide
I figured I should really add a basic guide to how the airport operates so you can really get the most out of this custom airport without ripping your head out.
Departures are not a huge concern, CWARD and PADRZ go the same direction and are almost identical, BORDER and ZOOM are pretty similar. When an arrival pops up, I ususally just increase the alitude immedietly to get it out the way. Your arrival and departure flows shouldnt really need to mix.
Arrivals are where things get a little more tricky. For aircraft on the LUCKI1 STAR (from the east - HSKER is the fix) I normally just leave them. It is quite rare that I actually take them off the arrival. The COMIX2 STAR (from the north-west down the coast - COMIX fix) is where I spend most of my energy managing. If you look at the actual chart for the COMIX2 arrival you will notice the SID ends with a radar vector north and parralel to the localizer in the opposite direction. Approach would then provide radar vectors to sequence them in on the localizer. This isnt a thing in EndlessATC however, and so I have the approach run parralel, and then turn to join the localizer at the same point as the LUCKI1 arrivals. For 99% of my COMIX2 arrivals I drop them down to 2000 - 3000 ft and turn them onto the localizer way earlier to sequence them ahead / behind my LUCKI1 arrivals that should already be established. Its really a challenge and takes a lot of focus.
Hope this helps a little, good luck with this one! I tend to manually keep the skill at about 7 - 8 or else it just gets unmanageable.
## Features
### Implemented
* Runway 27 Implementation
* CWARD2, BORDER7, PADRZ2, and ZOOM2 SID Implementation
* COMIX2 and LUCKI1 STAR Implementation
* Custom Airline Implementation
### To Do
* Additional SIDS / STARS
* Airspace Boundries
* Secondary Airports
## Changelog
* 3/16/2021 - KSAN Version 1.0:
* Runway 27 Implementation
* CWARD2, BORDER7, PADRZ2, and ZOOM2 SID Implementation
* COMIX2 and LUCKI1 STAR Implementation
* Custom Airline Implentation
+2225
View File
File diff suppressed because it is too large Load Diff
+6
View File
@@ -0,0 +1,6 @@
# San Fransico International Airport
SFOW vector patterns:
![SFOW Vector pattern](https://camo.githubusercontent.com/224a3bb8731baaaed28e03d53cd8a3aa709e4268dc2b86163cba9e47cbdb8b79/68747470733a2f2f7777772e73706f7474657267756964652e6e65742f77702d636f6e74656e742f75706c6f6164732f323031382f30332f776573742d706c616e2e6a7067)
In this version of SFO, all SFOW SIDs are implemented as well as STARs. OAKW and SJCW STARs are also implemented.
+3160
View File
File diff suppressed because it is too large Load Diff
+118
View File
@@ -0,0 +1,118 @@
# D01 TRACON (Version 1.0)
This is a recreation of the real-world FAA facility D01 for [Endless ATC](https://steamcommunity.com/app/666610).
The D01 TRACON in the real-world covers Denver International Airport (KDEN) and its numerous satellites, which include
Centennial (KAPA), Rocky Mountain Metro (KBJC), Northern Colorado Airport (KFNL), and the Colorado Air and Space Port (KCFO).
These satellite airports are not currently implemented in this rendition of the D01, however, they may be in the future.
D01 also covers Grand Junction (KGJT) and Pueblo (KPUB) as a detached section of the TRACON, however, this is not simulated in
this rendition due to the sheer size the TRACON would have to be.
All data in this is based on the FAA's data (AIRAC 2102) which it provides to the public for free. Minimum altitudes are based off
the real-world D01 MVA map (also provided to the public by the FAA).
## Airports
### `KDEN` Denver International Airport
Denver International (also known as DIA) is the largest airport in the U.S., with 4 north-south parallel runways and 2
east-west parallel runways. Denver is surrounded by the Rocky Mountains to the west, presenting an interesting challenge
when vectoring aircraft to and from the west. DIA is a hub airport for Frontier Airlines and United Airlines, dominating much of the traffic
at DIA. DIA is also a focus city for Southwest, and is serviced by every major U.S. airline. While KDEN is located underneath
Class B airspace in real life, this is not implemented.
#### STARs
In this version of KDEN, 4 STARs are implemented:
<ul>
<li>SSKII2 (southwest gate)</li>
<li>FLATI2 (northwest gate)</li>
<li>CLASH3 (southwest gate)</li>
<li>AALLE2 (northeast gate)</li>
</ul>
All aircraft will arrive inbound direct their gate. From there, you can click on the `APP` button. In order to select a
different runway transition, tap on the `APP` button again until the correct runway transition is selected.
##### A note on vector segments
In the real world, many of these STAR segments end on a vector track (airplanes continue to fly a specified heading).
However, this is not possible to implement in Endless ATC, so it is instead implemented by a 20 mile extension past the
final waypoint. You must vector these planes to final, or they may present a conflict later on if you forget about them!
You can recognize these as the turn-to-final is one greater than 90 degrees.
#### SIDs
In this version of KDEN, all RNAV SIDs are implemented that are RNAV-off-the-ground. Many of the SIDs at KDEN are vector-based
if the aircraft is taking off in the opposite direction of the departure gate (i.e. an EMMYS7 departure off of runway 25). For this reason, departures
in this rendition are a little easier than real life, but are still very interesting!
#### Runway Configurations
All runway configurations used at KDEN are implemented. Besides each runway configuration is a number called the "AAR."
This stands for "Arrival Acceptance Rate," and signifies how much traffic KDEN can accept in any given hour. Denver has the
highest AAR of any airport in the world!
__South Calm (Default Configuration)__ (114 AAR)
Arrive: 16L, 16R, 17R\
Depart: 8, 25, 17L\
Winds: 080-259 degrees, less than 10 kts
__North Calm__ (114 AAR)
Arrive: 34R, 35L, 35R\
Depart: 8, 25, 34L\
Winds: 260-079 degrees, less than 10 kts
__Northwest__ (152 AAR)
Arrive: 26, 34R, 35L, 35R\
Depart: 25, 34L\
Winds: 260-349 degrees, 11-25 kts
__Southwest__ (152 AAR)
Arrive: 26, 16L, 16R, 17R\
Depart: 25, 17L\
Winds: 170-259 degrees, 11-25 kts
__Southeast__ (152 AAR)
Arrive: 7, 16L, 16R, 17R\
Depart: 8, 17L\
Winds: 080-169 degrees, 11-25 kts
__Northeast__ (152 AAR)
Arrive: 7, 34R, 35L, 35R\
Depart: 8, 34L\
Winds: 350-079 degrees, 11-25 kts
__North All__ (114 AAR)
Arrive: 34R, 35L, 35R\
Depart: 34L, 34R\
Winds: 300-049 degrees, greater than 26 kts
__South All__ (114 AAR)
Arrive: 16R, 17L, 17R\
Depart: 16L, 17L\
Winds: 120-219 degrees, greater than 26 kts
__West All__ (48 AAR)
Arrive: 26, 25\
Depart: 25\
Winds: 220-299 degrees, greater than 26 kts
__East All__ (48 AAR)
Arrive: 7, 8\
Depart: 8\
Winds: 050-119 degrees, greater than 26 kts
__Honey Badger (Arrival Priority)__ (152 AAR)
Arrive: 16L, 16R, 35L, 35R\
Depart: 8, 25\
This configuration provides the highest arrival rates
__Honey Badger (Departure Priority)__ (48 AAR)
Arrive: 7, 26\
Depart: 34L, 34R, 17L, 17R\
This configuration provides the highest departure rates
+608
View File
@@ -0,0 +1,608 @@
[airspace]
radius = 55
zoom = 50.0
elevation = 13
floor = 1500
descendaltitude = 9000
ceiling = 10000
above = 11000
transitionaltitude = 18000
speedrestriction = 5, 250
usa = true
metric = false
separation = 3
center = N41.7243425, W71.4296411
magneticvar = -14.1
beacons =
orw, N41.5564036, W71.9993533, 0, norwich
pvd, N41.7243425, W71.4296411, 0, providence
sey, N41.1674361, W71.5760861, 0, sandy point
put, N41.9554603, W71.8440947, 0, putnam
gon, N41.3304019, W72.0519847, 0, groton
mvy, N41.3962147, W70.6127158, 0, martha's vineyard
hto, N40.9189958, W72.3167044, 0, hampton
jordn, N41.03.16.92, W071.54.52.66, 0, jordan
lafay, N41.27.45.22, W071.43.16.43, 0, luh fay
boundary =
N42.05.52.55, W71.28.52.50
N42.03.10.48, W71.40.41.86
N41.59.41.55, W71.55.19.85
N41.48.05.86, W72.03.37.84
N41.46.09.87, W72.04.36.02
N41.36.21.35, W72.09.04.81
N41.34.11.28, W72.14.28.43
N41.28.57.71, W72.27.47.99
N41.20.05.61, W72.21.59.18
N41.07.26.74, W72.14.55.67
N41.04.34.77, W72.11.18.19
N41.02.57.54, W72.09.25.31
N40.48.40.61, W71.54.24.11
N40.45.56.70, W71.51.34.50
N40.57.48.09, W71.01.37.81
N41.07.34.18, W71.01.35.80
N41.26.00.68, W71.01.41.01
N41.31.06.44, W70.53.43.49
N41.33.45.06, W70.49.57.91
N41.42.05.13, W70.47.04.77
N41.47.48.80, W70.41.54.09
N41.54.17.74, W70.52.47.64
N41.53.30.57, W70.55.20.27
N41.54.09.74, W71.02.43.09
N42.00.52.05, W71.21.39.07
line1 =
N41.01504, W72.10190
N41.05146, W72.15127
N41.04678, W72.18389
N41.02407, W72.28745
N40.97217, W72.40898
N40.93379, W72.46133
N40.91479, W72.51660
N40.92134, W72.58086
N40.98604, W72.50977
N41.03853, W72.42739
N41.15303, W72.27412
N41.12554, W72.37256
N41.02700, W72.54365
N40.99185, W72.62510
N40.97207, W72.82881
line2 =
N40.77783, W72.76284
N40.79062, W72.67607
N40.82578, W72.55557
N40.87539, W72.42808
N40.89414, W72.33896
N41.06069, W71.90322
N41.04429, W72.00396
N41.01504, W72.10190
line3 =
N41.46675, W71.39307
N41.48525, W71.36533
N41.54229, W71.35449
N41.57183, W71.36431
N41.57056, W71.38398
N41.51504, W71.40342
N41.46675, W71.39307
line4 =
N41.44854, W70.67373
N41.37358, W70.76050
N41.35898, W70.82920
N41.32744, W70.78530
N41.37632, W70.50991
N41.41479, W70.52534
N41.45723, W70.61602
N41.44854, W70.67373
line5 =
N41.46938, W71.34624
N41.46460, W71.29092
N41.49194, W71.24141
N41.65430, W71.23203
N41.63823, W71.26445
N41.62002, W71.28018
N41.56050, W71.30747
N41.50630, W71.31816
N41.46938, W71.34624
line6 =
N41.32847, W70.06270
N41.31758, W70.08662
N41.28633, W70.23306
N41.24946, W70.05508
N41.26558, W69.97793
N41.29863, W69.98560
N41.39746, W70.04121
N41.37441, W70.04360
N41.32847, W70.06270
line7 =
N41.28516, W72.92471
N41.26587, W72.84717
N41.27578, W72.47939
N41.31216, W72.37104
N41.29165, W72.26528
N41.32612, W72.07388
N41.34106, W71.92993
N41.33550, W71.84238
N41.33091, W71.76929
N41.37896, W71.52285
N41.45371, W71.44380
N41.63330, W71.42656
N41.70273, W71.36367
N41.79531, W71.39014
N41.78623, W71.35918
N41.76226, W71.33062
N41.71987, W71.31074
N41.68125, W71.27109
N41.70654, W71.23379
N41.74404, W71.17832
N41.74570, W71.14873
N41.64111, W71.20430
N41.51641, W71.18843
N41.48940, W71.16855
N41.53809, W71.07979
N41.54854, W70.97422
N41.71484, W70.70112
N41.71011, W70.66646
N41.60811, W70.65537
N41.55830, W70.66807
N41.53423, W70.65713
N41.58247, W70.48135
N41.62690, W70.40469
N41.67734, W70.05952
N41.68398, W69.98677
N41.67715, W69.94863
N41.71045, W69.93384
N41.80786, W69.94160
N41.96128, W69.97788
N42.07832, W70.10894
N42.09712, W70.15986
N42.10103, W70.20352
N42.09121, W70.24106
N42.07104, W70.23652
N42.03511, W70.19624
N42.06279, W70.17256
N42.03013, W70.11025
N41.97969, W70.09004
N41.87231, W70.00610
N41.82617, W70.00142
N41.76987, W70.13501
N41.72896, W70.29546
N41.75728, W70.42666
N41.80332, W70.51470
N41.93862, W70.54893
N41.98706, W70.65615
N42.02158, W70.64521
N42.04043, W70.61768
N42.22886, W70.73828
N42.26494, W70.81797
N42.30000, W70.99673
N42.33110, W71.04619
N42.43198, W70.93047
N42.49663, W70.87090
N42.55259, W70.83115
N42.57036, W70.75186
N42.61665, W70.66143
N42.62324, W70.61294
N42.64971, W70.60415
N42.67178, W70.62397
N42.67397, W70.65483
N42.66460, W70.69687
N42.66929, W70.73569
N42.72124, W70.78135
[area1]
shape = polygon
altitude = 0
labelpos = N0.0, W0.0
points =
N42.03.10.48, W71.40.41.86
N42.00.35.84, W71.41.12.06
N41.50.42.31, W71.30.30.25
N41.46.41.57, W71.37.04.68
N41.46.09.87, W72.04.36.02
N41.48.05.86, W72.03.37.84
N41.59.41.55, W71.55.19.85
[area2]
shape = circle
altitude = 2100
name = X
radius = 1
labelpos = N41.52.54.07, W71.48.13.30
position = N0.0, W0.0
[area3]
shape = polygon
altitude = 0
labelpos = N0.0, W0.0
points =
N41.26.00.68, W71.01.41.01
N41.31.06.44, W70.53.43.49
N41.33.45.06, W70.49.57.91
N41.42.05.13, W70.47.04.77
N41.47.48.80, W70.41.54.09
N41.54.17.74, W70.52.47.64
N41.53.30.57, W70.55.20.27
N41.54.09.74, W71.02.43.09
N42.00.52.05, W71.21.39.07
N42.05.52.55, W71.28.52.50
N42.03.10.48, W71.40.41.86
N42.00.35.84, W71.41.12.06
N41.50.42.31, W71.30.30.25
N41.37.55.38, W71.01.06.94
N41.26.00.68, W71.01.41.01
[area4]
shape = circle
altitude = 1900
name = X
radius = 1
labelpos = N41.44.31.91, W70.54.40.05
position = N0.0, W0.0
[area5]
shape = polygon
altitude = 0
labelpos = N0.0, W0.0
points =
N41.46.09.87, W72.04.36.02
N41.36.21.35, W72.09.04.81
N41.34.11.28, W72.14.28.43
N41.20.46.46, W72.19.05.95
N41.17.36.80, W72.17.34.26
N41.20.01.55, W72.10.11.89
N41.22.29.41, W71.25.29.04
N41.38.51.06, W71.25.29.60
N41.36.52.97, W71.19.17.43
N41.36.30.33, W71.19.11.80
N41.35.54.25, W71.18.54.37
N41.35.23.43, W71.18.34.52
N41.35.01.52, W71.18.17.01
N41.34.20.18, W71.17.33.84
N41.33.56.96, W71.17.02.78
N41.33.22.05, W71.15.59.36
N41.33.05.77, W71.15.19.41
N41.32.54.52, W71.14.42.09
N41.32.44.45, W71.13.57.16
N41.32.38.67, W71.13.14.00
N41.32.35.78, W71.12.36.56
N41.32.36.04, W71.11.49.00
N41.32.40.81, W71.10.55.26
N41.32.49.37, W71.10.10.77
N41.32.58.29, W71.09.33.60
N41.37.55.38, W71.01.06.94
N41.50.42.31, W71.30.30.25
N41.46.41.57, W71.37.04.68
[area6]
shape = circle
altitude = 2000
name = X
radius = 1
labelpos = N41.32.22.46, W71.45.32.46
position = N0.0, W0.0
[area7]
shape = circle
altitude = 0
labelpos = N0.0, W0.0
radius = 3.0
position = N41.24.55.25, W72.11.39.60
[area8]
shape = circle
altitude = 2500
name = X
radius = 1
labelpos = N41.25.12.39, W72.13.13.54
position = N0.0, W0.0
[area9]
shape = circle
altitude = 0
labelpos = N0.0, W0.0
radius = 3.0
position = N41.52.12.12, W71.17.40.72
[area10]
shape = circle
altitude = 2100
name = X
radius = 1
labelpos = N41.53.02.25, W71.19.55.57
position = N0.0, W0.0
[airport1]
name = Providence T.F. Green Airport
code = KPVD
climbaltitude = 4000
runways =
rwy5, 5, N41.710270, W71.437944, 32.2, 8700
rwy16, 16, N41.731669, W71.432184, 141.6, 6081, 565, 0
sids =
jumpr, N41.10.15.34, W071.14.49.50, jumper
put
entrypoints =
230, jordn
280, orw
airlines =
aal, 7, b738/a320, american, sw
jia, 10, crj7/crj9, blue streak, sw
dal, 5, b738/a321, delta, sw
jbu, 5, a320/a321, jet blue, sw
ups, 6, b752, u p s, sw
fdx, 6, b752, fed ex, sw
wig, 4, c208, wiggins, sw
aca, 6, a320, air canada, w
[airport2]
name = Groton-New London Airport
code = GN
runways =
rwy15gon, 15, N41.333120, W72.053016, 135.0, 4000
rwy5gon, 5, N41.325054, W72.048004, 34.0, 5000
traffic = 5
inboundbeacon = gon
airlines =
n-12345, 10, c750/c172/p28a/tbm8
sids =
sey
put
orw
mvy
hto
[airport3]
name = New Bedford Regional Airport
code = EW
runways =
rwy14ewb, 14, N41.680300, W70.963923, 128.5, 5000
rwy5ewb, 5, N41.671290, W70.964954, 38.4, 5400
traffic = 5
inboundbeacon = pvd
airlines =
n-12345, 10, c750/c172/p28a/tbm8
sids =
sey
put
orw
mvy
hto
[configurations]
config1 =
0, rwy5, landstart, 050, nosid
0, rwy16, landrev
0, rwy5ewb, landstart, 050, nosid
0, rwy5gon, landstart, 050, nosid
config2 =
0, rwy5, landstartrev, 230, nosid
0, rwy5ewb, landstartrev, 230, nosid
0, rwy5gon, landstartrev, 270, nosid
config3 =
0, rwy16, landstart, 160, nosid
0, rwy14ewb, landstart, 180, nosid
0, rwy15gon, landstartrev, 090, nosid
config4 =
0, rwy5, landstart, 050, nosid
0, rwy16, landrev
0, rwy14ewb, landrev
0, rwy15gon, landstartrev, 330, nosid
[approach1]
runway = rwy5
beacon = orw
route1 =
142
N41.5564036, W71.999353
N41.29.22.03, W071.48.01.95
N41.27.45.22, W071.43.16.43
end, 129
[approach2]
runway = rwy5, rev
beacon = orw
route1 =
142
N41.5564036, W71.9993533
N41.29.22.03, W071.48.01.95
N41.37.11.58, W071.39.09.45
N41.46.44.52, W071.30.42.26
N41.49.57.59, W071.27.59.91
end, 047
[approach3]
runway = rwy5
beacon = jordn
route1 =
081
N41.03.16.92, W071.54.52.66
N41.21.40.67, W071.25.27.20
end, 015
[approach4]
runway = rwy5, rev
beacon = jordn
route1 =
081
N41.03.16.92, W071.54.52.66
N41.21.40.67, W071.25.27.20
end, 015
[approach5]
runway = rwy5gon, rev
beacon = orw
route1 =
137
N41.5564036, W71.9993533
N41.30.08.10, W071.53.20.71, 2100
6.0, 2000, 250
[approach6]
runway = rwy5gon, rev
beacon = jogil, N41.30.08.10, W071.53.20.71, 0, joe gill
route1 =
228
N41.30.08.10, W071.53.20.71, 2100
6.0, 2000, 250
[approach7]
runway = rwy5gon, rev
beacon = lafay, N41.27.45.22, W071.43.16.43, 0, lafay
route1 =
302
N41.27.45.22, W071.43.16.43
N41.30.08.10, W071.53.20.71, 2100
6.0, 2000, 250
[approach8]
runway = rwy5gon, rev
beacon = pvd
route1 =
251
N41.43.25.46, W071.25.54.17
N41.30.08.10, W071.53.20.71, 2100
6.0, 2000, 250
[approach9]
runway = runway15gon, rev
beacon = jordn
route1 =
045
N41.03.16.92, W071.54.52.66
N41.09.47.61, W071.49.44.10, 2000
5.7, 1900, 250
[approach10]
runway = runway15gon, rev
beacon = sufok, N41.09.47.61, W071.49.44.10, 0, suh fock
route1 =
329
N41.09.47.61, W071.49.44.10, 2000
5.7, 1900, 250
[approach11]
runway = runway15gon, rev
beacon = sey
route1 =
283
N41.1674361, W71.5760861
N41.09.47.61, W071.49.44.10, 2000
5.7, 1900, 250
[approach12]
runway = rwy5ewb
beacon = bonni, N41.32.07.22, W071.06.30.45, 0, bonnie
route1 =
054
N41.32.07.22, W071.06.30.45, 2100
4.4, 1500, 250
[approach13]
runway = rwy5ewb
beacon = rodme, N41.27.00.56, W071.02.19.17, 0, rod me
route1 =
344
N41.27.00.56, W071.02.19.17
N41.32.07.22, W071.06.30.45, 2100
4.4, 1500, 250
[approach14]
runway = rwy5ewb
beacon = cepig, N41.34.00.30, W071.14.05.68, 0, sea pig
route1 =
124
N41.34.00.30, W071.14.05.68
N41.32.07.22, W071.06.30.45, 2100
4.4, 1500, 250
[approach15]
runway = rwy5ewb
beacon = pvd
route1 =
153
N41.43.25.46, W071.25.54.17
N41.34.00.30, W071.14.05.68
N41.32.07.22, W071.06.30.45, 2100
4.4, 1500, 250
[approach16]
runway = rwy14ewb
beacon = lafay
route1 =
072
N41.27.45.22, W071.43.16.43
N41.42.00.61, W071.14.53.39, 3200, 210
N41.47.30.24, W071.09.05.43
4.3, 1600, 210
[approach17]
runway = rwy14ewb
beacon = zisga, N41.42.00.61, W071.14.53.39, 0, zis gah
route1 =
054
N41.42.00.61, W071.14.53.39, 3200, 210
N41.47.30.24, W071.09.05.43
4.3, 1600, 210
[approach18]
runway = rwy14ewb
beacon = cirir, N41.47.30.24, W071.09.05.43, 0, cirir
route1 =
144
N41.47.30.24, W071.09.05.43, 3200
4.3, 1600, 250
[approach19]
runway = rwy14ewb
beacon = ogfig, OGFIG, 0, ogg fig
route1 =
234
N41.52.12.54, W071.04.06.39, 3200, 210
N41.47.30.24, W071.09.05.43
4.3, 1600, 210
[approach20]
runway = rwy16, rev
beacon = orw
route1 =
142
N41.5564036, W71.999353
N41.29.22.03, W071.48.01.95
N41.27.45.22, W071.43.16.43
end, 129
[approach21]
runway = rwy16
beacon = orw
route1 =
142
N41.5564036, W71.9993533
N41.29.22.03, W071.48.01.95
N41.37.11.58, W071.39.09.45
N41.46.44.52, W071.30.42.26
N41.49.57.59, W071.27.59.91
end, 047
+41
View File
@@ -0,0 +1,41 @@
# PVD ATCT/TRACON (Version 1.0)
This is a recreation of the real-world FAA facility PVD for [Endless ATC](https://steamcommunity.com/app/666610).
The PVD ATCT/TRACON in the real-world covers the Providence International Airport (KPVD) and its surrounding satellites,
New Bedford (KEWB) and Groton-New London (KGON).
All data in this is based on the FAA's data (AIRAC 2102) which it provides to the public for free. Minimum altitudes are based off
the real-world PVD MVA map (also provided to the public by the FAA).
## Airports
### `KPVD` T.F. Green International Airport
T. F. Green International Airport is a public international airport in Warwick, Rhode Island, United States, 6 miles
south of the state's capital and largest city of Providence. Opened in 1931, the airport was named for former Rhode Island
governor and longtime senator Theodore Francis Green. While KPVD is located underneath Class C airspace in real life,
this is not implemented.
### `KEWB` New Bedford Regional Airport
New Bedford Regional Airport is a Part 139 Commercial-Service Airport, municipally-owned and available for public use.
The airport is located three nautical miles northwest of the City of New Bedford, a city in Bristol County,
Massachusetts, United States.
### `KGON` Groton-New London Airport
GrotonNew London Airport is a state-owned public-use airport located three nautical miles southeast of the central
business district of Groton, a town in New London County, Connecticut, United States.
#### STARs
In this version of PVD, all 2 STARs are implemented:
<ul>
<li>WIPOR2 (at ORW)</li>
<li>JORDN2</li>
</ul>
All aircraft will arrive inbound direct their gate. From there, you can click on the `APP` button to put them on the
STAR transition.
##### A note on vector segments
On the JORDN2 arrival, all aircraft leave the final fix (MINNK) on a 015 heading regardless of the runway configuration.
In a land 16/23 config, aircraft will be on a right base for runway 23 on the WIPOR3 arrival. In the land 5/34 config, aircraft
will be put on a 10 mile left base for runway 5.
#### SIDs
There are no SIDs at PVD. All aircraft will leave the PVD airspace via PUT or JUMPR.
+351 -307
View File
@@ -1,307 +1,351 @@
# Custom airport file (experimental!)
# Save a copy of example.txt before editing it, and keep this file as a guide.
# On Windows, place the txt file in the /locations/ folder of the game.
# On android (4.4+), place the txt file in /Android/data/com.dirgtrats.endlessatc/files/.
# Copy, edit and use and share airport files at your own risk!
# This example file has lots of comments (#), to use it as a guide. Uncomment the 'code = ' item in the [airport1] section below to make the airport appear in-game.
# This file has several [sections] (but most are optional), namely:
# [airspace]: various general properties
# [airport1]: main airport
# [airport2]: optional secondary airports
# [area1]: optional restricted areas
# [configurations]: optional runway usage configurations
# [transition1]: optional runway transition routes
# [planetypes]: optional custom plane types
# [scenario]: optional nonrandom traffic
# Each section can have multiple items, each item with one or more properties. The format/order of properties are explained after a double hashtag (##) in this file.
# Properties are comma separated. Multi-line properties (lists) must start with a tab or space at the beginning of each line.
# Properties in this file that are explained between <brackets> are optional properties (do not include the brackets themselves).
# If the game fails to load a property, or you omit, #comment, or zero an (optional) property, a default value may be automatically used instead.
# Positions must be given either in x, y coordinates (in nautical miles NM), with 0, 0 being the center of the screen, and 20.1, 12.82 being somewhere at the top left,
# or, in latitude, longitude coordinates, which must always start with a N/W/S/E prefix, for example N40.7128, W74.0060 or S049.43.45.000, E002.09.51.000 (DMS notation).
# Lat/long coordinates (and true headings) are rotated automatically when a magnetic variance is defined; this is to align the radar display with the magnetic north,
# because heading 360 is a vertical line on the radar screen.
# X, y coordinates are screen coordinates; they are not rotated.
# Either way, all positions consist of two values, seperated by a comma. Whether you want to use x,y or latlong coordinates is up to you.
# For real world data it is probably easier to search the internet for the actual latlong coordinates, while for text labels on the screen x,y positions are more convenient.
# Press the left Ctrl key in the sim to display the current coordinates of the mouse. These values are also copied into the Windows clipboard.
##############################################################
[airspace]
##############################################################
radius = 30 ; airspace radius in NM
zoom = 7.0 ; default zoom level, increase to zoom in
elevation = 13 ; ground altitude in feet
floor = 1500 ; minimum selectable altitude
descendaltitude = 7000 ; minimum initial altitude for arrivals
ceiling = 9000 ; maximum selectable altitude in feet
above = 12000 ; SID top altitude in feet (above ceiling)
transitionlevel = 18001 ; lowest altitude in feet to be displayed as flight level
speedrestriction = 15, 220 ; radius in NM, and speed in knots
usa = true ; American-style callsign pronunciation and runway names
metric = false ; display altitudes in metres instead of feet
center = N50.1234, E2.0060 ; lat/long location of center of radar display (required when using lat/long coordinates elsewhere in this file)
magneticvar = 2.0 ; magnetic variance; east = positive (used to rotate lat/long coordinates if defined below)
beacons =
vor, 0, -3, 0, main v-o-r
bco, 18.6, 6.8, 090, beacon two
trd, N50.0, E2.1, -090, the third one
## name, position, <holdingheading>, <pronunciation>
# the first given beacon will be the default beacon for arrivals inbound the main airport
# when holdingheading is 0 or omitted, planes will hold there using the plane's current heading
# when a holdingheading is given, planes will fly that heading (or magnetic course) on the inbound leg when holding
# when holdingheading is negative, planes will make left-hand turns instead of right-hand
line1 =
10, 10
10, 40
40, 40
40, 10
10, 10
## positions
# pointlist of optional green (coast)line.
line2 =
-15, 0
-22, 0
-22, -12.23
-15, -14
-15, 0
##############################################################
[airport1]
##############################################################
name = Example Airport ; name of the main airport
#code = EXAM ; four letter code, displayed in airport menu (required)
runways =
rwy1, 36, -4.3, 3.23, 360.0, 11400, 0, 0, 100, 3, 360.0, 3, 180.0, YY, 8.0, ZZ, 8.5
## identifier, name, position, true_heading, <length>, <displaced>, <displaced2>, <elevation>, <glideslope>, <localizer>, <glideslope2>, <localizer2>, <beaconname, distance>, <beaconname2, distance2>
# where identifier is a unique name used to define a runway usage configuration below
# name is one or two digits, optionally suffixed with an L, R or C character
# position is the location of the beginning of the runway (including displaced threshold)
# length is in feet
# displaced threshold length in feet (for landings), displaced2 is for the other end of the runway
# elevation is in feet, and must be within 1000 feet difference from the airspace ground elevation defined above
# glideslope is the angle in degrees; the default value is 3
# localizer is the true heading in degrees of the ILS until touchdown; by default it's the same as runway true heading, but a small offset is allowed
# beacon is a point on the localizer at a certain distance (NM) from the threshold
# second beacon is a point on the localizer when runway is used in opposite direction (rev)
climbaltitude = 5000 ; maximum initial climb altitude in feet for departures
sids =
north, 0, 25, northbound
south, 0, -25, southbound
bco
## name, position, <pronunciation>
# you may also give just the name of a beacon from the beacon list
entrypoints =
090
270, bco
## true_heading, <beacon>
# this is where new arrivals enter at the boundary (approximately), e.g. 090 means planes will enter from the east, heading 270 (westbound)
# inbound beacon is optional; choose a beacon name from the beacon list above; otherwise the first beacon from that list is chosen automatically
airlines =
air, 3, a333/e175, airliner, w
air, 2, dh8d, airliner, e
ph-abc, 1, c271, 0, nwe
n-123ab,1, f200
## name, amount, planetype, pronunciation, <direction>
# name is the 3 letter airline code, or a private regristration (with a land code, dash(-), and then the format)
# amount determines the relative likelihood of appearance (e.g. 0=never, 1=occasionally, 10=frequently, etc)
# planetype determines plane characteristics, put a dash (/) between multiple types for random type selection
# pronuniation is the callsign, used for airlines
# direction lets the plane arrive/depart in (more or less) the specified direction:
# give the direction as a string containing one or more of the letters nwse, for north west south east,
# but make sure there are actually entrypoints defined at those directions (approximately); w needs an entrypoint near 270
##############################################################
[airport2]
##############################################################
name = Secondary Airport ; name of secondairy airport
code = SC ; two letter code, will be added to the runways and plane tags
runways =
rwy2, 06, 6.7, -3.5, 60.0, 1.88, 0, 0, 100, 3,0,3,0, WL, 8.0
## identifier, name, position, true_heading, <length>, <displaced>, <displaced2>, <elevation>, <glideslope>, <localizer>, <glideslope2>, <localizer2>, <beaconname, distance>, <beaconname2, distance2>
# identifier must be unique to all other runways defined in this file
traffic = 5 ; average time between airplanes per active runway, in minutes (but this decreases at higher skill values)
inboundbeacon = bco ; beacon name, for arrivals (choose one from the beacon list above)
entrypoints =
300
330
# headings only
airlines =
jet, 2, b735, jetliner
n-12345, 1, c271
climbaltitude = 3000 ; maximum initial climb altitude in feet for departures
sids =
north
south
west, -25, 0, westbound
bco
## name, position, <pronunciation>
# you may also give just the name of a beacon from the beacon list, or the name of a sid from the airport1 sid list
# You can add more airports sections if needed ([airport3], etc).
##############################################################
[area1]
##############################################################
shape = circle ; circle or polygon
altitude = 3000 ; minimum allowed altitude in feet
name = SC ; <name, if omited then only planes inbound the main airport may enter this area>
radius = 6 ; radius of circle in NM
position = 7, -3.6 ; position of circle center
labelpos = 6, 0 ; <position of label>
draw = 0, 5.9 ; <start and end angle of visible arc, in radians, omit for a full circle>
##############################################################
[area2]
##############################################################
shape = polygon ; circle or polygon
altitude = 3500 ; minimum allowed altitude in feet
#name = X ; <name, if omited then planes inbound the main airport may enter this area>
draw = 1 ; <number of invisible lines at the end of the polygon, omit for a full polygon>
labelpos = -3.1, 10.9 ; <position of label>
points =
-8.1, 13.3
0, 13
-1, -4
-7.6, -4
-9.0, 10
## positions
# the last point will be automatically connected to the first point
# note: the polygon must be convex, for example a rectangle, for it to work correctly
# you may need to split up non-convex shapes into simpler convex polygons with some invisible lines
# each polygon must have its own [area] section
##############################################################
[configurations]
##############################################################
config1 =
0, rwy1, landstart
7, rwy1, startland, 020, nosid
8, rwy2, startlandrev
## score, identifier, use, <offsetheading>, <nosid>
# score is the score (skill) at which the runway will be activated
# identifier is a unique runway name specified earlier
# use is a string (without spaces) that may contain these words: start, land, rev, int, track
# where rev means reversed use (opposite direction), int means intersection departure (takeoffs begin 30% down the rwy), track means backtrack after landing
# offsetheading means planes will fly a specific heading just after takeoff (especially useful for allowing parallel takeoffs with divergent headings)
# nosid option means planes will depart on the given offsetheading, with SID mode disabled
# when rwy configurations are omited, two configs are automatically created, one for each rwy direction, with all runways active
config2 =
0, rwy1, landstartrev
7, rwy1, startlandrev, 200, nosid
8, rwy2, startland
##############################################################
[transition1]
##############################################################
runway = rwy1, rev ; runway identifier, <reversed use>
beacon = lima, 1, 18, 0, lima ; selectable beacon to enable NAV mode; define a beacon, or choose a name from beacon list above
route1 =
100
-3, 22, 5500, 210
1, 22
1, 18, 4000
-3, 18, 0, 180
10.5, 3000, 200
# first item of the route is the bearing from the plane towards the beacon; if there are multiple routes defined, the closest bearing defines which route is selected.
# next lines are optional waypoints: ## location, <maximum altitude>, <maximum speed>
# last line is the interception point on the ILS: ## distance (NM) from the threshold, <maximum altitude>, <maximum speed>
route2 =
240
1, 18, 4000
-3, 18, 0, 180
10.5, 3000, 200
route3 =
020
1, 10
1, 18, 4000
-3, 18, 0, 180
10.5, 3000, 200
# multiple [transition] sections can be used for the same runway
##############################################################
[planetypes]
##############################################################
types =
f200, 5, 140, 230, 2.9, 3.2, 1400, 1600, 115, 125, 1.1, 1.2, big jet
c271, 6, 90, 120, 2.9, 3.2, 1400, 1600, 90, 105, 1.1, 1.2, singleprop
## type, category, minspeed, maxspeed, minturnrate, maxturnrate, mindescendrate, maxdescendrate, minaccelrate, maxaccelrate, <manufacturer>
# custom plane types, useful when specified custom types in the airline lists above, or to override default type properties
# category is the weight category: 1 to 6, meaning superheavy=1, upperheavy, lowerheavy, uppermedium, lowermedium, light=6
# turnrate is in degrees per second
# descendrate is in feet per minute
# accelrate is in knots per second
# manufacturer name is optional, only used for private callsign pronunciation in usa mode
##############################################################
[scenario]
##############################################################
finish = 2 ; amount of planes to land to finish the scenario
events =
0, config, 1
0, score, 6
0, wind, 180, 10
0, cloud, -1, 25
0, cloud, -2, 24
0, cloud, -4, 24
0, dep, rwy1, north, f200
0, elapse, 20
0, arr, 230, vor, f200
0, elapse, 100
5, arr, 90, bco, f200
40, dep, rwy1, north, f200
70, dep, rwy1, south, a333
20, score, 8
90, dep, rwy1, north
0, wind, 200, 8
0, cloud, 19, -26.5
50, dep, rwy1, west, f200
1, text, Hello!
5, arr, 210, vor, a333, 15000, 6000, 300, 0, 0, 1, air
10, arr, 090, 0, 0, 0, 0, 0, 0, 0, 0, 0, sc
10, dep, rwy2, north
## elapsed time after previous event in seconds, eventtype, properties
# available eventtypes: arr, dep, score, elapse, wind, cloud, config, text
## arr: entrypoint, <beacon>, <planetype>, <altitude>, <targetaltitude>, <speed>, <delaytimer>, <fuel>, <emergency>, <callsign>, <destination> ; arrival (fuel counts up; lowfuel from 5000+, emergency=1 for medical, 2 for engine, destination is the two letter code of a secondary airport)
## dep: runwayidentifier, sid, <planetype>, <emergency>, <callsign> ; departure
## score: score ; set higher score/skill to open more runways, or lower to close runways
## elapse: seconds ; elapse simulation time between events (only use this to build traffic before the start, so at time 0)
## wind: heading, speed ; set wind (preferably in small steps when changing the wind)
## cloud: position ; add cloud with radius of 1 NM (preferably just outside the airspace boundary, to avoid incidents, unless time is 0)
## config: entry ; change to different runway config, as specified in the rwy configurations section
## text: message ; display yellow text at the top of screen
# Custom airport file (experimental!)
# Save a copy of example.txt before editing it, to keep this file as a guide.
# On Windows, place the txt file in the /locations/ folder of the game.
# On android (4.4+), place the txt file in /Android/data/com.dirgtrats.endlessatc/files/.
# Copy, edit and use and share airport files at your own risk!
# This example file has lots of comments (#), to use it as a guide. Uncomment the 'code = ' item in the [airport1] section below to make the airport appear in-game.
# This file has several [sections] (but most are optional), namely:
# [airspace]: various general properties
# [airport1]: main airport
# [airport2]: optional secondary airports
# [area1]: optional restricted areas
# [configurations]: optional runway usage configurations
# [departure1]: optional runway departure routes
# [approach1]: optional runway approach routes
# [planetypes]: optional custom plane types
# [scenario]: optional nonrandom traffic
# Each section can have multiple items, each item with one or more properties. The format/order of properties are explained after a double hashtag (##) in this file.
# Properties are comma separated. Multi-line properties (lists) must start with a tab or space at the beginning of each line.
# Properties in this file that are explained between <brackets> are optional properties (do not include the brackets themselves).
# If the game fails to load a property, or you omit or #comment or zero an (optional) property, a default value may be automatically used instead.
# Positions must be given either in x, y coordinates (in nautical miles, NM), with 0, 0 being the center of the screen, and 20.1, 12.82 being somewhere at the top left,
# or, in latitude, longitude coordinates, which must always start with a N/W/S/E prefix, for example N40.7128, W74.0060 or S049.43.45.000, E002.09.51.000 (DMS notation).
# Lat/long coordinates (and true headings) are rotated automatically when a magnetic variance is defined; this is to align the radar display with the magnetic north,
# to make a heading of 360 degreees a vertical line on the radar screen.
# X, y coordinates are simple screen coordinates; they are not rotated.
# Either way, all positions consist of two values, seperated by a comma. Whether you want to use x,y or latlong coordinates is up to you.
# For real world data it is probably easier to search the internet for the actual latlong coordinates.
# Press the left Ctrl key in the sim to display the coordinates of the mouse position. These values are also copied into the Windows clipboard, to be easily pasted into a file.
##############################################################
[airspace]
##############################################################
radius = 30 ; airspace radius in NM
zoom = 7.0 ; default zoom level, increase to zoom in
elevation = 13 ; ground altitude in feet
floor = 1500 ; minimum selectable altitude
descendaltitude = 7000 ; minimum initial altitude for arrivals
ceiling = 9000 ; maximum selectable altitude
above = 12000 ; maximum departure altitude when SID is enabled (must be above ceiling)
transitionaltitude = 18000 ; highest altitude displayed in feet instead of flight level
speedrestriction = 15, 220 ; radius in NM, and speed in knots
usa = true ; American-style callsign pronunciation and runway names
metric = false ; display altitudes in metres instead of feet
separation = 3 ; minimum allowed distance between aircraft in NM
center = N50.1234, E2.0060 ; lat/long location of center of radar display (required when using lat/long coordinates elsewhere in this file)
magneticvar = 2.0 ; magnetic variance; east = positive (used to rotate lat/long coordinates if defined below)
beacons =
vor, 0, -3, 0, main v-o-r
bco, 18.6, 6.8, 090, beacon two
trd, N50.0, E2.1, -090, the third one
## name, position, <holdingheading>, <pronunciation>
# the first given beacon will be the default beacon for arrivals inbound the main airport
# when holdingheading is 0 or omitted, planes will hold there using the plane's current heading
# when a holdingheading is given, planes will fly that heading (or magnetic course) on the inbound leg when flying the holding
# when holdingheading is negative, planes will make left-hand turns instead of right-hand
boundary =
-25, -22
25, -22
25, 22
-25, 22
## positions
# pointlist of optional airspace boundary polygon; this will override the default (circular) airspace radius.
# last point is automatically connected to first point
line1 =
10, 10
10, 40
40, 40
40, 10
10, 10
## positions
# pointlist of optional green (coast)line.
line2 =
-15, 0
-22, 0
-22, -12.23
-15, -14
-15, 0
##############################################################
[airport1]
##############################################################
name = Example Airport ; name of the main airport
#code = EXAM ; four letter code, displayed in airport menu (required!)
runways =
rwy1, 36, -4.3, 3.23, 360.0, 11400, 0, 0, 100, 3, 360.0, 3, 180.0, YY, 8.0, ZZ, 8.5
## identifier, name, position, true_heading, <length>, <displaced>, <displaced2>, <elevation>, <glideslope>, <localizer>, <glideslope2>, <localizer2>, <beaconname, distance>, <beaconname2, distance2>
# where identifier is a unique name used to define a runway usage configuration later in this file
# name is one or two digits, optionally suffixed with an L, R or C character
# position is the location of the beginning of the runway (including displaced threshold)
# length is in feet
# displaced threshold length in feet, displaced2 is for the other end of the runway
# elevation is in feet, and must be within 1000 feet difference from the airspace ground elevation defined above
# glideslope is the angle in degrees; the default value is 3.0
# localizer is the true heading in degrees of the ILS until touchdown; by default it's the same as runway true heading, but a small offset is allowed
# beacon is a point on the localizer at a certain distance (NM) from the (displaced) threshold
# second beacon is a point on the localizer when runway is used in opposite direction (rev)
climbaltitude = 5000 ; maximum initial climb altitude in feet for departures
sids =
north, 0, 25, northbound
south, 0, -25, southbound
bco
## name, position, <pronunciation>
# you may also give just the name of a beacon from the beacon list
entrypoints =
090
270, bco
## true_heading, <beaconname>
# this is where new arrivals enter at the boundary (approximately), e.g. 090 means planes will enter from the east, heading 270 (westbound)
# inbound beacon is optional; choose a beacon name from the beacon list above; otherwise the first beacon from that list is chosen automatically
airlines =
air, 3, e175, airliner, w
air, 2, a333, airliner
air, 1, dh8d/f200, airliner, e
ph-abc, 1, c271, 0, nwe
n-123ab,1, f200
## name, amount, planetype, pronunciation, <direction>
# name is the 3 letter airline code, or a private regristration (with a land code, dash(-), and then the format)
# amount determines the relative likelihood of appearance (e.g. 0=never, 1=occasionally, 10=frequently, etc)
# planetype determines the plane characteristics (optionally put a dash (/) between multiple types)
# pronuniation is the callsign, used for airlines
# direction lets the plane arrive/depart in (roughly) a preferred direction:
# give the direction as a string containing one or more of the letters nwse, for north west south east,
# but make sure there are actually entrypoints defined at those directions (approximately); w needs an entrypoint near 270
##############################################################
[airport2]
##############################################################
name = Secondary Airport ; name of secondary airport
code = SC ; two letter code, which will be added to the runways and plane tags
runways =
rwy2, 06, 6.7, -3.5, 60.0, 1.88, 0, 0, 100, 3,0,3,0, WL, 8.0
## identifier, name, position, true_heading, <length>, <displaced>, <displaced2>, <elevation>, <glideslope>, <localizer>, <glideslope2>, <localizer2>, <beaconname, distance>, <beaconname2, distance2>
# identifier must be unique to all other runways defined in this file
traffic = 5 ; average time between airplanes per active runway, in minutes (but this decreases at higher skill values)
inboundbeacon = bco ; beacon name; the default initial beacon for arrivals (choose one from the beacon list above)
entrypoints =
300
330, trd
## true_heading, <beaconname>
airlines =
jet, 2, b735, jetliner
n-12345, 1, c271
## name, amount, planetype, pronunciation, <direction>
climbaltitude = 3000 ; maximum initial climb altitude in feet for departures
sids =
north
south
west, -25, 0, westbound
bco
## name, position, <pronunciation>
# you may also give just the name of a beacon from the beacon list, or the name of a sid from the airport1 sid list
# You can add more airports sections if needed ([airport3], etc).
##############################################################
[area1]
##############################################################
shape = circle ; circle or polygon
altitude = 3000 ; minimum allowed altitude in feet
name = SC ; <name, if omited then only planes inbound the main airport may enter this area>
radius = 6 ; radius of circle in NM
position = 7, -3.6 ; position of circle center
labelpos = 6, 0 ; <position of label>
draw = 0, 5.9 ; <start and end angle of visible arc, in radians (orientated to the left), omit for a full circle>
##############################################################
[area2]
##############################################################
shape = polygon ; circle or polygon
altitude = 3500 ; minimum allowed altitude in feet
#name = X ; <name, if omited then planes inbound the main airport may enter this area>
draw = 1 ; <number of invisible lines at the end of the polygon, omit for a full polygon>
labelpos = -3.1, 10.9 ; <position of label>
points =
-8.1, 13.3
0, 13
-1, -4
-7.6, -4
-9.0, 10
## positions
# the last point will be automatically connected to the first point
##############################################################
[configurations]
##############################################################
config1 =
0, rwy1, landstart
7, rwy1, startland, 020, nosid
8, rwy2, startlandrev
## score, identifier, usage, <offsetheading>, <nosid>
# score is the score (skill) at which the runway will be activated
# identifier is a unique runway name specified earlier
# usage is a string (without spaces) that may contain these words: start, land, rev, int, track
# where rev means reversed use (opposite direction), int means intersection departure (takeoffs begin 30% down the rwy), track means backtrack after landing
# offsetheading means planes will fly a specific heading just after takeoff (especially useful for allowing parallel takeoffs with divergent climbout headings)
# nosid option means planes will depart on the given offsetheading, with SID mode disabled
# when rwy configurations are omited, two configs are automatically created, one for each rwy direction, with all runways active
config2 =
0, rwy1, landstartrev
7, rwy1, startlandrev, 200, nosid
8, rwy2, startland
##############################################################
[departure1]
##############################################################
runway = rwy2 ; runway identifier, <reversed use>
route1 =
bco2, beacon two
12, 0
18.6, 0
18.6, 6.8
25, 16.5
# first line of the route is the sid name (up to 5 characters will be displayed), and optional <pronunciation> of the sid name
# next lines are one or more waypoint positions
route2 =
south
12, 0
15.3, -4.7
0, -16.6
0, -25
# the optional [departure] section adds routes to a specific runway direction
# this overrides the default (single waypoint) SIDs with more detailed routes, and applies the routes to the specified runway only
# departing planes from that runway will then follow the one of the routes, unless the user deactivates SID mode
# re-enabling SID mode will select just the last point of the route
# defining one or more departure routes disables all the default SID points for that runway; planes will use the given routes only
# use one [departure] section per runway direction, each with one or more routes
# [departure] routes are not used in the built-in airports, for simplicity
##############################################################
[approach1]
##############################################################
runway = rwy1, rev ; runway identifier, <reversed use>
beacon = lima, 1, 18, 0, lima ; selectable beacon to enable APP mode; define a beacon, or choose a name from beacon list above
route1 =
060
-3, 22, 5500, 210
1, 22
1, 18, 4000
-3, 18, 0, 180
10.5, 3000, 200
# first item of the route is the bearing from the plane towards the beacon; if there are multiple routes defined for this beacon, the closest bearing defines which route is selected
# next lines are optional waypoints: ## position, <maximum altitude>, <maximum speed>
# last line is the interception point on the ILS: ## distance (NM) from the (displaced) threshold, <maximum altitude>, <maximum speed>
route2 =
310
1, 18, 4000
-3, 18, 0, 180
10.5, 3000, 200
route3 =
010
1, 10
1, 18, 4000
-3, 18, 0, 180
10.5, 3000, 200
# multiple [approach] sections can be used for the same runway, to allow for multiple beacons
# for easier creation of routes, use left Ctrl key to display current mouse coordinates, and left click while holding down Ctrl places temporary visual markers
# Longpress the airport name button in the menu to display all routes at once
# [approach] routes are not used in the built-in airports as the game is focussed on vectors for simplicity
##############################################################
[planetypes]
##############################################################
types =
f200, 5, 140, 230, 2.9, 3.2, 1400, 1600, 115, 125, 1.1, 1.2, big jet
c271, 6, 90, 120, 2.9, 3.2, 1400, 1600, 90, 105, 1.1, 1.2, singleprop
## type, category, minspeed, maxspeed, minturnrate, maxturnrate, mindescendrate, maxdescendrate, minfinalapproachspeed, maxfinalapproachspeed, minaccelrate, maxaccelrate, <manufacturer>
# custom [planetypes] are only needed when using unknown custom types in the airlinelists above (game will show warning on startup), or to override default type properties
# category is the weight category: 1 to 6, meaning superheavy=1, upperheavy, lowerheavy, uppermedium, lowermedium, light=6
# turnrate is in degrees per second
# descendrate is in feet per minute
# accelrate is in knots per second
# manufacturer name is optional, and only used for private callsign pronunciation in usa mode
# example of default values for b737, 4, 160, 250, 2.6, 3.0, 1440, 1560, 131, 144, 1.2, 1.3
##############################################################
[scenario]
##############################################################
finish = 2 ; amount of planes to land to finish the scenario
events =
0, config, 1
0, score, 6
0, wind, 180, 10
0, cloud, -1, 25
0, cloud, -2, 24
0, cloud, -4, 24
0, dep, rwy1, north, f200
0, elapse, 20
0, arr, 230, vor, f200
0, elapse, 100
5, arr, 90, bco, f200
40, dep, rwy1, north, f200
70, dep, rwy1, south, a333
20, score, 8
90, dep, rwy1, north
0, wind, 200, 8
0, cloud, 19, -26.5
50, dep, rwy1, west, f200
1, text, Hello!
5, arr, 210, vor, a333, 15000, 6000, 300, 0, 0, 1, air
10, arr, 090, 0, 0, 0, 0, 0, 0, 0, 0, 0, sc
10, dep, rwy2, north
## elapsed time after previous event in seconds, eventtype, properties
# available eventtypes: arr, dep, score, elapse, wind, cloud, config, text
## arr: entrypoint, <beacon>, <planetype>, <altitude>, <targetaltitude>, <speed>, <delaytimer>, <fuel>, <emergency>, <callsign>, <destination> ; arrival (fuel counts up; lowfuel from 5000+, emergency=1 for medical, 2 for engine, destination is the two letter code of a secondary airport)
## dep: runwayidentifier, sid, <planetype>, <emergency>, <callsign> ; departure
## score: score ; set higher score/skill to open more runways, or lower to close runways
## elapse: seconds ; elapse simulation time between events (only use this to build traffic before the start, so at time 0)
## wind: heading, speed ; set wind (preferably in small steps when changing the wind)
## cloud: position ; add cloud with radius of 1 NM (preferably just outside the airspace boundary, to avoid incidents, unless time is 0)
## config: entry ; change to different runway config, as specified in the rwy configurations section
## text: message ; display yellow text at the top of screen
# the [scenario] can be enabled in the traffic menu
+4
View File
@@ -0,0 +1,4 @@
[flake8]
ignore =
E501,
E128
+16
View File
@@ -0,0 +1,16 @@
In this directory are a few tools useful for writing Endless ATC airport files. You can see examples of its usage in RJTT and RJCC.
The tools are Python 3 scripts. They have not been tested in Python 2. There should be no dependencies.
Depending on your platform, you will need to run 'python3 deploy.py', 'python deploy.py', or possibly even 'deploy.py' will work.
For further help, view the help available by running 'python deploy.py -h'
If you find any bugs, you can report on the community Discord.
## Changelog
* 0.8.0 - 2021/02/20
- Added generated approaches feature
- Tagged approaches are now runway-specific
- Added argument to test loading from common callsigns
- Added argument to parse source and build, not do not write product
+195
View File
@@ -0,0 +1,195 @@
[expand.callsigns]
#pax
afl = aeroflot
cpa = cathay
axm = red cap
kzr = astana line
crk = bauhinia
hke = hong kong shuttle
abl = air busan
aca = air canada
cca = air china
afr = air frans
aic = air india
mau = air mauritius
anz = new zealand
ang = niugini
ana = all neep pawn
aar = asiana
aal = american
asv = air seoul
bkp = bangkok air
bbc = bangladesh
baw = speed bird
kme = giant ibis
ceb = cebu air
cal = dynasty
ces = china eastern
csn = china southern
esr = eastar jet
msr = egypt air
ely = el al
uae = emirates
eth = ethiopian
etd = etihad
eva = eva
eza = eznis
fji = fiji
fin = finn air
gia = indonesia
igo = i fly
jal = japan air
jja = jeju air
jjp = orange liner
jna = jin air
klm = k-l-m
kal = korean air
mkr = air lanme
lni = lion inter
dlh = lufthansa
mas = malaysian
mxd = malindo
mda = mandarin
gec = lufthansa cargo
mgl = mongol air
uba = union air
rna = royal nepal
pic = pacific airlines
apj = air peach
pal = philippine
apg = cool red
qfa = qantas
qtr = qatar
rba = brunei
rja = jordanian
sbi = siberian
tgw = scooter
cdg = shandong
csh = shanghai air
csz = shenzhen air
csc = see chuan
sia = singapore
sej = spice jet
cqh = air spring
swr = swiss
aiq = thai asia
tha = thai
thd = thai smile
thy = turkish
ual = united
vjc = viet jet air
hvn = viet nam airlines
vir = virgin
cxa = xiamen air
xax = xanadu
sky = skymark
akx = alfa wing
jta = j-ocean
jac = commuter
rac = ryukyu
snj = new sky
sfj = star flyer
ttw = smart cat
cbj = capital jet
amu = air macau
bav = bamboo
jcc = cambo
ryl = double gold
sjx = star walker
kor = air koh-ryo
jsa = jetstar asia
dkh = air june-yao
twb = tee-way
ado = air do
aza = alitalia
dal = delta
chh = hainan
hal = hawaiian
oka = okayjet
sas = scandinavian
gcr = bohai
sjo = j spring
amx = aero mexico
aci = air calin
tht = tahiti airlines
shu = aurora
aua = austrian
drk = royal bhutan
ibe = iberia
jst = jet star
lot = pollot
pia = pakistan
vsv = vlasta
alk = sri-lankan
tax = express wing
tlm = mentari
uzb = uzbek
tzp = zipair
mmz = euro atlantic
#cargo
abw = air bridge cargo
cao = air china freight
clx = cargolux
icv = cargolux italia
icl = cal
tay = quality
ckk = cargo king
soo = southern air
cks = connie
box = german cargo
ahk = air hong kong
epa = donghai
fdx = fedex
gti = giant
kmi = kay-mile air
nca = neep pawn cargo
pac = polar
run = cargo turk
abd = atlanta
css = shun feng
azg = silk west
yzr = yangtze river
rmy = raya express
tmg = tri lines
ups = u-p-s
oae = cimber
vda = volga
adb = antonov
ncr = national
hyt = quick air
tup = tupolev air
cyz = china post
cjt = cargo jet
vas = atran
#special
_jf = japan force
_af = air force
code = code
_cf = can force
cotam = cotam
koc = kingdom of cambodia
svw = silver arrows
bga = beluga
auh = sultan
aws = arab wings
qaf = amiri
gaf = german air force
sva = saudia
ame = spanish air force
brs = brasilian air force
asy = aussie
ssg = slovak government
saa = springbok
jcg = japan coast guard
flc = flight check
vjt = vista jet
ivy0 = ivory coast
trk = turkish republic
kac = kuwaiti
bah = bahrain
[expand.gateways]
* = nswe
+102
View File
@@ -0,0 +1,102 @@
import argparse
import configparser
import glob
import os
import shutil
"""Endless ATC custom airport file deployment utility.
Can build from source and deploy to game folder in one step.
See argparse help for details."""
config = configparser.ConfigParser()
config.read('eatcdev.ini')
if 'deploy' not in config:
config.add_section('deploy')
default_destination = config['deploy'].get(
"path",
"C:\\Program Files (x86)\\Steam\\steamapps\\common\\Endless ATC\\locations\\"
)
def main(args):
"""Builds an Endless ATC custom airport source file and deploys the built file
to the game folder.
Refer to argparse help for details.
Args:
`args`: An `argparse.Namespace`. The command line args when invoked as a module."""
if args.build:
import expand
import renumber
destination = args.destination_path or default_destination
if args.deploy:
print(f"Deploying to {args.destination_path or destination}.")
if not args.codes:
from distutils.util import strtobool
if not strtobool(input("Confirm you wish to process all airport files? (y/n) ")):
print("Aborting.")
return
args.codes.append("")
for code in args.codes:
path = os.path.join(
args.input_dir,
"**",
args.source_dir,
args.pattern.format(code=code))
for file in glob.glob(path, recursive=True):
print(f'Found {file}')
if args.build:
if not args.legacy:
renumber.process(args, file)
file = expand.process(args, file)
if args.legacy:
renumber.process(args, file)
if args.deploy and not args.parse_only:
result = shutil.copy(file, destination)
print(f"Copied {file} to {result}")
if __name__ == "__main__":
parser = argparse.ArgumentParser(
description="Build specified Endless ATC airports and copy to the Endless ATC directory.",
epilog="https://github.com/AdamJCavanaugh/EndlessATCAirports")
parser.add_argument('codes', nargs='*', metavar="code",
help='''Airport codes to build and deploy. Prefixes can be used.
If no code specified, you will be prompted if all airport files are to be processed.''')
parser.add_argument('-w', '--input-dir',
default=os.path.join(os.pardir, 'final'),
help='''The directory containing the airport files.
Subdirectories that are not source directories will also be searched.
Defaults to '../final'.''')
parser.add_argument('-s', '--source-dir', default='source',
help='''The name of the folders that will contain source files.
Defaults to 'source'.''')
parser.add_argument('-p', '--pattern', default='{code}*.txt',
help="The glob pattern for the file names to build based on the input codes. Defaults to '{code}*.txt'.")
parser.add_argument('-o', '--output-path', default=os.pardir,
help='''The path to the directory to store the output of the build process relative to the source file.
Defaults to the parent directory relative to the source file.''')
parser.add_argument('-d', '--destination-path',
help='''The directory to copy the output of the build process to (e.g. Endless ATC locations folder).
Defaults to "C:\\Program Files (x86)\\Steam\\steamapps\\common\\Endless ATC\\locations\\".
This default can be overridden by a 'path = ' entry under a [deploy] section in an eatcdev.ini.''')
parser.add_argument('-n', '--no-build', action='store_false', dest='build',
help='Specify to skip build, and just copy sources to output folder.')
parser.add_argument('-b', '--build-only',
action='store_false', dest='deploy',
help="Specify this option to skip copying output of build processes to destination folder.")
parser.add_argument('-P', '--parse-only', action='store_true',
help="Do not write any output of build. Also has effect of --build-only.")
parser.add_argument('-t', '--test-callsigns', action = 'store_true',
help="Tests loading of shared callsigns. Actual output is not based on shared callsigns.")
parser.add_argument('-l', '--legacy',
action="store_true", help="Use legacy processing method.")
main(parser.parse_args())
+2
View File
@@ -0,0 +1,2 @@
[deploy]
path = C:\Program Files (x86)\Steam\steamapps\common\Endless ATC\locations\test
+570
View File
@@ -0,0 +1,570 @@
import argparse
from collections import namedtuple
import configparser
from dataclasses import dataclass
import os
import re
"""Endless ATC custom airport file build utility."""
@dataclass
class Fix:
"""Simple class to represent a fix."""
name: str
lat: str
lon: str
heading: str
pronunciation: str
def __init__(self, name, lat, lon, heading, pronunciation):
self.name = name.strip()
self.lat = lat.strip()
self.lon = lon.strip()
self.heading = heading.strip()
self.pronunciation = pronunciation.strip()
@property
def short_def(self):
"""Position definition as string."""
return f"{self.lat}, {self.lon}"
@property
def minor_def(self):
"""Definition without holding as string."""
return f"{self.name}, {self.lat}, {self.lon}, {self.pronunciation}"
@property
def full_def(self):
"""Full definition as string."""
return f"{self.name}, {self.lat}, {self.lon}, {self.heading.lstrip('!') or 0}, {self.pronunciation}"
@dataclass
class Airline:
"""Simple class to represent an airline declaration."""
callsign: str
frequency: int
types: str
pronunciation: str
directions: str
callsigns = None
use_callsigns = True
test_callsigns = False
def __init__(self, callsign, frequency, types, *data, gateways=None):
"""Create an airline from an entry in the airlines= list. `data` should be
`(pronunciation, directions)`.
If `Airline.callsigns` is defined, `pronunciation` should be omitted from `data`.
If `gateways` is provided, `directions` becomes `arrival_gateways`, `departure_gateways`."""
self.frequency = int(frequency.strip())
self.types = types.strip()
self.callsign = callsign.strip()
try:
if Airline.callsigns is not None and (Airline.use_callsigns or Airline.test_callsigns):
if '-' not in callsign:
self.pronunciation = Airline.callsigns[callsign]
else:
# if length of key is more than 3, assume it is not registration
key = callsign[:callsign.index('-')]
self.callsign = callsign.strip('_')
# if key length is longer than 3 and key doesn't have match,
# we strip '_' to allow for mil callsigns with length <= 3
self.pronunciation = Airline.callsigns.get(key, key.strip('_')) if len(key) > 3 \
else Airline.callsigns.get(key, '0')
if Airline.test_callsigns:
print(f'{self.callsign}: {self.pronunciation}')
if Airline.callsigns is None or not Airline.use_callsigns:
self.pronunciation = data[0].strip()
data = data[1:]
if gateways is not None:
arrival_gateways = {gateway.strip() for gateway in data[0].split("/")}
departure_gateways = {gateway.strip() for gateway in data[1].split("/")}
self.directions = "".join(sorted(
{gateways[gateway] for gateway in arrival_gateways | departure_gateways}))
else:
self.directions = data[0].strip()
except Exception as e:
raise ValueError(f"Could not create airline from ({callsign}, {frequency}, {types}, {str(data)})" +
f"\nCallsign pronunciation lookup = {Airline.use_callsigns}") from e
def process_fix_line(line, fixes):
"""Expands special commands for a fix definition in short format
and returns the expanded definition as the result.
Substitute "!<name>[, <extra_data>]" in `line` with
"lat, lon[, <extra_data>]" based on `fixes`.
Args:
`line` (list): A fix definition.
`fixes` (dict): A lookup of `Fix`es."""
if line.startswith('!'):
def_fix, def_sep, def_data = line.lstrip('!').partition(',')
return fixes[def_fix.strip()].short_def + def_sep + def_data
else:
return line
def process_fix_list(fix_list, fixes):
"""Expands special commands in a list of fixes in short format
and produces an iterable of definitions as the result.
Substitute any "!<name>[, <extra_data>]" in `fix_list` with
"lat, lon[, <extra_data>]" based on `fixes`.
Args:
`fix_list` (list): A list of fix definitions.
`fixes` (dict): A lookup of `Fix`es."""
for line in fix_list:
yield process_fix_line(line, fixes)
def _process_approach_fix_list(fix_list, fixes, tagged_routes, generated_approaches):
"""Inner worker function for `process_approach_fix_list()`.
Works the same as `process_fix_list`, but in addition, any fix definitions processed
will be added to any generated approaches in `generated_approaches`. Also, any fixes
processed will be checked for any approach generator parameters; if found, a new
generated approach is added to `generated_approaches`. The route of such generated
approach will also be added to `tagged_routes` if tagged in the fix definition.
Args:
`fix_list` (list): A list of fix definitions.
`fixes` (dict): A lookup of `Fix`es.
`tagged_routes` (dict): A lookup of approach routes that were tagged for lookup.
`generated_approaches`: A list of dicts of parameters to be used to generate
derived approaches in post-processing."""
for line in fix_list:
def_data, _, approach_generator_params = line.rpartition(',')
if def_data and '!' in approach_generator_params:
fix_name, _, _ = def_data.partition(',')
fix_name = fix_name.lstrip('!')
heading, _, tag = approach_generator_params.lstrip(' !').partition('@')
route = []
generated_approach = {"heading": heading, "beacon": fix_name, "route": route}
generated_approaches.append(generated_approach)
if tag:
tagged_routes[tag] = route
else:
def_data = line
result = process_fix_line(def_data, fixes)
for generated_approach in generated_approaches:
generated_approach['route'].append(result)
yield result
def process_approach_fix_list(fix_list, fixes, tagged_routes, generated_approaches, generate_approaches=True):
"""Processes special commands in a list of departure fixes
in short format and produces an iterable of definitions as the result.
Substitute any "!<name>[, <extra_data>]" in `fix_list` with
"lat, lon[, <extra_data>]" based on `fixes`.
If the last item in `fix_list` is "@<name>", substitute in
the contents of the approach route tagged <name>.
Args:
`fix_list` (list): A list of fix definitions.
`fixes` (dict): A lookup of `Fix`es.
`tagged_routes` (dict): A lookup of approach routes that were tagged for lookup.
`generated_approaches`: A list of dicts of parameters to be used to generate
derived approaches in post-processing.
`generate_approaches`: Whether or not to process any approach generator commands."""
current_tag = None
if fix_list:
if fix_list[0].startswith('@'):
tagged_route = fix_list[2:]
if fix_list[0].startswith('@!'):
tagged_route = tagged_route[1:]
current_tag = fix_list[0].lstrip('@!')
tagged_routes[current_tag] = tagged_route
fix_list = fix_list[1:]
if fix_list[-1].startswith('@'):
following_tag = fix_list[-1].lstrip('@')
if current_tag is not None and current_tag == following_tag:
raise RuntimeError(
'''Unable to build as approach tagged as @{tag} is trying to reference itself.
The following is the route= contents after the @tag: \n{lines}'''
.format(tag=current_tag, lines="\n".join(fix_list)))
yield from _process_approach_fix_list(fix_list[:-1], fixes, tagged_routes, generated_approaches)
yield from process_approach_fix_list(tagged_routes[following_tag], fixes, tagged_routes, generated_approaches, False)
else:
yield from _process_approach_fix_list(fix_list, fixes, tagged_routes, generated_approaches)
def process_departure_fix_list(fix_list, fixes, tagged_routes):
"""Processes special commands in a list of departure fixes
in short format and produces an iterable of definitions as the result,
or `None` if there is no result (fix_list was recorded in `tagged_routes`.
Substitute any "!<name>[, <extra_data>]" in `fix_list` with
"lat, lon[, <extra_data>]" based on `fixes`.
If and the first item of fix_list is "@<name>",
record the rest of the `fix_list` in `tagged_routes` under "name".
If the second (first if a tagged departure route) item in `fix_list`
is "@<name>", substitute in the contents of the departure route
tagged <name>.
Args:
`fix_list` (list): A list of fix definitions.
`fixes` (dict): A lookup of `Fix`es.
`tagged_routes` (dict): A lookup of departure routes."""
if fix_list:
if fix_list[0].startswith('@'):
tagged_routes[fix_list[0].lstrip('@')] = fix_list[1:]
return None
else:
return _process_departure_fix_list(fix_list, fixes, tagged_routes)
def _process_departure_fix_list(fix_list, fixes, tagged_routes, top_level=True):
if fix_list:
if top_level:
yield fix_list[0]
fix_list = fix_list[1:]
if fix_list[0].startswith('@'):
yield from _process_departure_fix_list(tagged_routes[fix_list[0].lstrip('@')], fixes, tagged_routes, top_level=False)
yield from process_fix_list(fix_list[1:], fixes)
else:
yield from process_fix_list(fix_list, fixes)
def process_sids_fix_list(fix_list, fixes):
"""Processes special commands in a list of fixes in minor format
and produces an iterable of definitions as the result.
Substitute any "!<name>[, <extra_data>]" in `fix_list` with
"lat, lon[, <extra_data>]" based on `fixes`.
Args:
`fix_list` (list): A list of fix definitions.
`fixes` (dict): A lookup of `Fix`es."""
for line in fix_list:
if line.startswith('!'):
def_fix, def_sep, def_data = line.lstrip('!').partition(',')
yield fixes[def_fix.strip()].minor_def + def_sep + def_data
else:
yield line
def process_repeatable_departure_fix_list(fix_list, fixes, departure_routes):
"""`Processes special commands in a list of departure fixes
in short format and produces an iterable of n iterables of
definitions as the result.
If the first item of `fix_list` is *n, n iterables are produced.
Otherwise, `n = 1`.
See `process_departure_fix_list` for further special commands."""
if not fix_list[0]:
fix_list = fix_list[1:]
if fix_list[0].startswith('*'):
result = list(process_departure_fix_list(fix_list[1:], fixes, departure_routes))
for i in range(int(fix_list[0].removeprefix('*'))):
yield result
else:
yield process_departure_fix_list(fix_list, fixes, departure_routes)
def process_beacons(fixes):
"""Returns a generator of [airspace] beacons= lines, while removing any
beacons with ! as the holding heading."""
for fix in fixes.values():
if not fix.heading.startswith("!"):
yield fix.full_def
def process_airlines_list(airline_list):
"""Returns generator of airline declaration strings based on the list of `Airline`s `airline_list`.
If frequency is greater than 10, write floor(frequency / 10) 10 frequency
declarations and 1x (frequency mod 10) declaration."""
for airline in airline_list:
n, r = divmod(airline.frequency, 10)
for i in range(n):
yield f"{airline.callsign}, 10, {airline.types}, {airline.pronunciation}, {airline.directions}"
if r:
yield f"{airline.callsign}, {r}, {airline.types}, {airline.pronunciation}, {airline.directions}"
def enumerate_routes(route_list, start=1):
"""built-in `enumerate()` but the enumeration is a string "route#"."""
for route in route_list:
yield f"route{start}", route
start += 1
def process(args, input_file=None):
"""Parses an Endless ATC custom airport "source" file and expands certain special commands,
then rewrites as a minimized output suitable for use by the game.
Refer to argparse help for detailed syntax of special commands.
Args:
`args`: An `argparse.Namespace`. The command line args from the invoking module.
`file`: The file to process. Defaults to `input_file` in `args`."""
# if input_file is None, we were invoked standalone and not from deploy.py
if input_file is None:
input_file = args.input_file
output_file = input_file if args.output_file is None else args.output_file
else:
output_file = os.path.join(os.path.dirname(input_file), args.output_path, os.path.basename(input_file))
print(f"Building {input_file} to {output_file}")
config = configparser.ConfigParser()
config.read("common.ini")
config.read(os.path.join(os.path.dirname(input_file), "common.ini"))
Airline.callsigns = config['expand.callsigns'] if 'expand.callsigns' in config else {}
default_gateways = config['expand.gateways'] if 'expand.gateways' in config else {}
if 'legacy' not in args or not args.legacy:
source = configparser.ConfigParser()
source.read(input_file)
# read optional header to be written in output
header = None
if 'meta' in source:
if 'header' in source['meta']:
header = ["# " + line for line in source['meta']['header'].splitlines()]
header.extend([
"",
f"# This file is generated from the source file {os.path.relpath(input_file, os.path.dirname(output_file))} using expand.py.",
"# All comments have been stripped, and edits are not made directly to this file.",
"# If you would like to contribute, or see the author's comments, please refer to the source file.",
"",
""])
header = "\n".join(header)
if 'callsigns' not in source['meta']:
Airline.use_callsigns = False
else:
Airline.use_callsigns = source['meta'].getboolean('callsigns')
if args.test_callsigns:
Airline.test_callsigns = True
# remove meta section so it won't be written in output
del source['meta']
# build a fix database from [airspace] beacons=
fixes = {fix.name: fix for fix in (
Fix(*definition.split(",")) for definition in
source['airspace']['beacons'].strip().splitlines()
)}
source['airspace']['beacons'] = "\n".join(process_beacons(fixes))
source['airspace']['boundary'] = "\n".join(
process_fix_list(source['airspace']['boundary'].splitlines(), fixes))
areas = {section: source[section] for section in source if section.startswith('area')}
for area_data in areas.values():
if 'points' in area_data:
area_data['points'] = "\n".join(
process_fix_list(area_data['points'].splitlines(), fixes))
# process airport sections
airports = {section: source[section] for section in source if section.startswith('airport')}
for airport_data in airports.values():
gateways = dict((tuple(map(str.strip, gateway.split(","))) for gateway in airport_data['gateways'].strip().splitlines()),
**default_gateways) if 'gateways' in airport_data else None
if 'airlines' in airport_data:
airlines = [Airline(*airline.split(","), gateways=gateways)
for airline in airport_data['airlines'].splitlines() if airline]
airport_data['airlines'] = "\n".join(process_airlines_list(airlines))
if 'sids' in airport_data:
airport_data['sids'] = "\n".join(
process_sids_fix_list(airport_data['sids'].splitlines(), fixes))
# process approach/transition sections
approaches = [source[section] for section in source
if section.startswith('approach') or section.startswith('transition')]
tagged_approaches_by_runway = {}
generated_approaches_by_runway = {}
highest_app_index = 0
for approach_data in approaches:
runway = approach_data['runway']
if runway not in tagged_approaches_by_runway:
tagged_approaches_by_runway[runway] = {}
tagged_approaches = tagged_approaches_by_runway[runway]
generated_approaches = []
if 'beacon' in approach_data and ',' not in approach_data['beacon']:
approach_data['beacon'] = approach_data['beacon'].removeprefix("!")
if approach_data['beacon'] in fixes and fixes[approach_data['beacon']].heading.startswith('!'):
approach_data['beacon'] = fixes[approach_data['beacon']].full_def
for option in approach_data:
if option.startswith('route'):
approach_data[option] = "\n".join(process_approach_fix_list(approach_data[option].splitlines(),
fixes, tagged_approaches, generated_approaches))
if runway not in generated_approaches_by_runway:
generated_approaches_by_runway[approach_data['runway']] = []
generated_approaches_by_runway[approach_data['runway']].extend(generated_approaches)
# find highest approach index as we need to add more approaches
for section in source:
if section.startswith('approach'):
highest_app_index = max(highest_app_index, int(section[8:]))
for runway, generated_approaches in generated_approaches_by_runway.items():
for generated_approach in generated_approaches:
section = f'approach{highest_app_index}'
highest_app_index += 1
beacon = generated_approach['beacon']
if fixes[beacon].heading.startswith('!'):
beacon = fixes[beacon].full_def
source[section] = {
"runway": runway,
"beacon": beacon,
"route1": generated_approach['heading'] + "\n" + "\n".join(
generated_approach['route'])
}
# process departure sections
departures = [source[section] for section in source if section.startswith('departure')]
tagged_departures = {}
for departure_data in departures:
routes = {int(option.removeprefix('route')): departure_data[option]
for option in departure_data if option.startswith('route')}
processed_routes = []
for route_index in sorted(routes):
processed_routes.extend("\n".join(route) for route in
process_repeatable_departure_fix_list(
routes[route_index].splitlines(), fixes, tagged_departures)
if route)
del departure_data[f'route{route_index}']
departure_data.update(enumerate_routes(processed_routes, start=1))
# write output file
if not args.parse_only:
with open(output_file, 'w', newline='') as airport_file:
airport_file.write(header)
source.write(airport_file)
# legacy processor in regex. Don't use for new projects.
else:
pattern = re.compile(r"^(?P<airport_section>\[airport(?P<airport_id>\d*)\])|(?P<airline_entry>#!\t(?P<airline_code>[-\w]*), (?P<airline_frequency>\d*), (?P<airline_parameters>[\w/d]*, [-\w ]*, [nswe]*))|(?P<result_marker>#!expansionoutput(?P<result_id>\d+))|(?P<result_end_marker>#!expansionoutputend)|(?P<sid_marker>#!sid(?P<sid_frequency>[\d]+)x)")
result = {'output': []}
airport = 0
ignore_lines = False
ignore_one_line = False
sid_frequency = 0
sid_lines = []
with open(input_file, 'r', newline='') as airport_file:
for line in airport_file:
match = pattern.match(line)
if match:
if match['airport_section']:
airport = match['airport_id']
if airport not in result:
result[airport] = []
elif match['airline_entry']:
total_frequency = int(match['airline_frequency'])
frequencies = []
while total_frequency > 10:
frequencies.append(10)
total_frequency -= 10
frequencies.append(total_frequency)
for frequency in frequencies:
result[airport].append(
f"\t{match['airline_code']}, {frequency}, {match['airline_parameters']}\n"
)
elif match['result_marker']:
result['output'].append(line)
for result_line in result[match['result_id']]:
result['output'].append(result_line)
ignore_lines = True
elif match['result_end_marker']:
ignore_lines = False
elif match['sid_marker']:
sid_frequency = int(match['sid_frequency']) - 1
ignore_one_line = True
if sid_frequency:
if line.isspace():
for _ in range(sid_frequency):
result['output'].extend(sid_lines)
sid_frequency = 0
sid_lines = []
elif not len(sid_lines):
sid_lines.append("\n")
else:
sid_lines.append(line)
if not ignore_lines and not ignore_one_line:
result['output'].append(line)
if ignore_one_line:
ignore_one_line = False
if not args.parse_only:
with open(output_file, 'w', newline='') as airport_file:
airport_file.writelines(result['output'])
return output_file if not args.parse_only else None
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='''Expands certain commands to allow for concise Endless ATC airport source files.
\n\n
Available functions:
\n\n
In [airspace] boundary=, [area] points=, or the route= of an [approach/departure/transition], specify "!<name>" instead of lat, lon
to substitute the lat, lon from the fix with the corresponding name in [airspace] beacons=. In [airport] sids=, "!<name>"
can also be specified, and will become name, lat, lon instead. In [approach/departure/transition], "!<name>" can also be specified
in beacon=, where it will become the full fix definition.
\n\n
In [airport] airlines=, definitions with frequency >10 with be broken down into multiple definitions of frequency 10 or less.
\n\n
In [airport], you can define gateways=, a list of <name>, direction. If gateways= is defined, the ", <directions>"" in
[airport] airlines= becomes ", <arrival_gateways>, <departure_gateways>", and the directions are used based on the defined
gateways. Default gateways can be specified in a common.ini in the same directory as the source file, or in the folder where
this tool is located; gateways= still needs to be defined in an [airport] to activate this feature for the [airport].
\n\n
In [airport] airlines=, the airline <pronunciation> can be omitted if [meta] callsigns= is true. A lookup will be loaded from
[expand.callsigns] defined in a common.ini in the same directory as the source file, or in the folder where this tool is
located. The former takes precedence. [expand.callsigns] is a list of <code>, <pronunciation>. The first item in each
line of airlines (stripped of a dash and anything after it, hereafter referred to as the "key") is used to lookup in
[expand.callsigns] to obtain the pronunciation. If nothing is found, pronunication defaults to the key if it is longer than
3 characters (assuming it is a military callsign), otherwise it defaults to "0".
\n\n
In a [approach/transition] route=, specify "@<name>" to "tag" the approach route. Any subsequent [approach] route= can then
specify "@<name>" as the last point to chain the approach route tagged as "name" to the end.
\n\n
In a [departure] route=, specify "@<name>" to "tag" the route. This will remove the departure route from the resulting file
(as it is an incomplete departure route). Any subsequent [departure] route= can then specify "@<name>" as the *first* point
(second line, after the route name) to chain the departure route tagged as "name" to the beginning.
\n\n
*n as the first line of a [departure] route= value will repeat that route n times. Obviously, a repeated route= cannot be
tagged as it wouldn't make any sense.''')
parser.add_argument('input_file')
parser.add_argument('output_file', nargs='?')
parser.add_argument('-l', '--legacy', action="store_true",
help='''Use legacy processing method. Don't use for new projects.
\n\n
#!expansionoutput<airport_id> can be inserted on its own line in a source file terminated by
#!expansionoutputend on a following line. This block, which should remain empty, will be used
to write the result of expanding any airline definitions in a #! comment. Any #! definitions
with frequency greater are split into entries with max 10 frequency each.
\n\n
#!sid<n>x can be inserted before any "routex =" declaration in a [departure] section to repeat the
route <n> times. This can be used to adjust the distribution of traffic on each SID. Note the
numbering of each "route" will not be adjusted. See renumber.py for such operation.''')
process(parser.parse_args())
+45
View File
@@ -0,0 +1,45 @@
import argparse
import re
"""Endless ATC custom airport file section renumbering utility."""
def process(args, file=None):
"""Rewrites an Endless ATC airport file with renumbered sections.
Sections are renumbered from 1. Sections do not need to be numbered
in the input. Routes, however, need to be numbered in the input.
Args:
`args`: An `argparse.Namespace`. The command line args from the invoking module.
`file`: The file to process. Defaults to `input_file` in `args`."""
header_re = re.compile(r"^(?:\[(?P<header>(?:approach)|(?:transition)|(?:departure)|(?:area))\d*\])|^(?:route\d+ *= *)")
def number_approach(match, indexes={'approach': 0, 'transition': 0, 'departure': 0, 'area': 0, 'route': 0}):
header = match.group("header")
if header:
indexes['route'] = 0
else:
header = 'route'
indexes[header] += 1
return header == 'route' and f"{header}{indexes[header]} = " or f"[{header}{indexes[header]}]"
if file is None:
file = args.input_file
result = []
with open(file, 'r', newline='') as input_file:
for line in input_file:
result.append(header_re.sub(number_approach, line))
with open(file, 'w', newline='') as output_file:
output_file.writelines(result)
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Re-number [approach] sections for Endless ATC airport files.')
parser.add_argument('input_file')
process(parser.parse_args())