AIRPORTS DEFINITION PROPERTIES
This page lists most of the different elements and attributes required to generate properly formed XML for an airport. Most of the XML shown, is created for you when you use The Scenery Editor tool - included as part of the Developer Mode toolset within Microsoft Flight Simulator. As such, we recommend that you use that tool instead of trying to create your own XML from scratch, and use this page as a reference if you need to edit the files the Scenery Editor creates.
IMPORTANT! When doing work on an already existing airport in the simulator, by default the behavior is to add the new set of data to the existing airport and not to replace the corresponding data. If the objective is to replace the previous set of data, then it is necessary to use a <DeleteAirport>
element to describe what is to be replaced.
Note that this page covers the XML required for the airport and some of it's facilities, but other things like runways and approach routes are not included here to keep the information in more manageable blocks. The links below cover the things that are not included on this page, and all of them would be used within the <Airport>
container element:
Finally, the XML document for an airport must have the following format:
<?xml version="1.0" encoding="utf-8"?>
<FSData version="9.0">
<Airport>
<!-- Airport Data Elements Here -->
</Airport>
</FSData>
The FSData
container element can only be version "9.0" and anything else will fail to parse.
<Airport>
The <Airport>
element is used to indicate the placement of airport facility information. Airports are placed according to their airport reference point and may contain a large amount of data, with the element containing one or more of the following sub-elements: <TaxiwayPoint />
, <TaxiwayParking />
, <TaxiwayPath>
, <TaxiwaySign />
, <TaxiName />
, <Tower>
, <Services>
, <Com />
, <Runway>
, <Aprons>
, <ApronEdgeLights>
, <Approach>
, <Arrival>
, <Departure>
, <Ndb>
, <Helipad />
, <Start />
, <Jetway>
, <PaintedElements>
, <DetailPolys>
, <ProjectedMesh>
, <LightSupport>
, <VectorPlacement>
, <BoundaryFence>, <BlastFence>
, <RunwayAlias>
and <DeleteAirport>
.
The <Airport>
element encloses all other elements for the airport definition and it has the following attributes, mainly to describe where it is and the information to be displayed on the world map:
Attribute | Description | Type | Required |
---|---|---|---|
lat |
Latitude of the airport reference point, in degrees between -90.0° and 90.0°. |
Float |
Yes |
lon |
Longitude of the airport reference point, in degrees between -180.0° and 180.0°. | Float | Yes |
alt |
Altitude of the airport reference point, in meters. You may add the "F" suffix to convert the value to feet, for example: "13.0F". |
Float |
Yes |
altType |
This is used to determine the referential for the alt field. |
Enum:
|
No |
ident |
Unique identifier that is used to represent the airport, must be 3 or 4 characters long, eg: "UUWW". | String | Yes |
name |
Name of the airport, displayed on the world map. | String | No |
city |
Name of the closest city to the airport, displayed on the world map. | String | No |
region |
The region the airport is in. Generally the region would be one of the following:
|
String | No |
country |
The country the airport is in. | String | No |
magvar |
Magnetic variation, the angle difference between the magnetic north and true north. Negative for value to the east and positive for value to the west, measured in degrees between -360.0° and 360.0°. | Float | No |
airportTestRadius |
Airport test radius in meters. You may add the "F" suffix to convert the value to feet, for example: "1300.0F". This is the distance around the airport reference point (location) that will be tested for airport object elements. Anything that is an airport element that is outside this area may cause build errors. | Float | No |
trafficScalar |
The volume of AI traffic that is appropriate for this airport. 1.0 would apply to major airports. NOTE: This is a deprecated feature and the value added for this attribute will have no effect in the simulation. |
Float | No |
isOnTIN |
Used to get a different ground materials behavior in certain area. | Boolean | No |
onlyAddIfReplace |
Only adds the airport if it was already present in another package. Relevant if the data contained within <Airport> is only complementary and not meant to be used on its own. |
Boolean | No |
applyFlatten |
Generate flattening rectangles on the airport based on runways altitude and inclination. | Boolean | No |
starAirport |
Puts the airport forward on the world map. | Boolean | No |
closed |
Stop the airport from being accessible or interactive in any interface such as the world map, the instruments or the ATC system. The airport is only going to be rendered in the simulator.. | Boolean | No |
groundMergingTransfertBright |
Ground merging bright setting. | Float | No |
groundMergingTransfertDark |
Ground merging dark setting. | Float | No |
<Tower>
This element is used to place an air traffic control tower location at an airport. This element must contain a single <SceneryObject>
element, and has the following attributes:
Attribute | Description | Type | Required |
---|---|---|---|
lat |
Latitude of the tower location, in degrees between -90.0° and 90.0°. | Float | Yes |
lon |
Longitude of the tower location, in degrees between -180.0° and 180.0°. | Float | Yes |
alt |
Altitude of the tower location, in meters. You may add the "F" suffix to convert the value to feet, for example: "13.0F". | Float | Yes |
alt_type |
This is used to determine the referential for the alt field |
Enum:
|
No |
overrideSize |
Used to override the default size. |
Enum:
|
No |
overrideLevel |
Used to override the default level (values from 0 - 255 only). | Integer | No |
<Services>
This element has no attributes and is used as a container for the self-closing <Fuel />
element
<Fuel />
This element has the following attributes:
Attribute | Description | Type | Required |
---|---|---|---|
type |
The type of fuel the service offers. |
Enum:
|
Yes |
availability |
The fuel availability. |
Enum:
|
Yes |
Note that this element can also be used in the deprecated legacy element <Trigger>
.
<Com />
This element is used to add a COM (communication) frequency to an airport. Note that this is a self-closing element and has the following attributes:
Attribute | Description | Type | Required |
---|---|---|---|
frequency |
Frequency for COM in MHz, between 108.0 to 136.992. | Float | Yes |
type |
The type of COM frequency. |
Enum:
|
Yes |
name |
Friendly name for COM frequency (48 characters max) | String | Yes |
NOTE: Editing COM data may prevent the simulation performing further automatic updates to the NavData for the airport. Please see the following section for more information: Note On Navigation Data
<Aprons>
This element is used to add aprons to an airport. The element has no attributes but can contain one or more <apron>
sub-element, explained below.
<Apron>
This element is used to add an apron to the <Aprons>
list of an airport. This element usually contains multiple <Vertex />
sub-elements and can also contain a <Coloration />
element. It has the following attributes:
Attribute | Description | Type | Required |
---|---|---|---|
surface |
The surface material type to use. |
Enum:
|
Yes |
drawSurface |
Whether to draw the underlying surface or not. |
Bool |
No |
drawDetail |
Whether to draw the detail texture surface or not | Bool | No |
<ApronEdgeLights>
This element is used to define the edge lights to the apron of an airport. Note that this element is defined under the main <Airport>
element, and not as part of the <Apron>
sub-element, and it usually contains multiple <EdgeLights>
sub-elements and has no attributes.
<EdgeLights>
This element is used to add edge lights to the <ApronEdgeLights>
list of an airport. This will contain multiple <Vertex />
sub-elements - where each vertex corresponds to a position between which lights will be drawn - and has no attributes.
<Ndb>
This element is used to add an NDB to the airport facility database.
NOTE: Editing NDB data may prevent the simulation performing further automatic updates to the NavData for the airport. Please see the following section for more information: Note On Navigation Data
When this element is added within an <Airport>
container element, it is only used to define a terminal NDB. It can also be used outside the <Airport>
element to define general navigation beacons. This element may contain a <VisualModel>
sub-element and has the following attributes:
Attribute | Description | Type | Required |
---|---|---|---|
lat |
Latitude of the NDB beacon, in degrees between -90.0° and 90.0°. |
Float |
Yes |
lon |
Longitude of the NDB beacon, in degrees between -180.0° and 180.0°. | Float | Yes |
alt |
Altitude of the NDB beacon, in meters. You may add the "F" suffix to convert the value to feet, for example: "13.0F". |
Float |
Yes |
type |
The type of NDB being used. |
Enum:
|
Yes |
frequency |
The NDB frequency in KHz, from 0.0 to 1737.0. | String | Yes |
range |
Range of NDB in meters or nautical miles. If no suffix is supplied, then the range will be set in meters, however using the "N" suffix converts the range into nautical miles, eg: "45N". If this attribute is not set, it will default to "27N". | String | No |
magvar |
Magnetic variation at the NDB to True North in degrees. Negative for values to the east and positive for values to the west, measured in degrees between -360.0° and 360.0°. | Float | Yes |
region |
The beacon region code (maximum 3 characters, based on iso-3166-2). | String | Yes |
ident |
ICAO code identity for this beacon, with a maximum of five characters. | String | Yes |
name |
Friendly name for ILS beacon. | String | No |
<Helipad />
This element can be used to define one or more helipads within an airport facility.
NOTE: If you wish the helipad to be available as a starting location for helicopter flights, then you also need to define a <Start />
element of the type "HELIPAD".
This is a self-closing element and has the following attributes:
Attribute | Description | Type | Required |
---|---|---|---|
lat |
Latitude of the helipad, in degrees between -90.0° and 90.0°. |
Float |
Yes |
lon |
Longitude of the helipad, in degrees between -180.0° and 180.0°. | Float | Yes |
alt |
Altitude of the helipad, in meters. You may add the "F" suffix to convert the value to feet, for example: "13.0F". |
Float |
Yes |
alt_type |
This is used to determine the referential for the alt field |
Enum:
|
No |
surface |
Surface material to apply to the helipad |
String:
|
No |
heading |
Facing angle for the helipad. Value between 0° and 360°. | Float | Yes |
length |
Length of the helipad. Length is in meters, but you can suffix the value with "F" for feet, eg: "2000F". | Float | Yes |
width |
Width of the helipad. Length is in meters, but you can suffix the value with "F" for feet, eg: "2000F". Float Yes | Float | Yes |
type |
The type of helipad. Note that if you enter type as CIRCLE or SQUARE and the length and width are not identical, then the shape of the helipad will be an ellipse or rectangle, respectively. |
Enum:
|
Yes |
closed |
Boolean indicating whether the helipad is closed (TRUE) or not (FALSE) | Boolean | No |
transparent |
Boolean indicating that the helipad should be drawn without pavement (markings only) | Boolean | No |
red |
Color components of helipad markings. Note that these are not implemented in Microsoft Flight Simulator. | Float | N/A |
green |
Float | N/A | |
blue |
Float | N/A |
<Start />
The <Start>
element is used in the <Airport>
container element to add a start location the airport in general. Note that this is a self-closing element and has the following attributes:
Attribute | Description | Type | Required |
---|---|---|---|
type |
Type of start point. If it's a helipad, then you must also define an <Helipad /> element, and for all the others a <Runway> element. |
Enum:
|
Yes |
lat |
Latitude of the start position, in degrees between -90.0° and 90.0°. |
Float |
Yes |
lon |
Longitude of the start position, in degrees between -180.0° and 180.0°. | Float | Yes |
alt |
Altitude of the start position, in meters. You may add the "F" suffix to convert the value to feet, for example: "13.0F". |
Float |
Yes |
alt_type |
This is used to determine the referential for the alt field |
Enum:
|
No |
heading |
Facing angle for the start position. Value between 0° and 360°. | Float | Yes |
number |
Number of the runway to start on. Note that you do not suffix the designator onto this value, but instead define it separately in the designator attribute. |
Integer:
or Enum:
|
No |
designator |
Designator of the runway chosen to start on. |
Enum:
|
No |
<BoundaryFence>
, <BlastFence>
These elements both define different fence types that can be placed around or within an <Airport>
.
IMPORTANT! These elements have been deprecated in favour of the more comprehensive <VectorPlacement>
element, and should no longer be used.
If you are using these elements, then you must also set the appropriate attribute in the <DeleteAirport>
element (deleteAllBlastFences
or deleteAllBoundaryFences
) to TRUE. Both these elements require at least two <Vertex />
sub elements to be considered valid. The available attributes for both elements are as follows:
Attribute | Description | Type | Required |
---|---|---|---|
profile |
GUID that defines the profile for the fence | String | Yes |
instanceId |
Optional GUID to identify the element | String | No |
<PaintedElements>
This element permits you to define the different painted lines and other things that are on the airport ground. It has no attributes and can contain the <PaintedPolygon>
, <PaintedLine>
and <PaintedHatchedArea>
sub-elements.
<PaintedPolygon>
This element is used to paint a polygon area within an airport, and as such uses the <Vertex />
sub-element to define the area being painted (minimum required is three vertices). It has the following attributes to define the color that is to be used:
Attribute | Description | Type | Required |
---|---|---|---|
red |
Red component of the paint (between 0 and 255). | Integer | Yes |
green |
Green component of the paint (between 0 and 255). | Integer | Yes |
blue |
Blue component of the paint (between 0 and 255). | Integer | Yes |
alpha |
Alpha component of the paint (between 0 and 255). | Integer | No |
<PaintedLine>
This element can be used to paint a line, and as such it requires at least two <Vertex />
sub-elements to define the start and end points of the line, although you can define more vertices if required between those points. It has the following attributes to define the type of line to be painted:
Attribute | Description | Type | Required |
---|---|---|---|
type |
The type of line to be painted. |
Enum:
|
Yes |
trueAngle |
Set the true angle type. |
Enum:
|
Yes |
surface |
Material to apply to the line. |
String:
|
Yes |
<PaintedHatchedArea>
This element can be used to paint a cross hatched polygon, and as such uses the <Vertex />
sub-element to define the area being painted (minimum required is three vertices). It has the following attributes to define the area that is to be used:
Attribute | Description | Type | Required |
---|---|---|---|
heading |
Facing angle for the hatching. Value between 0° and 360°. | Float | Yes |
spacing |
The distance between the lines of the hatching. The distance is in meters, but you can suffix the value with "F" for feet, eg: "2F". |
Float | Yes |
type |
The type of line to be used for the hatching. |
Enum:
|
Yes |
<RunwayAlias>
This element is used when replacing components inside of an airport (like taxiways), but the intent is not to replace the actual runways. This element serves as a note to the compiler that the old runway definition is to be preserved. This is a self-closing element and has the following attributes:
Attribute | Description | Type | Required |
---|---|---|---|
number |
Number of the runway. Note that you do not suffix the designator onto this value, but instead define it separately in the designator attribute. |
Integer:
or Enum:
|
Yes |
designator |
Designator of the runway. |
Enum:
|
No |
<Jetway>
Jetway elements are part of an airport, and must contain a single <SceneryObject>
element. One jetway can service at most one parking spot. A jetway will be animated and will usually come in to the main exit on the left side of the aircraft. AI controlled aircraft will also trigger the animation of the jetway. To replace jetways at an airport, use the <DeleteAirport>
element with the <deleteAllJetways>
field set to "TRUE", then enter the new jetway elements. Note that all parking spots do not require jetways.
The available attributes for jetways are as follows:
Attribute | Description | Type | Required |
---|---|---|---|
gateName |
Gate or parking spot name. All Jetways require a name and a |
Enum:
|
Yes |
parkingNumber |
The number for the parking spot. All Jetways require a number and a |
String | Yes |
suffix |
Suffix to be added to the jetway parking name and number. |
Enum:
|
<DetailPolys>
IMPORTANT! This element is deprecated and does not need to be defined for Microsoft Flight Simulator. It is maintained purely for backwards compatibility with FSX files.
This element is a container element for one or more <DetailPoly>
elements. It is used to define an area in which the texture on the ground should be more detailed, and each <DetailPoly>
element would have multiple <Vertex />
sub-elements (at least three) to define the areas for this extra detail. Neither <DetailPolys>
nor <DetailPoly>
require any attributes.
<ProjectedMesh>
This element can be placed within an <Airport>
to create a projected mesh object as part of the airport group, and it requires a <SceneryObject>
sub-element.
You can find a full description of this element and its properties here:
<Waypoint>
This element is used to add a waypoint to the airport facility database.
NOTE: Editing Waypoint data may prevent the simulation performing further automatic updates to the NavData for the airport. Please see the following section for more information: Note On Navigation Data
This element may contain the optional sub-element <Route>
, but if it has no sub-elements it can be self-closing. The element has the following attributes:
Attribute | Description | Type | Required |
---|---|---|---|
lat |
Latitude of the airport reference point, in degrees between -90.0° and 90.0°. |
Float |
Yes |
lon |
Longitude of the airport reference point, in degrees between -180.0° and 180.0°. | Float | Yes |
waypointType |
The type of waypoint. |
Enum: |
Yes |
waypointRegion |
The waypoint region code (maximum 3 characters, based on iso-3166-2). | String | Yes |
waypointIdent |
The identity for this waypoint, with a maximum of five characters. | String | Yes |
magvar |
Magnetic variation, the angle difference between the magnetic north and true north. Negative for value to the east and positive for value to the west, measured in degrees between -360.0° and 360.0°. | Float | No |
<Route>
This element is used to add a route designation to a waypoint. The element has the following attributes:
Attribute | Description | Type | Required |
---|---|---|---|
routeType |
Latitude of the airport reference point, in degrees between -90.0° and 90.0°. |
Enum:
|
Yes |
name |
The name of the route (maximum 8 characters). | String | Yes |
<LightSupport>
This element is for adding a rectangular surface (sloped or flat) that will determine the altitude of all lights within the defined rectangle. Note that this is a self-closing element and has the following attributes:
Attribute | Description | Type | Required |
---|---|---|---|
latitude |
Latitude of the airport reference point, in degrees between -90.0° and 90.0°. |
Float |
Yes |
longitude |
Longitude of the airport reference point, in degrees between -180.0° and 180.0°. | Float | Yes |
altitude |
Initial altitude of the light support rectangle (in meters). | Float | Yes |
altitude2 |
Final altitude of the light support rectangle (in meters). | Float | Yes |
heading |
Facing angle for the support rectangle. Value between 0° and 360°. | Float | Yes |
width |
The width of the rectangle in meters. | Float | Yes |
length |
The length of the rectangle in meters | Float | Yes |
excludeLights |
Whether to exclude lights in the rectangle or not (this will exclude the lights, and the light model objects) | Bool | No |
excludeLightObjects |
Whether to exclude only the light objects or not (if set to TRUE, then the lights will still appear as "floating" bright points without their object model). | Bool | No |
<VectorPlacement>
This element is for adding in a series of points that will be connected by a vector path and then have a model placed along the path, useful for creating things like fences or power-lines, etc... This element requires at least two <Vertex />
sub-elements to define the points between which the models will be placed.
NOTE: This element replaces the deprecated <BoundaryFence>, <BlastFence> elements.
The element has the following parameters:
Attribute | Description | Type | Required |
---|---|---|---|
profile |
This is the GUID of the model that will be used to populate the vector path. |
String |
Yes |
snapToVertices |
When this attribute is set to "TRUE" the chosen model will only be placed on the single vertices (points) that make up the vector path, instead of being placed along the lengths of the vectors. Default value is "FALSE". | Bool | No |
spacing |
This sets the spacing (in meters) between the models as they are placed along the vector path. This set to a avalue that brings the object models closer together to keep continuity between them. | Float | Yes |
heading |
This attribute can be used to modify the orientation (heading) of the model by a value in degrees. This will be a relative orientation if the rotation attribute is set to "Follow edge" or "Random", and an absolute orientation if the attribute is "Same". |
Float | Yes |
scale |
This attribute is used to scale the model up or down. The base value is 1, and a value less than one will scale it down and a value greater than 1 will scale it up. This will also be cummulative with the scale applied if the scaleDelta option is greater than 0. |
Float | Yes |
scaleDelta |
This attribute will add a random variation in scale to each model placed along the vector path. The default value is 0, which is no random variation, and any value greater than 0 will be used to apply a random variation in size to each model using the given value as a magnitude for the variation. This variation will be cumulative with the scale setting. |
Float | Yes |
rotation |
With this attribute you can change the way the model rotation will be handled by the simulation. It can be one of the following strings:
|
String | Yes |
avoidDiscontinuity |
This attribute can be set to "TRUE" to have the scenery editor try and ensure that the models used match up correctly at the corners of the vector path. If set to "FALSE" then the model may overrun the length of the vectors. | Bool | Yes |
castShadow |
If this attribute is set to "TRUE" the models used will cast a shadow, and if set to "FALSE" they won't. | Bool | No |
<DeleteAirport>
Since most of the airports that are going to be edited are preexisting airports within the simulator, it is important to understand the behavior behind the <DeleteAirport>
structure: when loading two packages that cover the same airport, the simulator will load both versions of the airport from each package, adding the data from each package together, rather than overriding one package with another. In the case that this is not what you want, you need to use this element to remove features from any previously loaded airport (including those that are defined as part of the base sim).
This element can have the following attributes:
Attribute | Description | Type | Required |
---|---|---|---|
deleteAllApronLights |
Remove all data coming from <ApronEdgeLights> field |
Boolean | No |
deleteAllAprons |
Remove all data coming from <Aprons> field |
Boolean | No |
deleteAllHelipads |
Remove all data coming from <Helipad> field |
Boolean | No |
deleteAllRunways |
Remove all data coming from <Runway> field |
Boolean | No |
deleteAllStarts |
Remove all data coming from <Start> field |
Boolean | No |
deleteAllTaxiways |
Remove all data coming from <TaxiwayPoint> , <TaxiwayParking> , <TaxiwayPath> and <TaxiwayName> fields |
Boolean | No |
deleteAllBlastFences |
Remove all data coming from NOTE: This is a deprecated attribute and you should instead use the |
Boolean | No |
deleteAllBoundaryFences |
Remove all data coming from NOTE: This is a deprecated attribute and you should instead use the |
Boolean | No |
deleteAllVectorPlacement |
Remove all data coming from <VectorPlacement> fields |
||
deleteAllControlTowers |
Remove all data coming from <Tower> fields |
Boolean | No |
deleteAllJetways |
Remove all data coming from <Jetway> fields |
Boolean | No |
deleteAllPaintedElements |
Remove all data coming from <PaintedElements> fields |
Boolean | No |
deleteAllLightSupports |
Remove all data coming from <LightSupport> fields |
Boolean | No |
deleteAllTaxiwaySigns |
Remove all data coming from <TaxiwaySign> fields |
Boolean | No |
deleteAllApproaches |
Remove all data coming from <Approach> fields |
Boolean | No |
deleteAllFrequencies |
Remove all data coming from <Com> fields |
Boolean | No |
deleteAllDepartures |
Remove all data coming from <Departure> fields |
Boolean | No |
deleteAllArrivals |
Remove all data coming from <Arrival> fields |
Boolean | No |
deleteAllTerminalWaypoints |
Remove all data coming from <Waypoint> fields |
Boolean | No |
deleteAllILSs |
Remove all data coming from <ILs> fields |
Boolean | No |
deleteAllTerminalNDBs |
Remove all data coming from <Ndb> fields |
Boolean | No |
In addition to these attributes, there exist other sub-elements which can be contained within the <DeleteAirport>
structure in order to have a more refined deletion of certain objects. These are listed below.
<DeleteRunway />
The purpose of the <DeleteRunway />
element is to delete a specific runway from an airport. Note that this is a self-closing element and has the following attributes:
Attribute | Description | Type | Required |
---|---|---|---|
surface |
GUID or Name of the surface of the runway to delete | GUID or String | Yes |
number |
Number of the runway to delete. Note that you do not suffix the designator onto this value, but instead define it separately in the designator attribute. |
Integer:
or Enum:
|
Yes |
designator |
Designator of the runway to delete |
Enum:
|
Yes |
<DeleteStart />
The purpose of the <DeleteStart />
element is to delete a start location from an airport. This element is available but rarely required. Note that this is a self-closing element and has the following attributes:
Attribute | Description | Type | Required |
---|---|---|---|
type |
Type of start to delete |
ENUM:
|
Yes |
number |
Number of the runway where the start is found |
Integer:
or Enum:
|
Yes |
designator |
Designator of the runway where the start is found |
Enum:
|
Yes |