Airport checks and levelling, OLS surfaces, roads and tile seams

💬 0 replies

Bumpy runways are a common problem of generated scenery: the terrain mesh under a runway copies the DEM including its noise. RF Studio can edit airports in the editor, measure them, flatten them one by one in the editor or in batch for a whole tile, and find obstacles in the ICAO surfaces.

ICAO limits and heuristics
The rating is based on ICAO Annex 14 (runway slopes, vertical curve radii, obstacle limitation surfaces). Where ICAO has no limit (e.g. bump size), the value is marked as a heuristic (letter H). The Studio has not checked the quoted limits against the latest amendment; they serve to judge the look in the simulator, not for aviation certification.

Editing an airport

You can edit an airport right in the editor project – a small GA field, a large airport, a heliport or a seaplane base. Editor › Airport button in the toolbar (the airport panel appears on the right). Every change is one Ctrl+Z / Ctrl+Y step and is saved with the project by Save. X-Plane files are never changed.

The export writes the project airport into the scenery package, Test in X-Plane tries it and the WED export adds it – see Airport in the package, X-Plane and WED.

Take over an airport from X-Plane

  1. In the Add an airport panel enter the ICAO and click Find. The Studio searches Custom Scenery (by scenery_packs.ini) and Global Airports; the source X-Plane really uses is marked.
  2. Click Take over at the chosen source. The airport is copied into the project and in 3D the project airport is drawn instead of the original airport from apt.dat.
  3. What the editor does not edit (frequencies, unknown rows) stays in the project exactly as it was – the panel shows it as Other apt.dat rows kept unchanged. The taxi route network, traffic flows and service vehicles are edited in the Airport mode – see ATC and ground traffic.

You can also download the airport from the Scenery Gateway – see Airport from the Scenery Gateway.

New airport: Add an airport › New empty airport – ICAO (1–7 characters A–Z and 0–9), name, elevation (m or ft; empty = from the terrain in the middle of the window) and type (airport, seaplane base, heliport) › Create airport. The airport is created in the middle of the project window with the metadata gui_label 2D (an airport without a 3D part).

Airport metadata (city, country, 2D / 3D label, region, IATA, FAA and ICAO codes, datum, transition altitude and level – 1302 rows in apt.dat) are edited in the airport panel in the expandable Advanced – airport metadata part. Every change is one Undo step; an empty field removes the row. Other metadata (e.g. Flatten terrain in X-Plane) stay unchanged.

When the airport lies outside the project window (e.g. an airport taken over elsewhere on the tile), the panel says so and offers Move the window here – a window of the same size centred on the airport, one Undo step.

The Project airport panel at the top shows the ICAO, name, elevation and type (you can change them), item counts and the source. With several airports in the project choose the active one in the list. Remove removes the airport from the project (Ctrl+Z restores it).

Tools (buttons with an icon and a name; in the Airport mode a click in 3D belongs to them only; dragging still turns the camera):

  • Select – a click selects an item (highlighted yellow). Drag the white points: runway ends, the point of parking, signs and other point items, outline points of pavement, lines and boundaries. A click on an outline point selects it (red); blue points are curve control points. Delete deletes the selected point or item, Esc clears the selection.
  • Runway – click the start and the end. End numbers are filled in from the true heading (correct magnetic variation in the panel if needed – renaming an end also renames the references in ATC, the taxi network and PAPI in the same Undo step and a message says how many; deleting a runway warns how many references were left); default width 30 m, asphalt, visual markings.
  • Water runway – start and end (width 50 m, with buoys).
  • Helipad – click the centre (20 × 20 m, concrete).
  • Pavement – click the outline points of the pavement, Enter or double-click = done, Backspace removes the last point.
  • Hole in pavement – select a pavement and draw the outline of the hole (e.g. grass between taxiways); the Add a hole button of a selected pavement works the same.
  • Line – a marking or lighting line (default yellow taxiway centreline), at least 2 points.
  • Boundary – the airport boundary, at least 3 points.
  • Parking, Sign, Windsock, Beacon, Tower, PAPI / VASI, Jetway – click the place. PAPI / VASI takes the heading and designator of the nearest runway end.

The selected item panel shows the properties with drop-down lists – you do not need to know apt.dat codes:

  • runway: width, surface (including asphalt and concrete shades), shoulder (surface and width in metres), edge and centreline lights, distance remaining signs, roughness and for each end the designator, displaced threshold, blastpad, markings, approach lights, touchdown zone and threshold lights,
  • water runway (width, buoys), helipad (designator, heading, size, surface, lights),
  • pavement: description, surface, texture heading, roughness; for a selected point Curve / Straighten (Bezier curve), Insert point after and Delete point; Reverse point order reverses the outline with the selected point (without a selected point the outer outline) including its curves,
  • line: line and lights for the whole line,
  • parking (type and aircraft), sign (text in the X-Plane form, e.g. {@Y}A{^r} – it must not be empty, ASCII only and with balanced braces; a Preview is under the field), windsock, beacon, tower, PAPI / VASI (type including APAPI, heading, glide slope, runway), jetway (size by tunnel length and look).

The outer outline of a pavement and of the airport boundary must run counterclockwise, holes clockwise (otherwise WED rejects them). The Studio orients newly drawn outlines by itself; for older data use Reverse point order or the Fix button of the finding in the Airport check.

