Skip to content

Data Format

Lenny edited this page Jan 19, 2024 · 8 revisions

Data is stored in a JSON file. Generally, you should aim for one vACC per file. In some cases (e.g. vACCs with multiple, unconnected FIRs), it may be more appropriate to split data across multiple files.

Files should be formatted in accordance with the following schema:

Bounds

Deprecated.

Airspace

List of all possible ATC sectors. Sectors will always be visible unless deactivated by a time or runway restriction. It is possible to make a sector invisible without removing it by assigning it to a non-existent runway, but this is not recommended except for testing purposes. Each ATC sector is formed of sub-sectors; these must be uniform blocks with consistent lateral boundaries at all levels. Sub-sectors can then be combined to create more complex shapes.

airspace - Array of Objects

  • id - String - Name of ATC Sector
  • group - String - ID of sector's group in top-level groups array.
  • docs - Optional Array of Strings - Part of an ongoing project, not to be used outside of the UK.
  • fua - Optional Array of Objects - Date/Time restrictions on sector's availability. Not shown on the map outside of designated times.
  • owner - Array of Strings - ID of owning positions (in descending order of priority) in top-level positions array.
    • Positions from other data files can be referenced in the format country/position, where position is defined in country.json.
  • sectors - Array of Objects - Uniform blocks of airspace making up this ATC sector. Each element must have the same lateral boundaries at all altitudes.
    • min - Optional Integer - Minimum altitude (inclusive) for this sector.
    • max - Optional Integer - Maximum altitude (inclusive) for this sector.
    • runways Optional Array of Objects - Required active runways for this sector (all must be true to display).
      • icao - String - ICAO code of airport.
      • runway - String or Array of Strings - Valid runway configurations.
    • points - Array of Arrays
      • Arrays of coordinate pairs (["-ddmmss", "-dddmmss"])

Groups

Sectors must be assigned to exactly one group. Groups are used for the first line of the sector's information popup, and define colours for use in offline display.

groups - Object of Objects (Key - String - used to reference group in group element of airspace entries.)

  • name - String - Display name of group.
  • colour - String - Colour of group in offline sector displays, must be a hex value in the format "#rrggbb".

Positions

List of all assignable ATC positions. A position must be defined here before it can own any airspace or have top-down control over an airport. Airport positions (DEL, GND, TWR, APP, and DEP) do not need to be defined unless they own airspace - they automatically have top-down control over their own airport. If an airport position owns airspace or is included in the top-down control list for other airports, it must be defined here.

positions - Object of Objects (Key - String - used to reference position in owner element of airspace entries and topdown element of airport entries.)

  • colours - Optional Array of Objects - Colour of position's owned sectors in online sector displays. First valid element (starting at index 0) is used as display colour.
    • online - Optional - Array of Strings - IDs of positions which must be online to use this colour configuration.
    • hex - String - Colour, must be a hex value in the format "#rrggbb".
  • pre - Array of Strings - Valid prefixes in logon callsign (text before the first _).
  • type - String - Suffix of logon callsign (text after the final _).
  • frequency - Optional - String - Exact frequency of position. If omitted, all positions of the correct type with a valid prefix will match and be displayed together. e.g. If you want to create a catch-all ATL_CTR and display all online ATL_CTRs for every sector, to account for dynamic sectorisation.
  • callsign - String - Voice callsign of position.

Callsigns

Parameters to be used when auto-creating callsigns for undefined airport positions. This section allows freedom to differentiate between e.g. AFIS and ATC towers or Apron and Ground controllers, without defining them explicitly.

callsigns - Object of Objects (Key - String - Equivalent to type in position entries) - Used to generate generic callsigns for undefined aerodrome positions.

  • Each object may contain any number of key-value pairs, with the format:
    • Key - String - Middle section of logon callsign (empty string matches logon callsigns without a middle section).
    • Value - String - Position voice callsign (paired with airport voice callsign).

Airports

List of all possible airports. An airport must be defined here before it can be displayed, control runway-dependent airspace, or auto-create ADC positions.

airports - Object of Objects (Key - String - ICAO code of airport and/or equivalent to prefix in position entries, as desired)

  • pre - Optional Array of Strings - Valid logon callsign prefixes, if different from the airport's ICAO code. Generally not required outside of the USA and Australia.
  • callsign - String - Airport voice callsign (paired with position voice callsigns in callsigns entries to generate generic callsigns where positions does not contain a valid entry.)
  • coord - Optional Array of Decimals - Coordinate pairs (signed decimal degrees).
  • runways - Optional Array of Strings - Possible runway configurations. Only define runways if this airport's runway configuration affects airspace structure.
  • default - Optional Boolean (assumed true if omitted) - Use the default ownership structure (above TWR) for this airport (F_APP > APP > topdown).
  • topdown - Optional Array of Strings - ID of owning positions (Above TWR, in descending order of priority) in top-level positions array.
    • Positions from other data files can be referenced in the format country/position, where position is defined in country.json.
  • major - Optional String - ID of another airports entry in this file, whose ownership order (above TWR) should be followed if this airport's ownership order is exhausted. Several airports can be chained into a hierarchy in this fashion.
  • end - Optional Object of Objects (Key - String - Equivalent to type in position entries)
    • Each object may contain any number of key-value pairs, in the same format as callsigns entries. This allows the generic callsigns entries to be overriden for this airport without explicitly defining positions entries.

Airport coordinates should be the same format as in the VATSpy files (https://github.com/vatsimnetwork/vatspy-data-project). Please be aware that copying coordinates directly from this repository will require you to add an attribution to each airport in your data file.

Clone this wiki locally