diff --git a/final/AS/JPN/RJBB.txt b/final/AS/JPN/RJBB.txt index 70e8f98..1899953 100644 --- a/final/AS/JPN/RJBB.txt +++ b/final/AS/JPN/RJBB.txt @@ -4246,11 +4246,9 @@ runway = RJOTRWY route1 = WASYU THREE N34.11.45.25, E133.56.41.59 N34.28.17.50, E133.23.01.14 - N34.28.17.50, E133.23.01.14 route2 = WASYU THREE N34.11.45.25, E133.56.41.59 N34.28.17.50, E133.23.01.14 - N34.28.17.50, E133.23.01.14 route3 = TAROH THREE MIHO TRANSITION N34.11.45.25, E133.56.41.59 N34.43.01.09, E133.46.27.13 @@ -4285,11 +4283,9 @@ runway = RJOTRWY, rev route1 = WASYU THREE N34.13.37.24, E134.04.01.63 N34.28.17.50, E133.23.01.14 - N34.28.17.50, E133.23.01.14 route2 = WASYU THREE N34.13.37.24, E134.04.01.63 N34.28.17.50, E133.23.01.14 - N34.28.17.50, E133.23.01.14 route3 = TAROH THREE MIHO TRANSITION N34.13.37.24, E134.04.01.63 N34.43.01.09, E133.46.27.13 @@ -4627,7 +4623,14 @@ route3 = IZUMI TWO N34.00.53.91, E133.55.17.46 N33.49.05.07, E133.49.15.33 N33.32.30.42, E133.40.48.57 -route4 = ASUKA SEVEN +route4 = IZUMI TWO + N34.32.55.51, E135.32.22.44 + N34.26.28.54, E135.25.31.28 + N34.48.19.74, E135.24.13.18 + N34.55.50.20, E135.21.43.92 + N35.07.00.56, E135.18.00.92 + N35.28.50.49, E135.08.13.28 +route5 = ASUKA SEVEN N34.36.10.32, E135.30.46.3 N34.36.22.43, E135.27.08.26 N34.36.30.44, E135.24.42.89 @@ -4669,7 +4672,14 @@ route3 = IZUMI TWO N34.00.53.91, E133.55.17.46 N33.49.05.07, E133.49.15.33 N33.32.30.42, E133.40.48.57 -route4 = ASUKA SEVEN +route4 = IZUMI TWO + N34.32.55.51, E135.32.22.44 + N34.26.28.54, E135.25.31.28 + N34.48.19.74, E135.24.13.18 + N34.55.50.20, E135.21.43.92 + N35.07.00.56, E135.18.00.92 + N35.28.50.49, E135.08.13.28 +route5 = ASUKA SEVEN N34.32.54.38, E135.35.48.72 N34.36.10.32, E135.30.46.3 N34.36.22.43, E135.27.08.26 @@ -4712,7 +4722,14 @@ route3 = IZUMI TWO N34.00.53.91, E133.55.17.46 N33.49.05.07, E133.49.15.33 N33.32.30.42, E133.40.48.57 -route4 = ASUKA SEVEN +route4 = IZUMI TWO + N34.32.55.51, E135.32.22.44 + N34.26.28.54, E135.25.31.28 + N34.48.19.74, E135.24.13.18 + N34.55.50.20, E135.21.43.92 + N35.07.00.56, E135.18.00.92 + N35.28.50.49, E135.08.13.28 +route5 = ASUKA SEVEN N34.36.10.32, E135.30.46.3 N34.36.22.43, E135.27.08.26 N34.36.30.44, E135.24.42.89 @@ -4754,7 +4771,14 @@ route3 = IZUMI TWO N34.00.53.91, E133.55.17.46 N33.49.05.07, E133.49.15.33 N33.32.30.42, E133.40.48.57 -route4 = ASUKA SEVEN +route4 = IZUMI TWO + N34.32.55.51, E135.32.22.44 + N34.26.28.54, E135.25.31.28 + N34.48.19.74, E135.24.13.18 + N34.55.50.20, E135.21.43.92 + N35.07.00.56, E135.18.00.92 + N35.28.50.49, E135.08.13.28 +route5 = ASUKA SEVEN N34.36.10.32, E135.30.46.3 N34.36.22.43, E135.27.08.26 N34.36.30.44, E135.24.42.89 diff --git a/final/AS/JPN/RJBB_readme.md b/final/AS/JPN/RJBB_readme.md index 6237431..73d9517 100644 --- a/final/AS/JPN/RJBB_readme.md +++ b/final/AS/JPN/RJBB_readme.md @@ -1,18 +1,14 @@ -# RJBB ACA 2.0.0 +# `RJBB` ACA 3.0.0 -This is an implementation of the Kansai ACA (Approach Control Area) for [Endless ATC](https://steamcommunity.com/app/666610) featuring RJBB Kansai International Airport, RJOO Osaka International Airport (often referred to as Itami), RJBE Kobe Airport, RJOS Tokushima Airport, RJOT Takamatsu Airport, and RJOB Okayama Airport. The airspace ceiling is FL180. +This is an implementation of the Kansai ACA (Approach Control Area) for [Endless ATC](https://steamcommunity.com/app/666610) featuring `RJBB` Kansai International Airport, `RJOO` Osaka International Airport (often referred to as Itami), `RJBE` Kobe Airport, `RJOS` Tokushima Airport, `RJOT` Takamatsu Airport, `RJOB` Okayama Airport, and `RJOY` Yao Airport. The airspace ceiling is FL180. -The Kansai ACA is a very complex airspace, with many airports in close vicinity in Osaka Bay and the surroundings. There are many flight paths that cross over each other, and altitude will need to used to separate aircraft very often, especially within Osaka Bay. The controller will need to carefully monitor both departures and arrivals and issue altitude, speed, and vectors to ensure proper separation. +The Kansai ACA is a very complex airspace, with many airports in close vicinity in Osaka Bay and the surroundings. There are many flight paths that cross over each other, and altitude will need to used to separate aircraft very often, especially within Osaka Bay and over Osaka City. The controller will need to carefully monitor both departures and arrivals and issue altitude, speed, and vectors to ensure proper separation. -Based upon AIP Japan 2020/12/31. 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 were implemented unless there is no RNAV procedure published. Coastline data from naturalearthdata.com. +Based upon AIP Japan 2020/12/31. 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 were implemented unless there is no RNAV procedure published. 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 (even approaches to airports other than the aircraft's intended destination). **\*Use care to ensure you have selected the approach to the correct airport!!!\*** Pressing the APP button again (do not long press) to 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. +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. 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. -The published STARs for the aerodromes in the Kansai ACA typically do not have "at or below" crossing restrictions. Given this type of restriction is the only one that can be implemented in Endless ATC, this would have resulted in appraoches providing only lateral guidance. Therefore, restrictions have been implemented to provide a "latest possible descent" to the initial approach fix. You can descend aircraft below the implemented restrictions for separation purposes in most cases; any "at or above" crossing restrictions are noted below per airport. - -**\*Departures may need to handed off before they reach the boundary of the ACA\***, *as there are cases where the SID exts the ACA before cruise altitude can be reached.* - -`RJOY` Yao Airport is currently not implemented in this version. +The published STARs for the aerodromes in the Kansai ACA typically do not have "at or below" crossing restrictions. Therefore, there are few restrictions implemented, and descent earlier than the latest possible descent is at controller's discretion, which will be necessary for separation throughout the sector. You can descend aircraft below the implemented restrictions for separation purposes in most cases; any "at or above" crossing restrictions are noted below per airport. The Tokushima ACA which exists almost entirely under the Kansai ACA, is treated as part of Kansai ACA for gameplay purposes. Note that only aircraft arriving or departing RJOS Tokushima are allowed into the Tokushima ACA airspace (areas labeled with `OS`). @@ -265,7 +261,7 @@ Aircraft depart via: - `YUBAR` (north) - `WASYU` (west) -The missed approach hold is OYE/BENES +4000. +The missed approach hold is `OYE`/`BENES` +4000. There are two simple runway configurations: @@ -277,17 +273,56 @@ The preferred runway configuration for arrivals from the west. A RNAV AR approac The preferred runway configuration for arrivals from the east. The straight-in to 25 is an RNAV approach as there is no ILS for 25. +### `RJOY` Yao Airport + +A small airport near Osaka that acts as a general aviation gateway. + +There is custom traffic for `RJOY`. The proportions are very much estimates but shouldn't be too far off from reality. + +Aircraft arrive at: + +- (`MIDER`) -> `ITE` (east) +- `ROKKO` (north) +- (`YUBAR`) -> `OYE`(northwest) +- (`KAIFU` -> `IZARI`) -> `MIKAN` (west/southwest) +- (`NORAN`) -> `IZUMI` (southeast) + +Aircraft depart via: + +- `KCC` via `ASUKA` (east) +- `KRE` via `IZUMI`, `ITE`, `OLIVE` (southwest) +- `YME` via `IZUMI` (north) +- `YUBAR` via `IZUMI` (northwest) +- `WASYU` via `IZUMI` (west) + +The missed approach hold is `IZUMI` +4200. + +The only instrument approaches available are a VORDME or VOR circling approach from `IZUMI`. The VORDME approach is implemented with circling to all runways. Runway 13/31 is not enabled at this time, but can be easily enabled by editing [configurations] as the other relevant data is all there. + +There is a very high potential for conflicts to the west of the airport. The airport and the VORDME approach sit under the approach path for `RJOO` traffic via `IZUMI`, so you effectively have a ceiling of 5000 to work with when there is traffic overhead. Alternatively, you can vector `RJOO` arrivals to the south to clear the airspace overhead. + +Aircraft inbound to `IZUMI` via V55 from `ITE` will need to stay above `RJOO` departures and `RJBB` arrivals, while staying below `RJBB` `NANKO` departures, `RJOO` arrivals via `IZUMI`, and `RJOY` `ASUKA` departures. Aircraft departing via `IZUMI` (V55) `ITE` will also need to separated from opposite direction inbound traffic. Any aircraft going missed will also need to be separated from other `RJOY` arrivals, and in the case of landing 09, from aircraft inbound the `RJOO` 32s. + +There are two simple runway configurations: + +- Landing and departing 27 + +The calm wind configuration. Use care for `ASUKA` departures; keep them separated from arrivals inbound `IZUMI` from `ITE`, and climb them above aircraft on final for `RJOO`. + +- Landing and departing 09 + +The reverse configuration. Use care for `ASUKA` departures to keep them separated from arrivals inbound `IZUMI` from `ITE`. + ## Known Issues -- Circle to land approaches...............*sigh* -- No `RJOY` Yao (how to even go about doing this...) +- Circle to land approaches...............*sigh* They kinda work, but the game is not good at handling close-in base turns so they turn base and final around 4NM out. ## Changelog * 1.0.0 - 2020/10/12 - Initial version. * 2.0.0 - 2020/11/02 - - Add approaches to both runway ends for all airports. - - Add approaches to many, many fixes as the approach limit has been lifted. + - Added approaches to both runway ends for all airports. + - Added approaches to many, many fixes as the approach limit has been lifted. - Adjusted eastern ACA extension over Chubu ACA - Added previously cut western ACA - Added part of previously cut southwestern ACA @@ -304,12 +339,40 @@ The preferred runway configuration for arrivals from the east. The straight-in t - Added various minor fixes - Added Akeno ACA area - Removed training areas as they should be more inactive rather than active...? -* 3.0.0 - 2021/03/xx +* 3.0.0 - 2021/05/xx - Rewrite of source - - Add `RJBB` ARC series STARs and ILS Y approaches + - Removed most of the arbitrary altitude restrictions for approaches + - Added FL130 250kt restriction at `KODAI` for `RJOO` to compensate for game spawning arrivals via `OHDAI` at high altitudes and speeds + - Complete overhaul of circle to land approaches + - `RJOO` 14s + - aircraft break left at around `UMEDA` + - `RJOT` 08 + - `RJOS` 11 + - `RJBE` 27 + - aircraft break right around 5DME + - 27 arrivals now stay above 2500 until established on downwind + - they will descent to 1500 and keep clear of RJBB arrivals descending overhead to 2600 + - 27 arrivals on base no longer conflict with RJBB 24 arrivals descending below 2600 + - 27 departures can now fly under 27 arrivals to reach `MAIKO` + - or climb above 3500 to clear if the arrival is further out + - Added `RJBB` ILS Y approaches + - Revised `RJOO` `MIRIO`, `JANGO` entry points + - Added `RJOO` RNAV 32L approaches + - Added another runway configuration + - Overhauled `RJOO` departure routes + - 32R `ASUKA` departures no longer turn right + - Corrected departure fixes based on ITE radials + - Added `FOSTA` transition + - Overhauled `RJBB` Kansai and Nanko departures + - Planes now correctly fly over fly-over waypoints + - 24L Kansai departures no longer turn left + - Improved the shape of many restricted areas - `CUE` Otsu VORDME decommissioned - `MIDER` established - `RJOO` OTSU FIVE DEPARTURE and KOMATSU TRANSITION abolished - `RJOO` PANAS ONE DEPARTURE and KOMAZ TRANSITION established - `RJBE` OTSU TRANSITION abolished - - `RJBE` MIDER TRANSITION established \ No newline at end of file + - `RJBE` MIDER TRANSITION established + - Added `RJOY` Yao + - Only runway 09-27 + - Added many new GA aircraft types diff --git a/final/AS/JPN/RJBB_readme_JA.md b/final/AS/JPN/RJBB_readme_JA.md new file mode 100644 index 0000000..58e8582 --- /dev/null +++ b/final/AS/JPN/RJBB_readme_JA.md @@ -0,0 +1,363 @@ +# `RJBB` 進入管制区 3.0.0 + +*作者は日本人ではありません。以下の文章には間違っている日本語、または間違っている情報が含まれている場合があります。ご了承いただければ幸いです。 + +KANSAI ACA(関西進入管制区)を[Endless ATC](https://steamcommunity.com/app/666610)に追加するMODです。`RJBB`関西国際空港、`RJOO`大阪国際空港(伊丹)、`RJBB`神戸空港、`RJOS`徳島空港、`RJOT`高松空港、`RJOB`岡山空港、そして`RJOY`八尾空港が再現されています. 空域の上限はFL180です. + +AIP Japan 2021/05/20 (国土交通省) (https://aisjapan.mlit.go.jp/) をもとに作成しています。 再現されているSID及びSTARは現実の運用と異なる場合があるかもしれませんが、基本的に日中の景気気象状態 (IMC) を再現しているつもりです。すべての航空機がRNAV対応としていて、RNAVの代わりがない場合を除き非RNAVのSID及びSTARは実装されていません。海岸のデータは[naturalearthdata.com]のを使っています。 + +STARはこのゲームの進入方式で再現されています。進入方式に従って飛行することをを許可できる飛行機は有効なポイントに向かっていなければなりません。友好のポイントにDCTの指示を出した後、ILSの指示の代わりにAPP指示を出せます。一つのポイントから複数の進入方式が始まる場合もあります。指示を確定する前にまたAPPのボタンをクリック/キーを押すと次の進入方式に変わります。選択している飛行機がすでに進入方式に従って飛行しているならば、いったんDCTでポイントに向かう指示を選択しなければ飛行方式の変更はできません。 + +KANSAI ACAの南部の直下にあるTOKUSHIMA ACA (徳島進入管制区)はゲームの仕様上、KANSAI ACAの一部として実装しています。`RJOS`発着便のみTOKUSHIMA ACA (`OS`の表示がある空域)に入れます。 + +ゲームの仕様上、快適に遊べるように本作ではKANSAI ACAの空域を`OHDAI`の周りに中部へ、または`ROKKO`と`WAKIT`の周りに北へ拡大しています。高知空港はゲームの仕様上実装するのは困難なため、省略されています. 高知県民には申し訳ございません。`RJOO`/`RJBB`発着の`RJOK`便もゲームの仕様上再現できません。 + +## 登場する空港 + +### `RJBB` 関西国際空港 + +*未翻訳 +The main airport of this airspace, Kansai handles both domestic and international traffic to the Kansai region (Osaka, Kobe, Kyoto, Nara, etc). Arrivals/departures will fly over RJBE Kobe to the north, and care should taken here to maintain separation of aircraft. + +There is custom traffic for `RJBB`. The proportions are very much estimates but shouldn't be too far off from reality. + +Many fixes visible on the map have a defined hold including some key fixes along the STARs. + +Aircraft arrive at: + +- (`SAEKI`) -> `ALISA` (northwest from Korea/northern China and northeast from NE Japan, Europe) +- (`RANDY`) -> `BERTH` (west from Fukuoka, western Japan, China) +- (`KARIN`) -> `BECKY` (southwest from southwestern Japan, Taiwan, HK, Singapore, Malaysia, etc.) +- (`EVERT`) -> `CANDY` (southwest from Philippines, south from Indonesia/Oceania, east from Nagoya/PACOTS) +- (`KOHWA`) -> `SINGU` -> `DANDE` (east from RJTT Tokyo, RJAA Narita, RJSS Sendai, RJSF Fukushima) + +Aircraft depart via: + +- `KEC` (east for `RJAA` Narita, PACOTS) +- `SHTLE` (east for `RJTT` Tokyo) +- `UENOH` (northeast to Tohoku, southeast Hokkaido) +- `SIGAK` (northeast to northwest Hokkaido, east NA, Europe) +- `YME` (northeast to northeastern China) +- `SOUJA` (northwest to Korea, northern China, Europe) +- `WASYU` (west to western Japan/Jeju) +- `HABAR` (west to China) +- `POPPY` (southwest to Taiwan, HK, Singapore, Malaysia, etc.) + +There are two runways: + +- 06R/24L (RWY A) +- 06L/24R (RWY B) + +Note that simultaneous parallel independent approaches do not appear to be in use at RJBB. It is possible in the game, but the approaches are not built with this in mind. Of course, you can still do simultaneous parallel dependent approaches with staggered sequencing, which can help with dealing with wake turbulence separation. + +The preferred runway is generally RWY A as the main terminal 1 is much closer to RWY A. LCC carriers operating from terminal 2 would have a shorter taxi from RWY B. + +STARs are available from `ALISA`, `BERTH`, `BECKY`, `CANDY`, `DANDE`, and approach modes can be activated from those fixes as well as intermediate fixes on the STARs, as well as fixes on airways joining to the STARs. + +There are two landing configurations: + +- Landing/departing RWY 06L/06R + +This is the preferred configuration for RJBB. + +Vectors can be used for sequencing, or direct to fix shortcuts can also be issued (or both). Approaches are available from `ALLAN` and `BERRY`, and approaches from GATES are available from `JANET` and `JENNY`. + +Use care not to descend arrivals into Tokushima ACA. Cross TANTA (from ALISA), NALTO (from BERTH), EVIAN, DATIS, JOLLY +6000 (at or above 6000). + +Departures will be climbing over `RJBE` departures from 09, use care to maintain separation. Departures may also join paths after diverging initially especially after `MAIKO`, and may conflict with departures from `RJOO` and `RJBE` northwest of MAIKO. + +The published hold for missed approaches is `LILAC` +3000 for 06L, `AKASI` +4000 (via MAIKO) for 06R. + +- Landing/departing RWY 24L/24R + +This is the south wind configuration for RJBB. + +Vectors onto the localizer should NOT be used. Approaches are available from `MAYAH` (24L), or `AMBER` (24L) and `BEIGE` (24R). Arrivals can be vectored over the sea west of Awaji Island if needed on top of `RJBE` arrivals. + +Use care not to descend arrivals into the `RJBE` PCA. Cross JOLLY (from DANDE) +8000, AWAJI +7000, MAYAH 4000 (**at** 4000). Aircraft should descend as per the approach after MAYAH in order to main separation from `RJBE` traffic. Note that due to the lack of circle to land approaches in Endless ATC, `RJBE` 27 arrivals will fly a long downwind at ~1300 and may conflict with `RJBB` 24 arrivals leaving 2600. Having the `RJBE` arrival fly slightly ahead of an overhead `RJBB` arrival should allow for separation to be maintained. + +Departures to the west will be climbing through arrivals descending to 4000 from `AWAJI` to `LILAC` to `MAYAH` and over `RJBE departures`. Departures over `DAISY` should cross `DAISY` +6000 and JULIA +8000. Departures over HELEN should cross `HELEN` +8000. Due care will need to be taken to maintain separation. Recommend descending to arrivals to 4000 after `AWAJI`, and expediting climb of departures from 24R. Departures to the west may also conflict with `RJBE` departures and `RJOO` departures to the west. + +Departures to the south may conflict with arrivals from DANDE and the south/southwest. Use caution. + +### `RJOO` 大阪国際空港(伊丹) + +*未翻訳 +An airport near the heart of Osaka, only domestic traffic is handled aside from the odd state aircraft. Mountains surround the airport to the north, west, and east. + +There is custom traffic for `RJOO`. The proportions are very much estimates but shouldn't be too far off from reality. + +Aircraft arrive at: + +- `ROKKO` (northwest from northwestern Japan, northeast from northeastern Japan) +- `KODAI` (east from eastern Japan) +- `KAZRA` -> `MIRIO` -> `KAINA` -> `IZUMI` (west from western Japan) +- `JANGO` -> `MIRIO` -> `KAINA` -> `IZUMI` (west from western Japan) +- `MUGIE` -> `HONMA` -> `KAINA` -> `IZUMI` (southwest from southwestern Japan) + +Aircraft depart via: + +- `SHTLE` (east for Tokyo) +- `MINAC` (northeast to Tohoku, Hokkaido) +- `TOZAN` (northwest to Taiwan, HK, Singapore, Malaysia, etc.) +- `SOUJA` (west to north Kyushu) +- `WASYU` (west to western Japan, central Kyushu) +- `KRE` (southwest to southwestern Japan, south Kyushu) + +There are two runways: + +- 14R/32L +- 14L/32R + +Larger aircraft land 14R/32L, as 14L/32R is generally only suitable for aircraft A320/B738 or smaller. It is not possible to model this in the game however. + +Note that simultaneous parallel independent approaches are not used at `RJOO`. It is possible in the game, but the approaches are not built with this in mind. Of course, you can still do simultaneous parallel dependent approaches with staggered sequencing, which can help with dealing with wake turbulence separation, however, this would not be used in reality as the runways are too close to each other. + +Airspace to vector arrivals for sequencing is avaiable south of IKOMA/southeast of IZUMI/west of KODAI. Arrivals will fly over `RJOY` Yao, use care not to descend into YAO airspace. Use care to keep separation at `KAINA`, `ROKKO` and near `IKOMA`. + +West departures may conflict with other aircraft on west departures. Use caution. + +The missed approach hold is IZUMI +3000. + +There are two simple runway configurations: + +- Landing and departing 32L/32R + +The preferred runway configuration. + +Due to the mountains surrounding the airport, departures make a climbing left turn towards the south. + +- Landing and departing 14L/14R + +This runway configuration is only used when winds do not allow for use of the 32s. Arrivals circle west of the airport to land the 14s within the mountainous surroundings. + +Due to the lack of circle to land approaches in Endless ATC, aircraft make long downwind to 14. Note that in real life these aircraft would have long flown into terrain, but this is the best we can do here. + +Departures may conflict with arrivals circling to 14. Use caution. + +West departures may conflict with other aircraft on west departures or arrivals to `RJBE`/`RJOT`/`RJOB`. Use caution. + +### `RJBE` 神戸空港 + +*未翻訳 +A smaller airport in Osaka Bay minutes from central Kobe. Located under to approach to the 24s at `RJBB`, typically in-out operations landing 09 and departing 27 are ideal. Unfortunately, this is not possible in Endless ATC. + +There is custom traffic for `RJBE`. The proportions are very much estimates but shouldn't be too far off from reality. + +Aircraft arrive at: + +- `GINJI` (east from eastern Japan) +- `WAKIT` (northeast from northeastern Japan) +- `RANDY` -> `BERTH` (west from western Japan) +- `KARIN` -> `BECKY` (southwest from southwestern Japan) + +Aircraft depart via: + +- `SHTLE` (east for Tokyo) +- `CUE` (east to eastern Japan) +- `YME` (northeast to Tohoku/Hokkaido) +- `SOUJA` (west to north Kyushu) +- `WASYU` (west to western Japan, central Kyushu) +- `POPPY` (southwest to southwestern Japan, south Kyushu) + +Aircraft arriving/departing `RJBE` in general will be operating under `RJBB` traffic. Ensure that arrivals are low enough before entering the bay, and that departures are clear of traffic above before issuing further climb. + +Arrivals can be vectored over the sea west of Awaji Island. + +Departures may conflict with other aircraft on west departures or arrivals to `RJOT`/`RJOB`. Use caution. + +The missed approach hold is SIOJI +3000. + +There are two simple runway configurations: + +- Landing and departing 09 + +The preferred runway configuration. Departures make a climbing right turn to depart to the west remaining under `RJBB` departures and over `RJBE` arrivals. + +- Landing and departing 27 + +This runway configuration is used when `RJBB` is landing 24, as Endless ATC requires departures to climb to a minimum of 3000 which would conflict with the `RJBB` 24 approach path. Arrivals circle to land 27, however as Endless ATC does not have circle to land approaches, arrivals make a long downwind to 27, and may conflict with RJBB arrivals leaving 2600. Having the `RJBE` arrival fly slightly ahead of an overhead `RJBB` arrival should allow for separation to be maintained. + +Departures will need to climb to 4000 or higher to clear arrivals at 3000. + +### `RJOS` 徳島空港 + +*未翻訳 +A joint-use civilian airport and JSDF-M base. Training operations with Beech King Airs are conducted by the JSDF-M from this base. Typically in-out operations landing 29 and departing 11 are ideal; unfortunately, this is not possible in Endless ATC. + +There is custom traffic for `RJOS`. The proportions are very much estimates but shouldn't be too far off from reality. + +Aircraft arrive at: + +- `JOSIN` (southeast to training areas?) +- `SINGU` -> ... -> `DATIS` (east from Tokyo) +- `KTE` -> `KULUL` -> `TSC` (west from Fukuoka) + +Aircraft depart via: + +- `KMANO` (east for Tokyo) +- `KTE` -> `WASYU` (west to Fukuoka) +- `TOSAR` (south to training areas?) + +Departures may conflict with other aircraft on southwest departures and `RJBB` `CANDY` arrivals. Use caution. + +The missed approach hold is TSC/DATIS +3000. + +There are two simple runway configurations: + +- Landing and departing 29 + +The preferred runway configuration. Departures make a climbing left turn to depart to the southeast. + +- Landing and departing 11 + +This runway configuration is used when winds do not allow straight-in 29. Arrivals circle to land 11, however as Endless ATC does not have circle to land approaches, arrivals make a long downwind to 11. + +### `RJOT` 高松空港 + +*未翻訳 +An airport nestled up against mountains to the south serving Takamatsu. + +There is custom traffic for `RJOT`. The proportions are very much estimates but shouldn't be too far off from reality. + +Aircraft arrive at: + +- `GINJI` (east) +- (`TAKMA`) -> `KTE` (west/southwest) +- (`YUBAR`) -> `OYE` -> `KTE` (northwest) + +Aircraft depart via: + +- `SHTLE` (east) +- `WASYU` (west) +- `TAROH` (north) + +The missed approach hold is KTE +5000. + +There are two simple runway configurations: + +- Landing and departing 26 + +The preferred runway configuration. + +- Landing and departing 11 + +This runway configuration is used when winds do not allow straight-in 26. Arrivals circle to land 11, however as Endless ATC does not have circle to land approaches, arrivals make a long downwind to 11. + +### `RJOB` 岡山空港 + +*未翻訳 +An airport situated in the mountains serving Okayama. + +There is custom traffic for `RJOB`. The proportions are very much estimates but shouldn't be too far off from reality. + +Aircraft arrive at: + +- `GINJI` (east) +- `WAKIT` (northeast) +- (`YUBAR`) -> `OYE`(north) +- (`TAKMA`) -> `INOOK` (west/southwest) + +Aircraft depart via: + +- `SHTLE` (east) +- `YME` (northeast) +- `YUBAR` (north) +- `WASYU` (west) + +The missed approach hold is `OYE`/`BENES` +4000. + +There are two simple runway configurations: + +- Landing and departing 07 + +The preferred runway configuration for arrivals from the west. A RNAV AR approach utilizing RF legs to circle to 07 from the east is available in reality but the final leg is too short to be reproducible in Endless ATC. Therefore, east arrivals fly the ILS from OYE. + +- Landing and departing 25 + +The preferred runway configuration for arrivals from the east. The straight-in to 25 is an RNAV approach as there is no ILS for 25. + +### `RJOY` 八尾空港 + +*未翻訳 +A small airport near Osaka that acts as a general aviation gateway. + +There is custom traffic for `RJOY`. The proportions are very much estimates but shouldn't be too far off from reality. + +Aircraft arrive at: + +- (`MIDER`) -> `ITE` (east) +- `ROKKO` (north) +- (`YUBAR`) -> `OYE`(northwest) +- (`KAIFU` -> `IZARI`) -> `MIKAN` (west/southwest) +- (`NORAN`) -> `IZUMI` (southeast) + +Aircraft depart via: + +- `KCC` via `ASUKA` (east) +- `KRE` via `IZUMI`, `ITE`, `OLIVE` (southwest) +- `YME` via `IZUMI` (north) +- `YUBAR` via `IZUMI` (northwest) +- `WASYU` via `IZUMI` (west) + +The missed approach hold is `IZUMI` +4200. + +The only instrument approaches available are a VORDME or VOR circling approach from `IZUMI`. The VORDME approach is implemented with circling to all runways. Runway 13/31 is not enabled at this time, but can be easily enabled by editing [configurations] as the other relevant data is all there. + +There is a very high potential for conflicts to the west of the airport. The airport and the VORDME approach sit under the approach path for `RJOO` traffic via `IZUMI`, so you effectively have a ceiling of 5000 to work with when there is traffic overhead. Alternatively, you can vector `RJOO` arrivals to the south to clear the airspace overhead. + +Aircraft inbound to `IZUMI` via V55 from `ITE` will need to stay above `RJOO` departures and `RJBB` arrivals, while staying below `RJBB` `NANKO` departures, `RJOO` arrivals via `IZUMI`, and `RJOY` `ASUKA` departures. Aircraft departing via `IZUMI` (V55) `ITE` will also need to separated from opposite direction inbound traffic. Any aircraft going missed will also need to be separated from other `RJOY` arrivals, and in the case of landing 09, from aircraft inbound the `RJOO` 32s. + +There are two simple runway configurations: + +- Landing and departing 27 + +The calm wind configuration. Use care for `ASUKA` departures; keep them separated from arrivals inbound `IZUMI` from `ITE`, and climb them above aircraft on final for `RJOO`. + +- Landing and departing 09 + +The reverse configuration. Use care for `ASUKA` departures to keep them separated from arrivals inbound `IZUMI` from `ITE`. + +## 既知の問題点 + +- 旋回進入...............実装できていますが、かなりの余裕のあるベースターンとファイナルアプローチじゃないとミスアプローチのなるので結構広い旋回進入となっています。 + +## Changelog + +* 3.0.0 - 2021/05/xx + - ソースをリライト + - 現実にはない高度制限を削除 + - 到着機が高い速度と高度で`OHDAI`に出現するので`KODAI`にFL130/250kt制限を設定 + - 旋回侵入を一新 + - `RJOO` 14s + - `UMEDA`でleft break + - `RJOT` 08 + - `RJOS` 11 + - `RJBE` 27 + - およそ5DMEでright break + - 27 到着機はダウンウィンドに合流するまで高度2500以上を維持します + - ダウンウィンドで1500に降下して、直上の高度2600に降下する`RJBB`到着機からのセパレーションを維持します + - ベースターンで高度2600以下に降下し始める`RJBB`到着機とのセパレーションを失わないようになりました + - 27出発機は27到着木の下の高度1500ですれ違って`MAIKO`へ向かえるようになりました + - o到着機までの距離に余裕がある場合、まず高度5000に上昇して到着機の上を`MAIKO`に向かうことも可能 + - `RJBB` ILS Y 進入を実装 + - `RJOO` 到着機の `MIRIO`, `JANGO` 出現ポイントを修正 + - `RJOO` RNAV 32L 進入を実装 + - 使用滑走路の組み合わせを一つ追加 + - `RJOO`出発経路を大幅に修正 + - 32Rから`ASUKA`へ向かう出発機は離陸後右に旋回しないように修正 + - `ITE` ラジアルによる出発経路が磁気偏角を配慮していなかったことを修正 + - `FOSTA` TRANSITIONを実装 + - `RJBB`出発経路を大幅に修正 + - Fly-overポイントを通過してから旋回するように修正 + - 24Lから`KNE`へ向かう出発機が離陸後左に旋回しないように修正 + - 制限空域(特別管制区など)の形を改良 + - `CUE` 大津VORDMEを廃止 + - 代わりに`MIDER`を設定 + - `RJOO` OTSU FIVE DEPARTUREとKOMATSU TRANSITIONを廃止 + - `RJOO` PANAS ONE DEPARTUREとKOMAZ TRANSITIONを設定 + - `RJBE` OTSU TRANSITIONを廃止 + - `RJBE` MIDER TRANSITIONを設定 + - `RJOY` 八尾空港を実装 + - 09-27滑走路だけ実装 + - これに伴い小型機を大量実装 diff --git a/final/AS/JPN/RJTT_readme.md b/final/AS/JPN/RJTT_readme.md index 91c5619..a392318 100644 --- a/final/AS/JPN/RJTT_readme.md +++ b/final/AS/JPN/RJTT_readme.md @@ -6,7 +6,7 @@ Based upon AIP Japan 2021/03/25 (Ministry of Land, Infrastructure, Transport and 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. -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. +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. 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. JSDF-M base `RJTE` Tateyama and JSDF-G bases `RJTK` Kisarazu, `RJAK` Kasumigaura are not represented as it appears traffic should mostly be military helicopters, which are difficult to represent in this game. `RJTO` Oshima/`RJAN` Niijima are not represented as traffic is either helicopters or traffic to `RJTF` Chofu in `RJTY` Yokota ACA. Unfortunately traffic to `RJTY` is difficult to represent as `RJTT` ACA has airspace on top of most of `RJTY` ACA, meaning that within the game, it is not possible to get planes to "spawn" from the appropriate region. However, the runways for `RJTO`, `RJAN`, and `RJTF` are shown on the radar map. diff --git a/final/AS/JPN/source/RJBB.txt b/final/AS/JPN/source/RJBB.txt index 85e2ac9..16cb6b3 100644 --- a/final/AS/JPN/source/RJBB.txt +++ b/final/AS/JPN/source/RJBB.txt @@ -168,11 +168,11 @@ beacons = TAMBA, N35.14.56.77, E134.48.44.04, !, Tamba TRIPY, N34.58.01.21, E134.40.03.37, !, Trippy #ARRIVAL - @IKOD5, =RJBERWY09, D4.8, !RWYHDG+180, 5 D-M-E - @BE7C0, =RJBERWY27, D4, !RWYHDG+180 - @BE7C1, BE7C0, D3.5, !RWYHDG-90 - @BE7C2, BE7C1, D3, !RWYHDG - @BE7C3, BE7C2, D3, !RWYHDG + @IKOD5, =RJBERWY09, D4.8, RWYHDG+180, !, 5 D-M-E + @BE7C0, =RJBERWY27, D4, RWYHDG+180 + @BE7C1, BE7C0, D3.5, RWYHDG-90 + @BE7C2, BE7C1, D3, RWYHDG + @BE7C3, BE7C2, D3, RWYHDG KAKEF, N34.13.45.91, E134.34.26.43, !, Kakef MARIN, N34.37.02.99, E135.01.51.14, !, Marin OKADA, N34.37.03.07, E134.39.23.84, !, Okada @@ -213,9 +213,9 @@ beacons = MUGIE, N33.35.32.07, E134.46.43.17, !, Mugie OHDAI, N34.30.59.54, E136.19.04.51, !, Oh-die OTABE, N34.39.28.94, E135.45.39.82, !, Ohtabe - @OO14F, =RJOORWYA14L, D4, !RWYHDG+180 - @OO14B, OO14F, D3.5, !RWYHDG+90 - @OO14D, OO14B, D6, !RWYHDG + @OO14F, =RJOORWYA14L, D4, RWYHDG+180 + @OO14B, OO14F, D3.5, RWYHDG+90 + @OO14D, OO14B, D6, RWYHDG RIVER, N33.53.19.73, E133.32.22.56, !, River ROKKO, N35.07.00.56, E135.18.00.92, 0, Rokko ZOROH, N33.54.40.97, E133.47.48.09, !, Zoroh @@ -246,9 +246,9 @@ beacons = SIJIL, N33.59.01.62, E134.46.25.23, !, Sijil #ARRIVAL O9FAF, N34.06.49.28, E134.42.34.10, !, RNAV Runway Two Niner - @OS11F, =RJOSRWY11, D4, !RWYHDG+180 - @OS11B, OS11F, D3.5, !192.53T - @OS11D, OS11B, D6, !102.53T + @OS11F, =RJOSRWY11, D4, RWYHDG+180 + @OS11B, OS11F, D3.5, RWYHDG+90 + @OS11D, OS11B, D6, RWYHDG OS293, N34.08.46.15, E134.32.02.68, !, Oscar Sierra 2 9 3 OS294, N34.03.37.39, E134.30.40.44, !, Oscar Sierra 2 9 4 UZUPY, N34.06.03.89, E134.46.37.86, !, Uzupy @@ -256,8 +256,8 @@ beacons = #DEPARTURE DANGO, N34.32.51.63, E133.36.54.41, !, Dango OB700, N34.47.34.2, E133.55.42.5, !, Oscar Bravo 7 0 0 - @OB07D, =RJOBRWY25, D1, !RWYHDG+180 - @OB25D, =RJOBRWY07, D1, !RWYHDG+180 + @OB07D, =RJOBRWY25, D1, RWYHDG+180 + @OB25D, =RJOBRWY07, D1, RWYHDG+180 YUBAR, N35.00.52.41, E133.35.11.03, !, Yubar #ARRIVAL AKAOH, N34.41.41.03, E133.45.34.95, !, Akaoh @@ -287,12 +287,12 @@ beacons = #ARRIVAL BRUTE, N34.20.36.96, E134.20.07.10, !, Brute FUCHU, N34.15.51.38, E133.53.45.09, !, Fuchu - @IKT05, =RJOTRWY26, D4.9, !72.9T - @OT26D, =RJOTRWY08, D3, !252.9T - @OT08D, =RJOTRWY26, D2, !72.9T - @OT8FN, =RJOTRWY08, D4, !252.9T - @OT8BS, OT8FN, D3.5, !342.9T - @OT8DW, OT8BS, D6, !72.9T + @IKT05, =RJOTRWY26, D4.9, RWYHDG+180 + @OT26D, =RJOTRWY08, D3, RWYHDG+180 + @OT08D, =RJOTRWY26, D2, RWYHDG+180 + @OT8FN, =RJOTRWY08, D4, RWYHDG+180 + @OT8BS, OT8FN, D3.5, RWYHDG-90 + @OT8DW, OT8BS, D6, RWYHDG KUKAI, N34.15.09.82, E134.07.10.65, !, Kukai POPAI, N34.16.55.44, E134.16.59.48, !261, Popai SANPO, N34.15.42.36, E134.12.11.11, !, Sanpo @@ -305,13 +305,13 @@ beacons = OBOKE, N34.00.53.91, E133.55.17.46, !, Oboke #ARRIVAL IZARI, N33.56.01.20, E134.53.15.78, !, Izari - @OY9F1, =RJOYRWYA09, D4, !RWYHDG+180 - @OY7F1, =RJOYRWYA27, D4, !RWYHDG+180 - @OY7B1, OY7F1, D3.5, !RWYHDG-90 - @OY3F1, =RJOYRWYB13, D4, !RWYHDG+180 - @OY3B1, OY3F1, D3.5, !RWYHDG-90 - @OY1F1, =RJOYRWYB31, D4, !RWYHDG+180 - @OY1B1, OY1F1, D3.5, !RWYHDG+90 + @OY9F1, =RJOYRWYA09, D4, RWYHDG+180 + @OY7F1, =RJOYRWYA27, D4, RWYHDG+180 + @OY7B1, OY7F1, D3.5, RWYHDG-90 + @OY3F1, =RJOYRWYB13, D4, RWYHDG+180 + @OY3B1, OY3F1, D3.5, RWYHDG-90 + @OY1F1, =RJOYRWYB31, D4, RWYHDG+180 + @OY1B1, OY1F1, D3.5, RWYHDG+90 #RJOP RJOP, N34.00.19, E134.37.35, !, Komatsushima ARP @@ -4066,7 +4066,6 @@ route = @!CHIZU route = @WASYU3 !OT26D !WASYU - !WASYU route = @TAROH3 !OT26D @@ -4109,7 +4108,6 @@ route = @SAYOH2 route = @WASYU3 !OT08D !WASYU - !WASYU route = @TAROH3 !OT08D @@ -4505,6 +4503,12 @@ route = @!V55V28V38V53 !POPPY !KRE +route = @!V55 + !ITE + !SANDA + !ROKKO + !YME + route = @!ASUKA7 !@YOE281D4 !@YOE281D7 @@ -4530,6 +4534,11 @@ route = @!IZUMI2 @!V55V28V38V53 +route = + IZUMI TWO + @!IZUMI2 + @!V55 + route = ASUKA SEVEN @!ASUKA7 @@ -4561,6 +4570,11 @@ route = @!IZUMI2 @!V55V28V38V53 +route = + IZUMI TWO + @!IZUMI2 + @!V55 + route = ASUKA SEVEN @ASUKA7 @@ -4584,6 +4598,11 @@ route = @!IZUMI2 @!V55V28V38V53 +route = + IZUMI TWO + @!IZUMI2 + @!V55 + route = ASUKA SEVEN @!ASUKA7 @@ -4607,6 +4626,11 @@ route = @!IZUMI2 @!V55V28V38V53 +route = + IZUMI TWO + @!IZUMI2 + @!V55 + route = ASUKA SEVEN @!ASUKA7 diff --git a/tools/README.md b/tools/README.md index eb27075..e2018cf 100644 --- a/tools/README.md +++ b/tools/README.md @@ -1,16 +1,392 @@ -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. +# Endless ATC Custom Airport Tools 0.9.0 -The tools are Python 3 scripts. They have not been tested in Python 2. There should be no dependencies. +In this directory are a few tools useful for writing Endless ATC airport files. You can see examples of its usage in `RJTT` and `RJBB`. -Depending on your platform, you will need to run 'python3 deploy.py', 'python deploy.py', or possibly even 'deploy.py' will work. +The tools are Python 3 scripts. They have not been tested in Python 2 and likely will not work. The tools have only been tested with Python 3.9. Python 3.5.3 or newer is likely required, but versions older than 3.9 have not been tested. -For further help, view the help available by running 'python deploy.py -h' +You will need PyGeodesy for full functionality. However, if the file being built does not use advanced functionality, you should be able to build without PyGeodesy installed (this is untested). To install PyGeodesy, (activate your `venv` if you don't want it installed to your system Python), then run `pip install PyGeodesy`. -If you find any bugs, you can report on the community Discord. +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 in the `#tools-python` channel. You can also ask for assistance there with using the tool. + +## Features + +This is an incomplete list; there are features that are not yet documented here. + +### Build from source + +Work from a source file that will be built into a product file readable by the game. The source file uses extensions on the game's existing syntax; any file readable by the game is also readable as a source file by the tools. + +This allows writing custom airports in a much more human-readable form. + +### Auto-numbering of sections and routes + +Sections that are numbered will be renumbered. Such sections can also have numbering omitted. Routes will also be renumbered (and can have numbering omitted). + +Applicable sections: + +* `[airport]` +* `[area]` +* `[approach]` +* `[departure]` +* `[transition]` +* `route=` + +### Fix definitions and references + +Fixes defined in `[airspace]` `beacons=` are stored in a database for reference elsewhere in the file. +If you specify `!` as the heading, the fix will be "hidden" and not be drawn on the map unless called for elsewhere in the file. A hold heading can be specified after the `!` if necessary. + +Any fixes can be referenced by name later in the following areas using `!` instead of `` unless indicated otherwise: + +* `[airspace]` `boundary=` +* `[airport]` + - `sids=` + - This is intended to be used for drawing "hidden" fixes on the map that aren't meant to be used by arrival aircraft, as you cannot issue DCT to these fixes + - However, if you are not using `[departure]`s, then these will function as usual +* `[area]` + - `position=` + - `points=` +* `[approach]` + - `route=` + - Restrictions can be specified as normal + - `beacon=` + - `!` is optional + - If the referenced fix is "hidden", the fix definition will be substituted in, so that the fix is drawn on the map while the approach is available +* `[departure]` + - `route=` + +### Advanced fix definitions (requires PyGeodesy) + +If PyGeodesy is available, the below functions are also available. The tool will error if a file being built tries to use advanced fix definitions when PyGeodesy is not available. + +Advanced fix definitions can be used in `[airspace]` `beacons=`, or special name prefixes can be used to define fixes "inline" using references. + +#### Runway fixes + +All runway ends will be available for reference under the name `=`. + +#### Defining fixes by radial and distance + +You can define a fix as a radial and distance from another fix in `[airspace]` `beacons=` using the following syntax: + +``` +@, , , [, , ] +``` + +* `` is the name of another fix from which the radial and distance is calculated. +* `` is a distance from `` in the following format: `D`, e.g. `D4`, `D21.9` +* `` is the radial from ``, e.g. `325`, `4`, `91`. + - Magnetic variation is considered as defined in `[airspace]` `magneticvar=`. You can add `T` as a suffix to indicate a true heading, e.g. `270T` + - If `` is a runway fix, the generated fix is also a runway fix. In such case, `` can also be specified as `RWYHDG[<+ or ->]`. E.g. `RWYHDG+180`, `RWYHDG-90`. + +You can also reference a fix using the below name format, and if a fix with the same name doesn't exist already, it will generate it on the fly: + +```@``` + +For example: + +```INI +# PANAS ONE departure from RJOO 32L +route = @PANAS1 + !O2L50 + !O2L51 +# 8 DME (nmi) outbound from ITE Itami VORDME on radial 101 (magnetic) + !@ITE101D8 + !PANAS +``` + +#### Defining fixes as intersection of two radials + +You can define a fix as the intersection of two radials using the following syntax: + +``` +#, , , , [, , ] +``` + +* `` is the fix from which the respective radial is based on. +* `` is the heading of the respective radial. + - Magnetic variation is considered as defined in `[airspace]` `magneticvar=`. You can add `T` as a suffix to indicate a true heading. + +You can also reference a fix using the below name format, and if a fix with the same name doesn't exist already, it will generate it on the fly: + +```#``` + +For example: + +```INI +# KOBE FOUR departure from RJBE 09 +route = @KCE4 + !@YOE274D20 +#Intersection of YOE Yao VORDME radial 274 and KNE Kansai VORDME radial 323 + !#YOE274KNE323 +#KNE R323 at KCE R272 + !#KNE323KCE272 + !MAIKO +``` + +#### Defining fixes as an intersection of two circles + +You can define a fix as an intersection of two circles using the following syntax: + +``` +&, , , , , [, , ] +``` + +* `` is the fix from which the respective circle is based on. +* `` is the radius in nmi of the respective circle in the following format: `D` +* `` is the a cardinal direction N, S, W, or E. As two intersecting circles usually intersect at two points, the fix position will be the intersection that is relative to the other intersection. + +You can also reference a fix using the below name format, and if a fix with the same name doesn't exist already, it will generate it on the fly: + +```&.``` + +For example: + +```INI +# excerpt from definition of Yao Control Zone +[area] +shape = polygon +altitude = 2001 +name = OY +draw = 50 +labelpos = N34.35.00, E135.36.00 +points = +# The eastmost intersection of two circles defined as follows: +# 1: center = fix OOPR1, radius = 4.5nmi +# 2: center = fix RJOY, radius = 5nmi + !&OOPR1D4.5&RJOYD5.E + N34.40.05.00, E135.38.22.00 + !@OOPR1110TD4.5 + !@OOPR1115TD4.5 + ... +``` + +### Joining approach routes + +An approach route can start with `@` to tag the route with a name. Any approach lower in the file with the same `runway=` or no `runway=` can specify `@` as the last item in their `route=` to continue on to specified route. + +For example: + +```INI +[approach] +runway = RJBBRWYA, rev +beacon = AMBER +# the below route is tagged with the name ILSZ24L +route = @ILSZ24L + 58 + !MAYAH, 4000 + !BB450, 2600, 185 + !BB451 + !BB452 + !BEIGE + 5.5, 1200, 185 + + +# defining an approach with the same route, but activated off a different beacon +[approach] +runway = RJBBRWYA, rev +beacon = MAYAH +route = + 58 +# this route is just a carbon copy of the above + @ILSZ24L + + +# defining a SID to connect to the above approach +[approach] +runway = RJBBRWYA, rev +beacon = ALISA + +route = @ALISAC24L + 180 + !ALISA + !TANTA, !140 + !AWAJI, !58@AWAJI24L + !LILAC, !58 +# continue the route as per ILSZ24L. +# So after LILAC, proceed to MAYAH max 4000ft, BB450 max 2600ft 185kt, etc. + @ILSZ24L +``` + +If an approach route starts with `@!`, then the first point in the route is omitted when the route is referenced later. This is useful when defining approach routes that start already on the localizer. + +For example: + +``` +# RJOO ILS 32L +[approach] +runway = RJOORWYB +beacon = IKOMA + +# IKOMA is actually a point on the localizer 14.2 nmi from the runway. +route = @!ILS32L + 322 + !IKOMA + 14.2, 3500, 200 + +# HABIK ARRIVAL STAR into RJOO +[approach] +beacon = IZUMI +route = @HABIK + 41 + !IZUMI + !HABIK, !296 +# after HABIK, the route continues with 14.2, 3500, 200. +# !IKOMA is omitted. + @ILS32L +``` + +In an approach route, if the last item in a line with a fix reference is `![@]`, an approach will be generated for the same runway activating from that fix. There will only be one route, the route inbound heading will be ``, and the route consists of the rest of the declaring route. `@` is optional; this will tag the route of the generated approach for reference by other approaches. + +For example: + +```INI +[approach] +runway = RJBBRWYA, rev +beacon = ALISA + +route = @ALISAC24L + 180 + !ALISA +# an approach for runway (RJBBRWYA, rev) activating from TANTA will be generated with the following route: +# [140, !TANTA, !AWAJI, !LILAC, @ILSZ24L] + !TANTA, !140 +# an approach activating from TANTA will be generated with the following route: +# [58, !AWAJI, !LILAC, @ILSZ24L] +# this route can be referenced by the name AWAJI24L + !AWAJI, !58@AWAJI24L +# you can specify altitude (and speed restrictions) still, as long as the ! is last + !LILAC, 4000, !58 + @ILSZ24L + +# defining an approach that references a generated approach +[approach] +runway = RJBBRWYA, rev +beacon = BERTH + +route = @BERTHC24L + 90 + !BERTH +# continue to AWAJI, LILAC, then further via ILSZ24L + @AWAJI24L +``` + +An approach `route=` under an `[approach]` that doesn't specify a `runway=` can specify a comma-separated list of `@` as the last item in their route. Each `<@name>` should be for a different runway. This will create an approach for each runway. + +``` +# HABIK ARRIVAL STAR into RJOO +[approach] +# note that no runway was defined +beacon = IZUMI +# yes, you can join a route to this route by having @HABIK at the end of a route. 4 approaches will be generated for that route. +route = @HABIK + 41 + !IZUMI + !HABIK, !296 +# continue on via the ILS 32L, the RNAV 32R, +# the ILS 32L circle to land 14R, or the ILS 32L circle to land 14L. + @ILS32L, @RNAV32RIKOMA, @ILS32LC14R, @ILS32LC14L +# In total, 4 approaches will result from this one route definition. +``` + +### Joining departure routes + +A departure route can start with `@` which makes the route a "segment". A segment will not be output in the product. This segment will be available for reference in the current `[departure]`. This is useful for defining initial departure segments unique to specific runways. + +Alternatively, a departure route can start with `@!` which also makes the route a "segment", but available to all subsequent `[departure]`s including the current one. This is useful for defining transition segments common to all runways. + +To use these segments, a departure route can include after the route name line an unlimited number of `@` lines , which will be substituted with the respective segment. + +For example: + +``` +# excerpt from Takamatsu departures +[departure] +runway = RJOTRWY + +# All these routes with tags will not be in the product. + +# TAROH THREE departure available only in this [departure] +route = @TAROH3 + !OT26D + !TAROH + +# MIHO TRANSITION available in all [departure]s +route = @!MIHO + !MIHOU + +route = @OLIVE2 + !OT26D + !OLIVE + +route = @!SHTLE + !HYOGO + !SANDA + !SHTLE + +# the two routes below will be in the final product +# the resulting route is OT26D TAROH MIHOU +route = + TAROH THREE MIHO TRANSITION + @TAROH3 + @!MIHO + +# the resulting route is OT26D OLIVE HYOGO SANDA SHTLE +route = + OLIVE TWO SHTLE TRANSITION, Olive Two Shuttle Transition + @OLIVE2 + @!SHTLE + + +[departure] +runway = RJOTRWY, rev + +# we redefine the TAROH THREE departure as it is different depending on the runway +route = @TAROH3 + !OT08D + !TAROH + +# same here +route = @OLIVE2 + !OT08D + !OLIVE + +# note that we can reference !MIHO that was defined in the above [departure] +route = + TAROH THREE MIHO TRANSITION + @TAROH3 + @!MIHO + +route = *4 + OLIVE TWO SHTLE TRANSITION, Olive Two Shuttle Transition + @OLIVE2 + @!SHTLE +``` ## Changelog * 0.8.0 - 2021/02/20 - Added generated approaches feature - - Tagged approaches are now runway-specific + - Tagged approach routes are now runway-specific - Added argument to test loading from common callsigns - - Added argument to parse source and build, not do not write product \ No newline at end of file + - Added argument to parse source and build, not do not write product +* 0.9.0 - 2021/05/24 + - `[section]s` and `route=`s in source are no longer renumbered on disk + - This means the build process no longer changes the source file + - You can omit numbering for all sections and `route=`s now + - Approach routes can now join to multiple tagged approach routes + - Such approaches should omit `runway=` + - The build process will infer the `runway=` from the final `route=` + - Added argument to ignore `draw=` in `[area]`s for debug purposes + - Added support for fix references ikn `[area]` `position=` + - Added generated fixes feature (requires PyGeodesy) + - Runway ends are available as fixes with name `=` + - Defining fixes by distance on a radial + - Defining fixes as the intersect of two radials + - Defining fixes as the intersect of two circles + - Added support for creating fixes on the fly from references in `route=`s + - Only works for generated fixes, you cannot define a fix by position in a `route=` + - It should now be easier to tell where a build failed (at the cost of long error messages) diff --git a/tools/expand.py b/tools/expand.py index 796d8e1..82d9e25 100644 --- a/tools/expand.py +++ b/tools/expand.py @@ -7,9 +7,15 @@ import os import re from typing import ClassVar, Optional -from pygeodesy.dms import parseDMS, toDMS, F_SEC -from pygeodesy.sphericalTrigonometry import LatLon -from pygeodesy.utily import ft2m +try: + import pygeodesy + from pygeodesy.dms import parseDMS, toDMS, F_SEC + from pygeodesy.sphericalTrigonometry import LatLon + from pygeodesy.utily import ft2m +except ModuleNotFoundError as e: + print(f"PyGeodesy could not be imported from name {e.name}. Advanced functions not available.") + print("Proceeding to attempt build in basic mode.") + pygeodesy = None """Endless ATC custom airport file build utility.""" @@ -218,13 +224,13 @@ class RunwayFix(Fix, name_prefix="="): class RadialDMEFix(Fix, name_prefix="@"): - def __init__(self, name, fix=None, distance=None, heading="!", pronunciation=""): + def __init__(self, name, fix=None, distance=None, radial=None, heading="!", pronunciation=""): if fix is None: try: - match = re.match(r'@(?P[a-zA-Z0-9]+)(?P\d{3}[Tt]?)D(?P[0-9]+(?:\.[0-9]+)?)', name) + match = re.match(r'@(?P[a-zA-Z0-9]+)(?P\d{3}[Tt]?)D(?P[0-9]+(?:\.[0-9]+)?)', name) fix = match['fix'] distance = float(match['distance']) - heading = match['heading'] + radial = match['radial'] pronunciation = f"{Fix.fixes[fix].pronunciation} {heading} Radial {distance} D-M-E" except Exception as e: raise RuntimeError(f"failed to create fix from {name}") from e @@ -232,8 +238,9 @@ class RadialDMEFix(Fix, name_prefix="@"): name = name.strip('@') fix = fix.strip() distance = float(distance.strip().lstrip('D')) + radial = radial.strip() heading = heading.strip() - latlon = Fix.fixes[fix].nmi_on_heading(distance, heading) + latlon = Fix.fixes[fix].nmi_on_heading(distance, radial) self.runway_heading_true = getattr(latlon, 'runway_heading_true', None) super().__init__(name, heading=heading, pronunciation=pronunciation, latlon=latlon) @@ -741,10 +748,11 @@ def process(args, input_file=None, preprocessed_input=None): # add runways to fix database airports = {section: source[section] for section in source if section.startswith('airport')} - for airport_data in airports.values(): - runways = airport_data['runways'].strip().splitlines() - for runway_definition in runways: - RunwayFix.from_definition(runway_definition).reciprocal() + if pygeodesy: + for airport_data in airports.values(): + runways = airport_data['runways'].strip().splitlines() + for runway_definition in runways: + RunwayFix.from_definition(runway_definition).reciprocal() # build a fix database from [airspace] beacons= for definition in source['airspace']['beacons'].strip().splitlines():