Deleting a point of the outer pavement outline below 3 points deletes the whole pavement (one step, Ctrl+Z restores it); a hole below 3 points disappears by itself.

A code the list does not know (e.g. a line without a definition in the specification) is shown as "code N" and stays unchanged.

In 3D the project airport is drawn from the project: pavement, runways and lines like the Airports layer, point items with a marker by type – parking as an aircraft silhouette scaled by category (A–F) with a heading arrow, a beacon in the colours of the airport type, a windsock along the nearest runway (lit with a light on the mast), the tower, PAPI / VASI with the number and colours of lights, a jetway (tunnel and cab), a helipad with an H and signs as a panel with the same look as the preview. While dragging only the dragged item is redrawn. The Airport items list at the bottom lists the items by type; a click selects the item and moves the camera to it.

Terrain under the airport: after you change a runway or pavement the panel offers (nothing changes until you click; the project is saved first):

  • Check slopes – measures slopes and bumps of runways, taxiways and pavement on the project terrain mesh (like the airport check) and lists the findings with a show link,
  • Obstacles (OLS) – opens the Obstacles mode for this airport,
  • Flatten terrain under the airport – opens Terrain and water › Airport with this airport (flattening one airport); you confirm the preview and the write of a new DSF yourself.

The checks and the flattening use the airport from the project, not the original apt.dat.

Not verified in X-Plane
Airport editing is verified by read and write tests (the taken-over airports LKPR and LFMN written after edits and read back – unchanged rows identical). You can try it in X-Plane with Test in X-Plane.

ATC and ground traffic

For AI aircraft in X-Plane to taxi, take off by the wind and for ATC to give instructions, the airport needs a taxi route network, active zones at runways and traffic flows; ground traffic (pushback tugs, fuel trucks, baggage) needs vehicle routes, vehicle parking and vehicle destinations. You edit all of it in the Airport mode – the same as in WED. Every change is one Ctrl+Z step and changes only the affected apt.dat rows (a taken-over network otherwise stays exactly the same).

Tools (the second tool row, ATC and ground traffic):

  • Taxi network – click network nodes: each further click runs an edge from the previous node. A click on an existing node snaps to it, a click on an edge splits it there (the new edge takes over the properties and active zones). When the new edge crosses another network edge (a taxiway or a vehicle route), both are split at the crossing and joined with a shared node – the same as in WED; each part keeps its own kind. Enter, Esc or a double-click ends the chain. Set the properties of new edges in the Taxi route network panel: Width (code) A–F by the wingspan of the largest aircraft, Taxiway name (A, B1 …), Direction (two-way / one-way) or Runway segment – an edge on the runway centre line gets the runway name (e.g. 06/24) and the active zones of both ends. The editor always writes runway end names the way WED knows them – with a leading zero (06L, not 6L); a name without the zero in zones, a runway segment, the pattern or a runway use is reported by the check as a warning, because WED drops it on import.
  • Vehicle routes – the same, but service vehicle routes (1206 rows); they must stay off runways.
  • Vehicle parking – click where a vehicle waits (vehicle kind, number of carts for a baggage train, heading).
  • Vehicle destination – a fuel farm or a baggage hall (for which vehicles, at least one).

Editing the network. The network is visible in 3D with Show the network in 3D on: taxiways blue, runway segments red, edges with an active zone orange, vehicle routes green, one-way edges with an arrow. With Select click a node or an edge. Drag a node with the mouse (only the part of the network around it is redrawn, even at large airports such as EGLL or KLAX); dropped on another node it merges with it. Delete deletes the selected node with its edges or the selected edge (nodes left without an edge disappear).

  • Selected edge: runway segment or taxiway, width, name, direction (Reverse direction for a one-way edge), Active zones per runway end (departures, arrivals, ILS) as check boxes, Split in the middle.
  • Selected node: kind, name, Continue from here (the Taxi network tool with the chain starting at the node), Merge with node N when another node is closer than 5 m.

Add active zones. An active zone tells AI that the edge lies in the runway protection area – the aircraft holds short of it until cleared. The Add active zones… button finds, like WED, edges that reach into the runway area (the runway widened by 30 m on each side, by 10 m for short and unpaved runways, and extended by 100 m, 50 m for unpaved runways, beyond the end; for arrivals less the displaced threshold) without a zone, and runway segments without the zones of both ends. It shows a preview first (a list of edges and pink in 3D); the zones are added only with Add zones – as one Undo step. The option for all runway directions (default) gives departure and arrival zones to both ends of every runway regardless of the flows (flows change with the wind) – the way most authors mark them; at some taken-over airports it therefore proposes zones where the author deliberately has none (e.g. a departures-only runway), so review the preview. Off gives only the minimum for the current flows that the WED check requires. ILS zones are not proposed for taxiways – mark the ILS critical area at the edge yourself.

Traffic flows. The Traffic flows panel shows the flows in order – X-Plane uses the first flow from the top whose conditions apply, the last flow without conditions is the “catch all”. Change the order with ▲ ▼, Add flow creates a flow with the METAR of this airport, a left-hand pattern and one use of the first runway. For the selected flow:

  • Conditions: METAR from airport (ICAO), ceiling and visibility at least, wind rules (direction from – to, up to a speed), time rules (UTC, HHMM),
  • Pattern: runway and side,
  • Runway use: runway end, departure frequency (MHz), operations (arrivals / departures), aircraft kinds and the ranges of departure headings and initial heading (from – to pairs; written in apt.dat as 270090).

