mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
441 lines
9.5 KiB
Python
441 lines
9.5 KiB
Python
"""Extra airfield data that is not exposed by pydcs.
|
|
|
|
Remove once https://github.com/pydcs/dcs/issues/69 tracks getting the missing
|
|
data added to pydcs. Until then, missing data can be manually filled in here.
|
|
"""
|
|
from dataclasses import dataclass, field
|
|
from typing import Dict, List, Optional
|
|
|
|
|
|
RadioFrequency = str
|
|
|
|
|
|
@dataclass
|
|
class AtcData:
|
|
hf: RadioFrequency
|
|
vhf_fm: RadioFrequency
|
|
vhf_am: RadioFrequency
|
|
uhf: RadioFrequency
|
|
|
|
|
|
@dataclass
|
|
class AirfieldData:
|
|
"""Additional airfield data not included in pydcs."""
|
|
|
|
#: ICAO airport code
|
|
icao: Optional[str] = None
|
|
|
|
#: Elevation (in ft).
|
|
elevation: int = 0
|
|
|
|
#: Runway length (in ft).
|
|
runway_length: int = 0
|
|
|
|
#: TACAN channel as a string, i.e. "74X".
|
|
tacan: Optional[str] = None
|
|
|
|
#: TACAN callsign
|
|
tacan_callsign: Optional[str] = None
|
|
|
|
#: VOR channel as a string, i.e. "114.90 (MA)".
|
|
vor: Optional[str] = None
|
|
|
|
#: RSBN channel as a string, i.e. "ch 28 (KW)".
|
|
rsbn: Optional[str] = None
|
|
|
|
#: Radio channels used by the airfield's ATC.
|
|
atc: AtcData = AtcData("", "", "", "")
|
|
|
|
#: Dict of runway heading -> ILS frequency.
|
|
ils: Dict[str, RadioFrequency] = field(default_factory=dict)
|
|
|
|
#: Dict of runway heading -> PRMG info, i.e "ch 26 (KW)"
|
|
prmg: Dict[str, str] = field(default_factory=dict)
|
|
|
|
#: Dict of runway heading -> outer ndb, i.e "408.00 (KW)"
|
|
outer_ndb: Dict[str, str] = field(default_factory=dict)
|
|
|
|
#: Dict of runway heading -> inner ndb, i.e "803.00 (K)
|
|
inner_ndb: Dict[str, str] = field(default_factory=dict)
|
|
|
|
def ils_freq(self, runway: str) -> Optional[RadioFrequency]:
|
|
return self.ils.get(runway)
|
|
|
|
|
|
# TODO: Add more airfields.
|
|
AIRFIELD_DATA = {
|
|
|
|
# TODO : CAUCASUS MAP
|
|
"Batumi": AirfieldData(
|
|
"UGSB",
|
|
32, 6792,
|
|
"16X", "BTM",
|
|
"", "",
|
|
AtcData("4.250", "131.000", "40.400", "260.000"),
|
|
{"13": "110.30 (ILU)"},
|
|
{},
|
|
{},
|
|
{}
|
|
),
|
|
|
|
"Kobuleti": AirfieldData(
|
|
"UG5X",
|
|
59, 7406,
|
|
"67X", "KBL",
|
|
"", "",
|
|
AtcData("4.350", "133.000", "40.800", "262.000"),
|
|
{"7": "111.50 (IKB)"},
|
|
{},
|
|
{"7": "870.00 (KT)"},
|
|
{"7": "490.00 (T)"},
|
|
),
|
|
|
|
"Senaki-Kolkhi": AirfieldData(
|
|
"UGKS",
|
|
43, 7256,
|
|
"31X", "TSK",
|
|
"", "",
|
|
AtcData("4.300", "132.000", "40.600", "261.000"),
|
|
{"9": "108.90 (ITS)"},
|
|
{},
|
|
{"9": "335.00 (BI)"},
|
|
{"9": "688.00 (I)"},
|
|
),
|
|
|
|
"Kutaisi": AirfieldData(
|
|
"UGKO",
|
|
147, 7937,
|
|
"44X", "KTS",
|
|
"113.60 (KT)", "",
|
|
AtcData("4.400", "134.000", "41.000", "263.000"),
|
|
{"8": "109.75 (IKS)"},
|
|
{},
|
|
{},
|
|
{},
|
|
),
|
|
|
|
"Sukhumi-Babushara": AirfieldData(
|
|
"UGSS",
|
|
43, 11217,
|
|
"", "",
|
|
"", "",
|
|
AtcData("4.150", "129.000", "40.000", "258.000"),
|
|
{},
|
|
{},
|
|
{"30": "489.00 (AV)"},
|
|
{"30": "995.00 (A)"},
|
|
),
|
|
|
|
"Gudauta": AirfieldData(
|
|
"UG23",
|
|
68, 7839,
|
|
"", "",
|
|
"", "",
|
|
AtcData("4.200", "120.000", "40.200", "259.000"),
|
|
{},
|
|
{},
|
|
{},
|
|
{},
|
|
),
|
|
|
|
"Sochi-Adler": AirfieldData(
|
|
"URSS",
|
|
98, 9686,
|
|
"", "",
|
|
"", "",
|
|
AtcData("4.050", "127.000", "39.600", "256.000"),
|
|
{"6": "111.10 (ISO)"},
|
|
{},
|
|
{},
|
|
{},
|
|
),
|
|
|
|
"Gelendzhik": AirfieldData(
|
|
"URKG",
|
|
72, 5452,
|
|
"", "",
|
|
"114.30 (GN)", "",
|
|
AtcData("4.000", "126.000", "39.400", "255.000"),
|
|
{},
|
|
{},
|
|
{},
|
|
{},
|
|
),
|
|
|
|
"Novorossiysk": AirfieldData(
|
|
"URKN",
|
|
131, 5639,
|
|
"", "",
|
|
"", "",
|
|
AtcData("3.850", "123.000", "38.800", "252.000"),
|
|
{},
|
|
{},
|
|
{},
|
|
{},
|
|
),
|
|
|
|
"Anapa-Vityazevo": AirfieldData(
|
|
"URKA",
|
|
141, 8623,
|
|
"", "",
|
|
"", "",
|
|
AtcData("3.750", "121.000", "38.400", "250.000"),
|
|
{},
|
|
{},
|
|
{"22": "443.00 (AP)", "4": "443.00 (AN)"},
|
|
{"22": "215.00 (P)", "4": "215.00 (N)"},
|
|
),
|
|
|
|
"Krymsk": AirfieldData(
|
|
"URKW",
|
|
65, 6733,
|
|
"", "",
|
|
"", "ch 28 (KW)",
|
|
AtcData("3.900", "124.000", "39.000", "253.000"),
|
|
{},
|
|
{"4": "ch 26 (OX)", "22": "ch 26 (KW)"},
|
|
{"4": "408.00 (OX)", "22": "408.00 (KW)"},
|
|
{"4": "803.00 (O)", "22": "803.00 (K)"},
|
|
),
|
|
|
|
"Krasnodar-Center": AirfieldData(
|
|
"URKL",
|
|
98, 7659,
|
|
"", "",
|
|
"", "ch 40 (MB)",
|
|
AtcData("3.800", "122.000", "38.600", "251.000"),
|
|
{},
|
|
{"9": "ch 38 (MB)"},
|
|
{"9": "625.00 (MB)", "27": "625.00 (OC)"},
|
|
{"9": "303.00 (M)", "27": "303.00 (C)"},
|
|
),
|
|
|
|
"Krasnodar-Pashkovsky": AirfieldData(
|
|
"URKK",
|
|
111, 9738,
|
|
"", "",
|
|
"115.80 (KN)", "",
|
|
AtcData("4.100", "128.000", "39.800", "257.000"),
|
|
{},
|
|
{},
|
|
{"23": "493.00 (LD)", "5": "493.00 (KR)"},
|
|
{"23": "240.00 (L)", "5": "240.00 (K)"},
|
|
),
|
|
|
|
"Maykop-Khanskaya": AirfieldData(
|
|
"URKH",
|
|
590, 10195,
|
|
"", "",
|
|
"", "ch 34 (DG)",
|
|
AtcData("3.950", "125.000", "39.200", "254.000"),
|
|
{},
|
|
{"4": "ch 36 (DG)"},
|
|
{"4": "289.00 (DG)", "22": "289.00 (RK)"},
|
|
{"4": "591.00 (D)", "22": "591.00 (R)"},
|
|
),
|
|
|
|
"Mineralnye Vody": AirfieldData(
|
|
"URMM",
|
|
1049, 12316,
|
|
"", "",
|
|
"117.10 (MN)", "",
|
|
AtcData("4.450", "135.000", "41.200", "264.000"),
|
|
{"30": "109.30 (IMW)", "12": "111.70 (IMD)"},
|
|
{},
|
|
{"30": "583.00 (NR)", "12": "583.00 (MD)"},
|
|
{"30": "283.00 (N)", "12": "283.00 (D)"},
|
|
),
|
|
|
|
"Nalchik": AirfieldData(
|
|
"URMN",
|
|
1410, 7082,
|
|
"", "",
|
|
"", "",
|
|
AtcData("4.500", "136.000", "41.400", "265.000"),
|
|
{"24": "110.50 (INL)"},
|
|
{},
|
|
{"24": "718.00 (NL)"},
|
|
{"24": "350.00 (N)"},
|
|
),
|
|
|
|
"Mozdok": AirfieldData(
|
|
"XRMF",
|
|
507, 7734,
|
|
"", "",
|
|
"", "ch 20 (MZ)",
|
|
AtcData("4.550", "137.000", "41.600", "266.000"),
|
|
{},
|
|
{"26": "ch 22 (MZ)", "8": "ch 22 (MZ)"},
|
|
{"26": "525.00 (RM)", "8": "525.00 (DO)"},
|
|
{"26": "1.06 (R)", "8": "1.06 (D)"}
|
|
),
|
|
|
|
"Beslan": AirfieldData(
|
|
"URMO",
|
|
1719, 9327,
|
|
"", "",
|
|
"", "",
|
|
AtcData("4.750", "141.000", "42.400", "270.000"),
|
|
{"10": "110.50 (ICH)"},
|
|
{},
|
|
{"10": "1.05 (CX)"},
|
|
{"10": "250.00 (C)"}
|
|
),
|
|
|
|
"Tbilisi-Lochini": AirfieldData(
|
|
"UGTB",
|
|
1573, 7692,
|
|
"25X", "GTB",
|
|
"113.70 (INA)", "",
|
|
AtcData("4.600", "138.000", "41.800", "267.000"),
|
|
{"13": "110.30 (INA)", "30": "108.90 (INA)"},
|
|
{},
|
|
{"13": "342.00 (BP)", "30": "211.00 (NA)"},
|
|
{"13": "923.00 (B)", "30": "435.00 (N)"},
|
|
),
|
|
|
|
"Soganlung": AirfieldData(
|
|
"UG24",
|
|
1474, 7871,
|
|
"25X", "GTB",
|
|
"113.70 (INA)", "",
|
|
AtcData("4.650", "139.000", "42.000", "268.000"),
|
|
{},
|
|
{},
|
|
{},
|
|
{},
|
|
),
|
|
|
|
"Vaziani": AirfieldData(
|
|
"UG27",
|
|
1523, 7842,
|
|
"22X", "VAS",
|
|
"", "",
|
|
AtcData("4.700", "140.000", "42.200", "269.000"),
|
|
{"13": "108.75 (IVZ)", "31": "108.75 (IVZ)"},
|
|
{},
|
|
{},
|
|
{},
|
|
),
|
|
|
|
# TODO : PERSIAN GULF MAP
|
|
# TODO : SYRIA MAP
|
|
# "Incirlik": AirfieldData(
|
|
# AtcData("3.85", "38.6", "129.4", "360.1"),
|
|
# "21X",
|
|
# {"050": "109.3", "230": "111.7"}
|
|
# ),
|
|
# TODO : NEVADA MAP
|
|
# TODO : NORMANDY MAP
|
|
|
|
# Channel Map
|
|
"Detling": AirfieldData(
|
|
"",
|
|
623, 2557,
|
|
"", "",
|
|
"", "",
|
|
AtcData("3.950", "118.400", "38.800", "250.400"),
|
|
{},
|
|
{},
|
|
{},
|
|
{},
|
|
),
|
|
|
|
"High Halden": AirfieldData(
|
|
"",
|
|
104, 3296,
|
|
"", "",
|
|
"", "",
|
|
AtcData("3.750", "118.800", "38.400", "250.000"),
|
|
{},
|
|
{},
|
|
{},
|
|
{},
|
|
),
|
|
|
|
"Lympne": AirfieldData(
|
|
"",
|
|
351, 2548,
|
|
"", "",
|
|
"", "",
|
|
AtcData("3.925", "118.350", "38.750", "250.350"),
|
|
{},
|
|
{},
|
|
{},
|
|
{},
|
|
),
|
|
|
|
"Hawkinge": AirfieldData(
|
|
"",
|
|
524, 3013,
|
|
"", "",
|
|
"", "",
|
|
AtcData("3.900", "38.700", "118.300", "250.300"),
|
|
{},
|
|
{},
|
|
{},
|
|
{},
|
|
),
|
|
|
|
"Manston": AirfieldData(
|
|
"",
|
|
160, 8626,
|
|
"", "",
|
|
"", "",
|
|
AtcData("3.875", "38.650", "118.250", "250.250"),
|
|
{},
|
|
{},
|
|
{},
|
|
{},
|
|
),
|
|
|
|
"Dunkirk Mardyck": AirfieldData(
|
|
"",
|
|
16, 1737,
|
|
"", "",
|
|
"", "",
|
|
AtcData("3.850", "38.600", "118.200", "250.200"),
|
|
{},
|
|
{},
|
|
{},
|
|
{},
|
|
),
|
|
|
|
"Saint Omer Longuenesse": AirfieldData(
|
|
"",
|
|
219, 1929,
|
|
"", "",
|
|
"", "",
|
|
AtcData("3.825", "38.550", "118.150", "250.150"),
|
|
{},
|
|
{},
|
|
{},
|
|
{},
|
|
),
|
|
|
|
"Merville Calonne": AirfieldData(
|
|
"",
|
|
52, 7580,
|
|
"", "",
|
|
"", "",
|
|
AtcData("3.800", "38.500", "118.100", "250.100"),
|
|
{},
|
|
{},
|
|
{},
|
|
{},
|
|
),
|
|
|
|
"Abbeville Drucat": AirfieldData(
|
|
"",
|
|
183, 4726,
|
|
"", "",
|
|
"", "",
|
|
AtcData("3.775", "38.450", "118.050", "250.050"),
|
|
{},
|
|
{},
|
|
{},
|
|
{},
|
|
)
|
|
|
|
}
|