Ramp starts also show the extension from the 1301 row in the panel: Largest aircraft (A–F), Operation type and Airlines (3-letter ICAO codes).

Check right after a change. After every change of the network or flows the Airport check refreshes by itself and the network panel shows the findings of the Taxi network and Traffic flows groups (unconnected nodes, crossings without a node, edges to a missing node or a missing runway, missing active zones, unreachable flows …) with a show link.

Not verified in X-Plane
Editing the network, zones and flows is verified by tests (LKPR, KLAX, EGLL: a taken-over airport without changes is written token-identical, editing one edge or node changes only its own row; added active zones pass the WED check; with the zones of KLAX and KJFK deleted, the proposal restores 692 and 792 zones token-identical to the original, nothing extra). Try the AI behaviour in X-Plane with Test in X-Plane.

Airport from the Scenery Gateway

The X-Plane Scenery Gateway is the public airport database of the X-Plane community – Laminar builds Global Airports from its recommended versions. The Studio can download an airport from it as the starting point for your edits: also a newer version than in your X-Plane, or an airport that is not in Global Airports. It only reads – nothing is uploaded to the Gateway and no login is needed (uploading comes later).

  1. In the Airport mode open From the Scenery Gateway (internet) in the Add an airport panel.
  2. Enter an ICAO, IATA / FAA code or part of the name (accents do not matter, e.g. turany) and click Search. The Gateway airport list (about 41,000 airports, 2 MB) is downloaded with the first search and kept for 7 days; airports deprecated on the Gateway are tagged deprecated.
  3. Click Versions… at the airport. The recommended version is preselected – the one Laminar puts into Global Airports with the next X-Plane update. Each version shows the scenery number, date, author, status (approved, accepted, declined, uploaded) and 2D / 3D.
  4. The preview of the selected version shows the author, date, status, author comment, the counts of runways, pavement, lines, parking and signs, the package contents and the comparison with the version in Global Airports of your X-Plane (same / differs by how many rows / not in Global Airports).
  5. Take over copies the version into the project like a takeover from X-Plane – without loss, all apt.dat rows including ATC and the taxi network. It is one Ctrl+Z step. The Project airport panel then shows the origin: Gateway, scenery number, author, date, status and license; it is saved in the project.

What is in the package. The Gateway sends a zip with the airport apt.dat, for 3D versions also with a DSF (objects, facades, forests and draped polygons from the X-Plane library) and a ready package with a README and the license. The Studio takes over only the apt.dat for now; the preview counts the 3D part (objects, polygons), but it will not be in the project.

Check. After taking over a Gateway airport the Airport check panel recommends the option For the Scenery Gateway (button Turn on) – with it the check uses the same rules as WED when submitting to the Gateway.

Comparison with Global Airports. Global Airports is not a copy of the Gateway packages: it is a snapshot from the last X-Plane update and Laminar processes it (shortens coordinates, leaves out names in some rows and empty metadata, adds jetways and gw_credits authors). The Studio ignores these differences; what remains is another version or Laminar edits.

License and authors
Scenery Gateway airports are licensed under the GNU GPL version 2 or later. You may use and redistribute the edited airport, but only under the same license: include the license text (COPYING) in the package, credit the authors and the Gateway version number, and note that and when you modified the airport. The Studio adds these files on export. Your own objects, DSF and textures in the package are not affected and may keep their own license. The Studio only downloads the airport at your request and distributes nothing. The author and the version number are in the preview and in the Project airport panel, the link Airport on the Gateway opens the airport page. The export and the export for WED add COPYING (the GPL 2 text) and README_letiste.txt (ICAO, scenery number, author, link, license, date of the modification in RF Studio) to the package; the finished package takes them over and its README points to them. When a Gateway package has no README with the license, the preview says "license not stated".

Offline. Without a connection the Studio reports "The Scenery Gateway cannot be reached". What was downloaded keeps working: the airport list, the versions (refreshed at most once an hour) and downloaded sceneries (they never change by number and are downloaded only once). The cache is in the Studio cache folder (gateway, at most 512 MB). The Refresh button downloads the list and versions again (the list at most once in 10 minutes, the versions at most once a minute – the Gateway asks for considerate use).

Not verified in X-Plane
Verified by tests: LKPR, LKTB, KLAX, the heliport EGLW and the seaplane base W55 downloaded from the real Gateway, taken over and written – the apt.dat identical row by row (tokens) with the downloaded one; the Airport check found no extra error compared with the version in Global Airports.

Airport in the package, X-Plane and WED

Writing to the package. The project export (File › Export) writes the project airports into Earth nav data/apt.dat of the package – the same place as Scenery Gateway and WED packages. Format 1200; taken-over rows (also ATC, flows, the taxi network and rows the editor does not understand) are written exactly as they were, new and changed values in the WED format. After writing, the Studio reads the file back and compares it with the project; the export result shows the row Airports in the package with the file path. A project with only an airport (no objects or other items) gives a package with only apt.dat, without a DSF.

X-Plane takes an airport with a given ICAO from the highest package in scenery_packs.ini. A package with an airport must therefore be above the *GLOBAL_AIRPORTS* line (orthophotos, meshes and other packages are often below it) – then its airport replaces the Global Airports one. X-Plane puts a new package at the top by itself; Test in X-Plane checks the order.

The airport also replaces the Global Airports buildings
The buildings, objects and other airport items in Global Airports are behind the airport filter in the DSF. When your airport replaces the Global Airports one, X-Plane hides them. To keep them, take them over into the project (Existing scenery) and export them with the airport.

Flatten terrain in X-Plane. The check box in the Project airport panel adds the row 1302 flatten 1 (in WED "Always Flatten"): X-Plane always flattens the airport, even when the user lets runways follow the terrain. The airport area is given by the airport boundary (Boundary tool). This is different from Flatten terrain under the airport, which changes the terrain mesh itself.

Airport filter in the DSF. X-Plane shows an overlay item with an airport filter (sim/filter/aptid) only when it uses the airport with the same ICAO from your package. When another package higher in the order replaces the airport, the items disappear with it – that is how the Global Airports buildings behave. The panel Airport filter in the DSF (in the Airport mode) shows how many items lie inside the airport boundary without a filter, with this airport's filter and with another filter:

  • Assign filter (n) – sets the airport filter on the items inside the boundary (by the item centre) that have no filter; it asks first, and it is all one Ctrl+Z step. Locked items and items taken over from the base are not changed.
  • Remove filter (n) – removes this airport's filter from the items inside the boundary.

An item counts by its centre; when the centre lies right at the boundary, it may come out inside or outside (check it in Properties). Locked items are not counted. Without an airport boundary no filter is assigned – draw it with the Boundary tool. You can remove the filter of one item in the Properties panel too. The check warns only about a filter of an airport that is not in the project (the item would not show); a filter of a project airport is fine, because the export writes the airport into the package.

Test in X-Plane. An export with an airport is offered in Operations › Test in X-Plane like any other (also without a DSF). The preview also:

  • warns when an enabled package above the test place has the same airport (also Global Airports if you insert the test below it) – X-Plane would use its airport and would not show the test items with the filter; insert the test above it, or disable it for the test,
  • notes that the test airport replaces the Global Airports one together with its buildings behind the filter.

The same applies to a finished package: the README lists the airports; two exports with different apt.dat cannot go into one package (put the airports into one project).

WED export. The WED export writes Earth nav data/apt.dat with the project airports next to earth.wed.xml. Open the package in WED and choose File › Import apt.dat (the dialog opens right in the package's Earth nav data folder) – WED converts the airport into its own hierarchy, including ATC, flows and service vehicles. Rows WED refuses (rows it does not understand and 1302 flatten / drive_on_left other than 1 or repeated – WED reads only the presence of the key) are not written into this apt.dat; the export note says how many, they stay in the project. Items with an airport filter are in the world of earth.wed.xml – after importing the airport drag them into its hierarchy, WED derives the filter from it.

Why apt.dat and not the airport directly in earth.wed.xml
WED reads apt.dat with its own import, which converts the airport into its objects exactly (runways, pavement with curves, ATC, flows). Writing all WED classes ourselves would be a source of differences.

An airport from WED back into the Studio. In WED choose File › Export apt.dat (or build the package, Build Scenery Pack). In the Studio, in the Add an airport panel › Load from apt.dat (WED, package) enter the path to the apt.dat file, to the package folder or to earth.wed.xml (the Earth nav data/apt.dat of its package is used) › Load › Take over at the airport. For a large file (e.g. Global Airports) enter the ICAO or part of the name in the field below the path – the list shows at most 50 airports. The file is only read. Importing a WED project (earth.wed.xml) into the editor does not read the airport itself – the import note says so; items inside the airport in WED get the airport filter, the same as after a DSF export from WED.

Not verified in X-Plane and in WED
Verified by tests: the apt.dat in the package for LKPR and LFMN matches the source row by row (by tokens), the airport filter is read back from the DSF, and the apt.dat files written by WED in Custom Scenery (10 packages) pass taking over and writing unchanged. Loading the package in X-Plane and the import in WED are not verified yet.

Trees and objects under pavement (exclusion)

A new pavement is drawn in X-Plane, but it removes nothing under it: forests, autogen and objects of other sceneries (the default scenery, a terrain mesh from another package, Custom Scenery lower in the order) keep standing on it. The airport boundary does not remove them either – even when it surrounds the pavement.

Why the airport boundary is not enough
The airport boundary (row 130) is read only by the global terrain mesh generator when Laminar builds a new default scenery: it flattens the area inside and puts airport grass instead of forest. At runtime X-Plane does not use the boundary to exclude anything – according to the WED 2.7.3 help the boundary "has no impact on the way your scenery is shown in X-Plane". Airports in Global Airports have clean pavement because the terrain mesh left them out when it was built and Laminar adds its own exclusions. Verified in X-Plane 12 too: extending the boundary over a new pavement did not remove the trees.

Exclusion under new pavement. With the Pavement tool there is the option Exclusion under new pavement below the buttons (on). When you finish the pavement, Studio adds a normal Exclusion entity following the pavement outline in the same Ctrl+Z step:

  • it excludes objects and autogen, facades, forests and strings – not draped polygons, lines, roads and beaches (they would remove a whole orthophoto, marking or road that only reaches into the pavement),
  • X-Plane 12 excludes objects, facades and strings by the outline: an object by its point, but an autogen block (.ags, .agb) or facade reaching into the pavement with at least one vertex is removed completely – including the part outside the pavement; forests can only be excluded by rectangles, so the export splits them into rectangles that cover the whole pavement and reach out by at most the 5 m tolerance (change it in the exclusion Properties),
  • pavement holes (grass inside) are not excluded: the X-Plane polygon exclusion cannot have holes, so Studio connects every hole to the outline with a narrow channel (about 20 cm) and the exclusion is one outline without holes; forest rectangles are made only from the pavement without holes,
  • it has the airport filter (the airport ICAO) – it applies only when X-Plane uses the airport from your package, like the Laminar exclusions in Global Airports.

You see the exclusion in 3D and in the Overview; delete it with Delete or switch off single kinds in Properties. Untick the option to turn it off (Studio remembers it).

The exclusion follows the pavement. Moving the pavement, editing its outline, a hole or a curve recompute the exclusion in the same Undo step; deleting the pavement deletes its exclusion too (the editor says so). When you edit the exclusion outline by hand, Studio no longer overwrites it – it only tells you to check the exclusion. An exclusion whose pavement disappeared otherwise (e.g. taking the airport over again) is reported by the Airport check as an exclusion without pavement and Fix deletes it.

For an existing pavement or boundary. A selected pavement shows in the panel whether there is an exclusion under it. The button Exclude base scenery under pavement adds it (one Undo step). An airport boundary has the button Exclude base scenery inside boundary – it excludes everything inside the boundary, including buildings and forests you may want to keep on the airport, and also the objects of this airport in Global Airports; use it only for a small airport or as a start and edit the exclusion afterwards. The buttons appear only when the project exclusions do not cover the pavement or boundary yet.

Check. The Airport check reports the warning "There are trees or base scenery objects under pavement …" with the counts of forests and objects X-Plane would draw on the pavement and a Fix button (adds the exclusion under the pavement, one Undo step). It finds them only with the Existing scenery layer on and loaded, with the pavement completely inside its window; without it the check panel reminds you to load the layer. A base scenery area item (autogen, facade) that only surrounds the pavement and has no vertex in it is not removed by the pavement exclusion (X-Plane excludes by vertices) – the finding says so and has no Fix; a larger exclusion helps. Fix is not shown either when the project exclusions already cover the pavement.

Export for WED. WED does not know polygon exclusions: the export for WED writes one rectangular exclusion (WED_ExclusionZone) per rectangle of the split, with all kinds; the rectangles of one pavement are in one group named after the pavement and the airport ICAO (the group name is in Czech: exclusion under pavement … – drag under airport …). WED derives the airport filter from the hierarchy – after importing the airport (File › Import apt.dat) drag the group under the airport; the export note about the filter is the first one in the list.

Not verified in X-Plane
Verified by tests: the exclusion in the DSF behind the airport filter, a polygon for objects, forest rectangles covering the whole pavement, the export for WED. The look in X-Plane (a clean pavement) is not verified yet.

Airport check in the editor

The Airport check panel in the Airport mode checks the project airport – including unsaved edits – and shows in one list what WED 2.7.3, X-Plane or the Scenery Gateway would reject and what is suspicious. It only reads, nothing changes. Button Check; after the first check the result refreshes by itself after every edit of the airport (checking a large airport such as KLAX or LFPG takes under a second).

Levels. Error – WED rejects the airport on export or import, the Gateway does not accept it or it breaks in X-Plane (e.g. a ramp start without aircraft types, crossing taxi network edges, a reversed runway). Warning – accepted but worth a look (e.g. an all upper case airport name, short taxi network segments, tailwind in a traffic flow). Information – for the overview (e.g. an airport without a windsock, two ramp starts with the same name). The buttons with counts at the top switch the levels on and off; information is hidden by default.

For the Scenery Gateway. WED applies some rules only when submitting to the Gateway (airport boundary, items outside it and far beyond it, transparent runways, Bezier curves in the boundary, boundary points closer than 30 m, a long airline list, custom vehicles) and makes some stricter for the Gateway, from warning to error (airport name, runway direction, short network segments). Without the option For the Scenery Gateway the Gateway-only rules are information with a Gateway tag; with the option they get the Gateway level.

Groups. Below the levels the list can be narrowed to a group: Airport (name, ICAO, size, boundary), Metadata (1302 rows – ISO 3166 country, city, datum, FAA / IATA / ICAO codes, transition altitude and level …), Runways (end names and numbers, dimensions, direction against the name with magnetic declination, displaced thresholds, X-Plane 12 lights, helipads, sea lanes, overlapping runways), Pavement and lines (outline and holes, winding, crossing sides, duplicate points), Ramp starts (aircraft types, size A–F against the runway, airlines, ramp starts near a runway), Signs (syntax as WED, see below), Equipment (beacon by airport type, tower, PAPI / VASI belonging to an existing runway and pointing along it, jetways), Frequencies (118–137 MHz band, 25 / 8.33 kHz raster, emergency 121.5, Ground / Delivery without a tower), Taxi network (1201 / 1202 / 1206 nodes and edges: doubled nodes, crossings without a node, unjoined ends, short segments, network connectivity, runway segments on the centreline, hot zones at runways, vehicle routes near a runway, truck destinations without a vehicle type) and Traffic flows (1000–1004, 1100 / 1110: METAR source, wind and time rules, the pattern runway and runway use exist, opposite direction arrivals and departures, tailwind, coverage of all winds).

Slopes and obstacles in one list. The button Runway and taxiway slopes saves the project and measures slopes and bumps on the project terrain mesh (as the Airport check on a tile); Obstacles (OLS) opens the Obstacles mode. Their results are added to the list as the groups Terrain slopes and Obstacles (OLS).

Show. Each finding has the item type icon and show – it selects the item (runway, pavement, node, ramp start …) and focuses it in 3D. Items with an error or warning have a badge in the Airport items list (as entities in the Overview) and are sorted first.

Fix. A pavement or boundary outline with its points running clockwise (and a hole running counterclockwise) is fixed by the Fix button of the finding: it reorders the points of all outlines of the item (the outer one counterclockwise, holes clockwise), curves are kept. One Undo step. For the findings of trees and objects under pavement Fix adds the exclusion under the pavement (Trees and objects under pavement).

Signs. The sign text is checked by the same parser as in WED (WED_Sign_Parser): a colour first ({@Y}, {@L}, {@R}, {@B}), capital letters and digits outside { }, glyphs such as ^l, r1, critical only inside { }, the black {@B} field only with digits, the back side {@@} only once. The sign properties panel shows the error right when you type it (which characters and why).

Project check, export and Test in X-Plane. The project check (button Check) lists one warning per airport with errors, with the numbers of errors and warnings. Export and Test in X-Plane do not stop with airport errors, they only warn – it is your decision (e.g. older Global Airports data).

Where the rules come from
Most rules are taken over from WED 2.7.3 (WED_Validate.cpp, WED_ValidateATCRunwayChecks.cpp, WED_Sign_Parser.cpp; Laminar Research, MIT license). The messages are in Czech and English; the English ones match the WED messages. On top there are our own rules (overlapping runways, beacon by airport type, PAPI belonging to a runway, tower height, ramp starts at the same place, a hole outside the outline, rows WED does not understand). WED additionally checks objects, facades and orthophotos in the airport hierarchy and runways against the Gateway CIFP database – that is not in apt.dat, so it is missing here. Two differences from WED: south of 60° S the runway direction is also compared with true and grid north (Antarctic runways such as NZWD and NZIR are named after grid north – WED reports them as reversed), and the tower viewpoint height is checked only at an airport that draws the tower object (a 2D airport does not need it).

Older airports from Global Airports
The check did not fail on any of the 38,886 Global Airports; large Gateway airports (KLAX, EGLL, LFPG, LKPR) have at most a few findings. Older airports, however, often fail newer WED rules – e.g. ramp starts from the old row 15 (WED reads them as misc, so an airport with a tower "has no ramp start for AI"), boundary points closer than 30 m, runway lights X-Plane 12 increases. If you take over such an airport, the findings are expected – fix them if you want to submit it to the Gateway.

Airport check on a tile

Read-only – the DSF does not change. DSF › choose a DSF › the Airports tab › Check airports (progress and Cancel while it runs – the previous result then stays unchanged).

For every land airport from apt.dat (Custom Scenery by priority, then Global Airports) the Studio measures the mesh of this DSF:

  • runways: longitudinal slope (over 30 m, maximum and mean), slope of the whole runway, transverse slope in cross-sections every 25 m, bump (largest deviation from a 30 m straightedge), triangle count on the runway, water under the centreline, mesh coverage,
  • taxiways along the apt.dat routes (1201/1202): longitudinal and transverse slope, bump,
  • aprons and other pavements (110): slope p95 and maximum, share of pavement steeper than 1 %,
  • airport elevation: the highest point of the paved runway centrelines against the elevation in apt.dat,
  • ILS and thresholds from the earth_nav.dat of the X-Plane installation (read-only; Custom Data wins over Resources\default data): at runway ends with an ILS or LTP it compares the threshold height on the mesh with the LTP (rated, 3 m heuristic) and the glide path height over the threshold with the TCH (without a TCH ICAO 15 m; informative only – it assumes X-Plane runs the glide path from the touchdown point abeam the GS antenna, which is a hypothesis). It also shows the mesh height at the GS antenna against the navigation data and the LOC course against the runway, both informative. The ILS and thresholds from earth_nav.dat table is in the airport Detail; without the file the check says earth_nav.dat not found – no ILS comparison.

The result is sorted by severity: OK, Caution, Bad, Not rated. A finding has its GPS (click = copy) and the 3D, Editor, Detail and Obstacles buttons. Detail has a runway table (⌖ = show in 3D, H = heuristic, hover = limit and source), the Profile button (a centreline profile chart right in the panel) and In editor (a project measuring the profile along the runway centreline). Limits and their sources lists all limits.

  • Unpaved runways are only shown by default; the Rate unpaved runways too option includes them in the rating.
  • An airport with "flatten 1" in apt.dat is flattened by X-Plane itself at runtime – the mesh check is only informative for it.
  • An airport crossing the tile border is measured only within this DSF and is not batch-flattened (use the editor with the tile seam).

Batch airport flattening

Below the check result is the Batch airport flattening card:

  1. Select airports (Select all, Only "Caution" and "Bad", Clear selection).
  2. Flattening mode: - Smooth the area (recommended) – removes bumps and short waves in the area around runways and pavement; the shape and slope of longer sections stay, converging runways and pavement join without seams. Options: Smoothing length (default 60 m), Area margin (default 30 m – within it the change blends smoothly into the original terrain), Include pavement (taxiways, stands), Smooth grass in the area too (off = the grass only blends smoothly into the smoothed runways and pavement). - ICAO runway profile (advanced) – every runway gets its own longitudinal profile and a 0 % transverse slope: Runway ends (follow terrain / apt.dat airport elevation) and Blend into surroundings (m). - For both modes: Strength, Keep unevenness up to, Change at most by (the same as in the editor).
  3. Flattening area (Smooth mode only) shows a preview for every selected airport: the area, pavement and runways. The area is prefilled from apt.dat – the rectangles of paved runways extended by the margin sideways and past the ends (like Prefill with runway… in the editor) and, with pavement on, the pavement extended by the margin. Outside the area the mesh does not change. Steep terrain outside runways and pavement that separates two parts of the terrain or the terrain from water (an embankment slope, a shore) is not smoothed: it keeps its shape, only blends smoothly into the surroundings (no step forms at its edge), and the terrain on its other side is not counted into the smoothing. A steep mound or a short embankment in the middle of grass is smoothed together with its surroundings.
  4. To adjust the area of an airport, click Adjust in editor: the editor opens over this DSF with the Airport tool and the area to edit (draw another polygon, prefill from a runway, delete; Preview shows the result). The Use in batch flattening and go back button saves the area and takes you back – the preview then shows it dashed and labelled "adjusted in the editor". Automatic area discards the adjustment.
  5. Flatten selected (n) › confirm with Flatten. The job runs in the Operations › Batches queue (it waits while RenderFarm runs).
  6. All airports are flattened into one new DSF. An airport that fails verification is skipped with a reason.
  7. After writing, the check runs again on the result: the Before → after table shows the mode, the area size and the largest height change at the airport (after applying Strength, Keep unevenness up to and Change at most by) and lists Improved and Caution, got worse (bumps and slopes of runways, taxiways and pavement). Only a difference larger than 2 % of the original value and at the same time larger than 0.05 percentage points (slope) or 5 mm (bump) counts as a change; smaller differences are mesh measurement noise. Each runway is assessed separately: if any of them gets worse, the value appears only in the Caution, got worse row. Open result selects the new DSF.

You can start the same flattening from Operations › Batches › 2. Where to apply it › Airports on the tile – with the same options and area preview (the options and the areas adjusted in the editor are shared).

Measured on the mesh (Laminar)
FMEE: the Smooth mode lowered the runway bump from 0.097 to 0.026 m and the pavement slope (95 %) from 2.46 to 2.26 %, the largest pavement slope stayed 2.46 → 2.47 %. LKVO: runway bump 0.061 → 0.017 m, largest pavement slope 1.77 → 1.72 %. The ICAO profile mode on FMEE: runway bump 0.028 m, but the largest pavement slope 2.46 → 3.91 %.

ICAO profile mode and runway edges
The runway gets a 0 % transverse slope. Where the terrain under the runway lay on a slope, a transition into the adjoining pavement and taxiways appears at the runway edge and the largest pavement slope may grow there. The airport rating therefore sometimes stays the same after flattening, even if the runways improved a lot. Always go through the Before → after table.

Not verified: batch flattening in X-Plane
The result of both modes is measured by the airport check (the Before → after table), it has not been verified in X-Plane yet.

Flattening one airport in the editor

For fine work on one airport: Editor › a project around the airport › Terrain & water › the Airport, road, tile seam section › the Airport tool. Only the mesh changes (DEMS raster unchanged, objects and roads sit on the mesh); the area boundary and water do not change.

  1. ICAO › Load from apt.dat – lists the runways (length × width, surface) and pavements.
  2. Edit area: Draw area, or Prefill with runway… (runway outline + 30 m; all runways). Only the inside of the area changes; at its boundary the change fades smoothly.
  3. Method: - Smooth the marked area (recommended) (default) – removes bumps and waves and keeps the terrain shape, suitable also for converging runways. Smoothing length (60 m by default; bumps and waves shorter than this disappear, longer slopes stay; more = flatter, but changes more terrain), Smooth grass too (on by default; off = only the apt.dat pavement is smoothed and the change fades smoothly into the grass), Fade at the area boundary (40 m by default – over this width inside the area the change drops to zero, so there is no step at the boundary). Steep terrain outside runways and pavement that separates two parts of the terrain or the terrain from water (an embankment slope, a shore) is not smoothed and only blends in smoothly – the same as in batch flattening. - ICAO runway profile (advanced) – each runway gets its own longitudinal profile: Runway end elevations (terrain (smoothed) / airport elevation from apt.dat / enter manually), Max longitudinal slope (empty = per ICAO and runway length: ≥ 1800 m 1.25 %, 1200–1800 m 1.5 %, shorter 2 %), Min vertical curve radius (30,000 / 15,000 / 7,500 m), Profile smoothing window, Transverse slope and its shape (crowned from the centreline / one-sided), Taxiways and aprons, Paved runways only.
  4. Optionally Flattening amount (optional) for both methods: Strength (100 % = fully, 50 % = halfway to the target), Keep unevenness up to ± (differences smaller than the value stay, e.g. 0.2 m), Max. height change (a safety cap: no place is raised or lowered by more; empty = no limit). The result states the largest height change before and after applying these options.
  5. Mesh quality: Insert outlines into the mesh, Max vertical error, Target grid step, Min triangle angle.
  6. Preview (a background job) – mesh before / after in 3D, a runway table before → after (longitudinal slope, transverse slope, bump, runway ends, ICAO code), deviation from the target; 3D surface. The After edit button in the 3D view shows the flattened terrain with textures, relief and orthophoto like the original terrain, ⇆ Compare next to the original (see Terrain after the edit in the 3D view). Check the profile with Measure › Profile.
  7. Write new DSF.

Not verified: airport flattening in X-Plane
The "Smooth the marked area" mode is measured on the mesh. At FMEE the waves on the runways dropped – the largest from 0.104 m to 0.008 m, 95 % of the values (p95) from 0.008 m to 0.002 m; that is, however, a measurement of an older version of the calculation (before fitting a plane instead of a quadratic and leaving out steep terrain) and it has not been re-measured with the current version in the editor. Current numbers after this change (bump by a 30 m straightedge from the airport check) are under batch flattening. The visual check in X-Plane is still pending. The ICAO runway profile (advanced) method has not been verified in X-Plane either. Check: runways and pavements without bumps and steps, an aircraft at a stand sits level, a smooth transition into grass and the surroundings.

Obstacles in the ICAO surfaces (OLS)

Editor › the Obstacles button (or DSF › Airports › Obstacles at an airport, which creates a project around the airport and switches the mode on). The search only reads; nothing changes until you confirm an edit.

  1. Airport and for each runway its Code (auto or 1–4) and for each end the approach type (auto, non-instrument, non-precision approach, precision approach). "Auto" is a heuristic: the type from the runway markings in apt.dat, the code from the runway length.
  2. Surface length (full per ICAO / shorter), Reference elevation (aerodrome elevation from apt.dat / lowest threshold), Report from, Also search overlay packages, Conical surface.
  3. Find obstacles (progress and Cancel while it runs). The surfaces are shown transparent in 3D, obstacles in red.
  4. Surfaces and result: counts by type (terrain, object, forest, building, autogen), the inner horizontal height, runway data.
  5. The Obstacles list: type filter, sorting (total penetration / own height above the surface), hide excluded, hide those on terrain above the surface (default – otherwise the list fills with trees and houses on hills that already penetrate the surface on their own). A click on a row focuses the obstacle in 3D and shows details with GPS.
  6. Actions (all with confirmation, Ctrl+Z undoes): - Exclusion zone – adds an exclusion to the project; after export it hides objects (autogen as objects), facades or forests in the rectangle from scenery with lower priority (the overlay pack must be higher in scenery_packs.ini), - for project entities Delete from project, Cut forest, Lower to X m (building) – greyed out for a locked entity, - for terrain the lower checkbox.
  7. Lower terrain below the surfaces: Margin below the surface, Blend into surroundings, Lower by at most (a safety cap) › Preview lowering (largest lowering, highest terrain above the surface before → after, largest rise) › Write new DSF…. Runways, pavements and water do not change and the lowering fades out near them, so terrain may stay above the surface there.

When you change the options, the result is marked as stale and terrain lowering is disabled until you search again.

Not verified: height estimates
Obstacle heights: objects from the .obj bounds, forests from max_h in the .for, buildings from the facade parameter, autogen from the tallest object it refers to (heuristic). The ICAO table values are from the 8th edition (2018) and have not been checked against later amendments. Lowered terrain has not yet been checked in X-Plane.

Road corridor

Terrain & water › Airport, road, tile seam › the Road tool. Levels the terrain under a road across and along within the chosen limits – mesh only (road points in the DSF carry no height, the road is draped on the mesh).

  1. Pick a road by clicking – click a road in 3D; the nearest DSF network segment and the connected segments of the same type are selected (no junctions).
  2. Carriageway half width (from .net), Shoulder, Max longitudinal slope (empty = by width: 4 / 6 / 10 %), Min vertical curve radius, Profile smoothing window, Cut / fill slope 1:, Max slope length, No embankments in towns, Fade at the ends.
  3. Optionally Flattening amount (strength, keep unevenness, max change).
  4. Preview – height difference across the carriageway (p95 / max), longitudinal teeth, max longitudinal slope, fill and cut volume; After edit in the 3D view shows the adjusted corridor textured like the original terrain and the road on the new heights › Write new DSF.

Not verified: road corridor in X-Plane
The corridor is verified on the mesh (preview values, mesh checks). It has not been verified in X-Plane yet – check that the road lies on the terrain without steps and teeth and that the cut and fill slopes blend smoothly into the surroundings.

Tile seam

When the edit area of an airport or road reaches into a neighbouring tile, tick Also edit neighbouring tiles (seam). Each DSF is edited separately and the vertices on the shared edge get the same position and height in both – no step. Pick the DSF of each neighbouring tile from the list of its versions (Laminar, our output, Studio edits, packages; terrain meshes only) – preselected is the DSF from the same package as the project terrain, otherwise the one X-Plane draws for the tile; Other path… accepts a path (from the same allowed places as the source in DSF edits). The seam of Insert detailed DEM works the same way. The output is a new DSF for each affected tile; the verification lists the number of shared vertices and the largest height difference on the seam.

Not verified: seam in X-Plane
The seam is verified on the mesh (identical vertices on the edge in both DSFs). Its look in X-Plane has not been verified yet. The new DSFs of both tiles must be installed in X-Plane.


Based on the RF Studio manual (F1 › Manual, version 0.12.0-beta). Post your questions and experience in this thread.