OpenRadar: Editing routes

From FlightGear wiki
Jump to navigation Jump to search
EDDF with procedures, routes and additional information.

Back to mainpage

About

You can define standard routes to OpenRadar. This can be done by converting a NavaidDB file and improve the result or define it from scratch by adding lines, curves and bows to the radar screen. So you can define waiting loops, STARs and SIDs if you want to and if you need them.

Please send your finished work in to include it into the next OpenRadar update for everybody.

To have an example, check out airport LFSB. It is our showcase in this matter.

Please be warned: Defining all approaches and procedures for a more complex airport may produce too much details to work with. Concentrate on the important things, like additional vectors or waiting rooms.

A collection of possibilities:

  • Highlight only the navaids that you need to see
  • Create only the holding areas
  • Create the Approaches to appear on a higher viewpoint and the STAR/SID routes on lower viewpoints
  • Use texts to have the taxiways names in the map at the best spot (hide them on higher viewlevels)
  • Use texts to have the maximum speed in the map
  • Create only the most important routes, or
  • Create all standard STAR and SID routes

Guidelines

To avoid that everyone develops his own standards, we need to agree to common standards.

Display Modes

The route attribute displayMode can have different values:

displaymode Description
always These routes are always displayed. You cannot switch them off using the STAR/SID switch.

That means that you can use them to enrich the map itself: For forbidden areas or areas that require a minimum height... or for instance to add the names for taxiways to the map.

optional This route will be hidden when you switch off START/SID.

You can use it for any route specific elements, that are not related to a specific runway.

sid / star These values mark a route as sid/star. In future we might want to select a sid/star from a list. To be able to do that, we need to know which routes we need to display.

So please follow these simple guidelines:

  1. Define one route per SID/STAR and design it, that it can be displayed individually, everything else switched off
  2. Mark these routes with the correct displayMode
  3. Use the official STAR/NAME as route name, we will use it for display

Content

Airport local data

-- to be added--

Data shared between airports

Should be in a directory with a name describing the region. The airport xml files can incorporate these definitions via include xml element. -- to be added--

Coloring

-- to be added--

Generating the OpenRadar definitions from existing ProceduresDB file

WARNING: Known issues: There is an major issue when reading the procedure file, in the current version. I will fix it soon, but it requires to implement more functionality to define standard routes... I will need some time to do that. Until this feature works, it is disabled in the published versions of OR.

There is already an XML format that contains the STARs and SIDs. Converting it can save you some work.

We do not use it directly because:

  • These data are not free
  • It purpose it to provide input for the autopilot/flight manager, not for an ATC screen
  • Our format is made to display the important information which an ATC needs:
  • adaptive detail (you can define the lower and upper zoom level values between the route is being displayed)
  • display of STARs and SIDs can depend on the runway usage mode
  • colors (each route, each element can have its own color), strokes and line width
  • more graphical elements curves, bows and text
  • NAVAID hightlighting

The SID/STAR xml files can be bought and downloaded for a few bucks from Navigraph. Generally FlightGear looks for them in a Airports/I/C/A/ICAO.procedures.xml (where ICAO is an airport). For example, the procedures file for ELLX, if it exists, is under Airports/E/L/L/ELLX.procedures.xml.

OpenRadar can also read these XML files. For that:

  • create the directory OpenRadar/data/routes/ICAO (where ICAO is the code of the airport you want to use)
  • put your procedure XML (named ICAO.procedures.xml) into it
  • start OpenRadar at your airport (ICAO), you now have a converted file ICAO.procedures.or.xml in the OpenRadar/data/routes/ICAO directory
  • exit OpenRadar : the original file is not needed anymore after this step (move it somewhere else if you want)
  • rename your ICAO.procedures.or.xml file to ICAO.procedures.xml

Now when restarting OpenRadar, the converted routes are available. You can and should modify the new file following the explanations below.

Manual creation / refinement

The most important first:

  • SHIFT+F12 reloads the standard routes of your current airport. So you can see changes quickly...
  • F12 determines the geo position of your mouse tip and copies it to your clipboard. So you can easily place points: Place mouse pointer in OR map at the spot that you need, hit F12, change to your XML file, place the cursor, at the right spot and paste the clipboard. SHIFT+F12 will reload your work for verification...
  • CTRL+F12 determines the current zoom level and copies it to your clipboard. So you can easily set the zoom levels for your routes: Set the desired zoom level in OR map, hit CTRL+F12, change to your XML file, place the cursor, at the right spot and paste the clipboard. SHIFT+F12 will reload your work for verification...


The files must be located in directory data/routes/[airport name].

The files must end with ".xml", so they must be xml documents. Here is a simple example of everything around your route definitions:

<?xml version="1.0" encoding="UTF-8" ?>
<!-- This file contains the STAR and SID of RW 26 -->
<routes>
--- here are your definitions ---
</routes>

A Route

A route is a collection of definitions that belong together. The values zoomMin and zoomMax allow you to define adaptive details or layers of information that appear within those constraints. Omitting them means there is no constraint at this side...

A route can have the following attributes:

Attribute Opt. Description
name No A meaningful name for this route
zoomMin Yes The minimum zoom level at which this route is being displayed. If you zoom in more, it disappears. (default values: Ground: 14, Tower: 26, App: 100)
zoomMax Yes The maximum zoom level at which this route is being displayed. If you zoom out more, it disappears. (default values: Ground: 14, Tower: 26, App: 100)
displayMode (No) Controls how the different switches work for this route:
  • "always": route is displayed always
  • "optional": routes is displayed independently from the runways, but STAR/SID switch turns it off
  • "sid": This route is a SID, its name is the official id, enabling the SID checkbox in runway panel displays it, and the STAR/SID main switch toggles it
  • "star": This route is a STAR, its name is the official id, enabling the STAR checkbox in runway panel displays it, and the STAR/SID main switch toggles it
stroke Yes Can be "line","dashed","dots" or a pattern definition followed optionally by a comma and the line width as decimal, if omitted it is a plain line, 2 dots in width. A pattern definition is a dash separated list of decimals defining the length of the visible and invisible sub-lines of the pattern. e.g. "1-1" (dots), "5-1" (dashes), "10-3-5-3" a long dash, 3 dots space a shorter dash, 3 dots space...
color Yes Defines the color of the elements of this route. Use it carefully and rarely. You still want to be able to read the most important information on the radar: The contacs position info....

Supported are the following xml tags:

Tag Opt. Description
activeStartRunways Yes A comma separated list of runways. If one of them is active for starts the route will be displayed.
activeLandingRunways Yes A comma separated list of runways. If one of them is active for landings the route will be displayed. If neither activeStartRunways nor activeLandingRunways is defined, the route will always be displayed. Use this for parking rooms...
navaids Yes A comma separated list of navaid ids (FIX, NDB, VOR, Airportcodes) that will be highlighted if this route is being displayed, regardless if the main switches for FIX/NDB etc. are enabled or not.

This tag can have an attribute color that defines the color for the navaids in RGB values. Example: color="120,140,120" There can be multiple instances of this element having different colors assigned.

(other elements) Yes The graphical tags explained below

Example:

<?xml version="1.0" encoding="UTF-8" ?>
<!-- This file contains the STAR and SID of RW 26 -->
<routes>
	<route name="RW 26 SID" zoomMin="10" zoomMax="100" color="120,140,120">
		<activeStartRunways>26</activeStartRunways>
		<navaids>BASUD,BLM,BS,ELBEG,HOC,HOMBO,LUMEL,WIL</navaids>
                --- more to be explained ---
        </route>
</routes>

Route features

Zoomlevel

Use the Attributes zoomMin and zoomMax to define a range in which a route is being displayed. So you can separate routes interesting for APP zoom level from details on tower level.

Navaid coloring

Both routes and navaids can have a color attribute defined. The rules which one is displayed are:

  1. If navaids block has no color defined, the route's color is being used.
  2. If route's block has no color defined, a default color will be used.
  3. Navaids are highlighted only, if the route is being displayed (zoom level, active start/landing runway)
  4. If a navaid is used in more than one visible route:
  1. The color of a static route (no runway conditions) has highest priority (zoomLevel is respected only, to check if it is displayed at all)
  2. Then follows the color attribute of the current navaids block, if defined.
  3. Then follows the color attribute of the current route block, if defined, its default color otherwise.

Navaids used in many routes are of somewhat importance and should get their own static route and a separate color as hotspots. In conflict case, the color, that is found first, wins.

Points and Angles

All elements of your route base on points and angles. Angles are magnetic and defined in degrees.

Points on your radar can be defined:

Point Description
Navaid You can use the navaid ID, e.g begin="BLM"
Runway end You can use any runway end of the current airport. e.g. Runway 15 at Basel: begin="LFSB-RW15"
Geographic Location You can use the geographic location separated by a comma. e.g.
begin="47.599450,7.531936", begin="N47°57'51'',E7°54'58''" or begin="N47°57.2',E7°54.10'"
Relative Location You can define a point relative to a navaid in the format: dddNMaaa@iii (where ddd is the decimal distance in NM, aaa is the magnetic bearing from iii, which is a navaid id. Distance and heading have the decimal separator 'dot'.

e.g. "2.5NM165@BLM"

Length' are also given in decimal NM.

Missing Navaids:

If you notice that some navaids are not available in OpenRadar's data, you can use their geographic positions, or better define them in your route file. These additional definitions can be used like navaids defined in the AptNav files... A useful misuse of this feature is to produce highlighting-enabled route texts: Define the text as addPoint and reference it in a routes navaid block. Please remember, very likely your clients will not have them visible in their inflight map...

Attribute Opt. Description
code Yes The ID under that your want to find it. Try to use non existing to avoid conflicts
point Yes The geographic coordinates of the point.

Examples:

<?xml version="1.0" encoding="UTF-8" ?>
<routes>
	<addPoint code="AGOLO" point="50.200000,9.676111"/>
 	<addPoint code="BIBTI" point="50.966667,7.108611"/>
 	<addPoint code="ESUPI" point="50.058333,8.121111"/>
 	<addPoint code="FRD"   point="50.030556,8.566944"/>
 	<addPoint code="IBVIL" point="50.434444,7.369167"/>
 	<addPoint code="KERAX" point="50.475000,9.581944"/>

	...
</routes>

File Includes

It is possible to share xml route definitions between airports to avoid duplicating them. This is done quite straight forward, but including a file with relative path to the current file. The included file needs to have the same structure as the main file and will be imported after all files in the current directory are imported.

Note  This xml element is on the same level as the routes.

Example:

<?xml version="1.0" encoding="UTF-8" ?>
<!-- This file contains the STAR and SID of RW 26 -->
<routes>
	<include file="../uk.xml"/>
        <route...
        ...
</routes>

Elements

A route can be constructed out of the following Elements:

line

A line is a line is a line. It can be defined (1) either via two points or (2) via one point, direction and length.

two point definition

Attribute Opt. Description
start No The start point of the line
end No The end point of the line
startOffset Yes The distance from start point in miles from which the painting should start
endOffset Yes The distance from end point in miles from which the painting should start
stroke Yes Can be "line","dashed","dots" or a pattern definition followed optionally by a comma and the line width as decimal, if omitted it is a plain line, 2 dots in width. A pattern definition is a dash separated list of decimals defining the length of the visible and invisible sub-lines of the pattern. e.g. "1-1" (dots), "5-1" (dashes), "10-3-5-3" a long dash, 3 dots space a shorter dash, 3 dots space...
lineWidth Yes The width of the lines to be painted. Default is 2px. Use 1px for vectoring helper lines (dashed/dotted)... Deprecated, define it in stroke!
arrows Yes Paints arrows at the lines end, pointing in direction from start to end: Possible is "begin", "end", "both". Optionally you can define the arrow size by appending a comma and the size of the arrow. Default is 10, big would be 20. Example: "end,20"
color Yes Defines the color of this line. Overwrites the definition in <route>. Define it there if possible.
text Yes Whatever you define, will be displayed in the middle of the line. The line is broken at this spot.

via one point, direction and length

Attribute Opt. Description
start No The start point of the line
angle No The magnetic angle of this line
length No The length of the line including the offsets
startOffset Yes The distance from start point in miles from which the painting should start
endOffset Yes The distance from end point in miles from which the painting should start
stroke Yes Can be "line","dashed","dots" or a pattern definition followed optionally by a comma and the line width as decimal, if omitted it is a plain line, 2 dots in width. A pattern definition is a dash separated list of decimals defining the length of the visible and invisible sub-lines of the pattern. e.g. "1-1" (dots), "5-1" (dashes), "10-3-5-3" a long dash, 3 dots space a shorter dash, 3 dots space...
lineWidth Yes The width of the lines to be painted. Default is 2px. Use 1px for vectoring helper lines (dashed/dotted)... Deprecated, define it in stroke!
arrows Yes Paints arrows at the lines end, pointing in direction from start to end: Possible is "begin","end",both", Optionally you can define the arrow size by appending a comma and the size of the arrow. Default is 10, big would be 20. Example: "end,20"
color Yes Defines the color of this line. Overwrites the definition in <route>. Define it there if possible.
text Yes Whatever you define, will be displayed at the middle of the line. The line is broken at this spot.

Examples:

<?xml version="1.0" encoding="UTF-8" ?>
<routes>
	<route name="RW 26 SID" zoomMin="10" zoomMax="100" color="120,140,120">
		<activeStartRunways>26</activeStartRunways>
		<navaids>BASUD,BLM,BS,ELBEG,HOC,HOMBO,LUMEL,WIL</navaids>

                <line start="BLM" end="ELBEG" text="069" />
		<line start="HOC" end="HOMBO" startOffset="3" text="341" />
		<line start="5.4NM226@BLM" end="LUMEL" text="226" />

		<line start="BLM" startOffset="1.2" angle="003" length="10" text="003" arrows="end"/>
                <!-- a vectoring line -->
		<line start="BLM" angle="202" length="4.5" stroke="dashed,1" text="202" />

        </route>
</routes>

multi-point-line / polygon

This element can be used to draw polygons, both open and closed.

Attribute Opt. Description
close Yes "true" is the default, "false" does not connect the last with the first point
stroke Yes Can be "line","dashed","dots" or a pattern definition followed optionally by a comma and the line width as decimal, if omitted it is a plain line, 2 dots in width. A pattern definition is a dash separated list of decimals defining the length of the visible and invisible sub-lines of the pattern. e.g. "1-1" (dots), "5-1" (dashes), "10-3-5-3" a long dash, 3 dots space a shorter dash, 3 dots space...
lineWidth Yes The width of the lines to be painted. Default is 2px. Use 1px for vectoring helper lines (dashed/dotted)... Deprecated, define it in stroke!
color Yes Defines the color of this line. Overwrites the definition in <route>. Define it there if possible.

In difference to the other XML elements, this element contains children named points. Their content is a normal point definition as explained above.

Example:

<?xml version="1.0" encoding="UTF-8" ?>
<routes>
	<route name="Polygon example">
		...
		<multiPointLine close="false">
			<point>ALTIK</point>
			<point>6NM226@BLM</point>
		    	<point>50.454722,7.227222</point>
		</multiPointLine>
		...
	</route>
</routes>

intercept

An intercept is currently implemented as a line from a startpoint in a startheading, a bow and a second line to a endPoint in a specific heading. The bow is defined in a way, that both lines are tangents to a circle with the same radius as the bow. You can define it in two ways:

General Case

Attribute Opt. Description
start No The start point of the first line
startHeading No The initial heading of the plane at startPoint
radius No The radius in NM that the plane has to fly. You can also use speed to define it.
(speed) No Alternative to radius. Assuming a standard turn (360 degrees in 2 minutes, we can calculate the radius for you...)
direction No Is the turn to be made left or right
endHeading No The heading that the plane will fly after the turn in direction to the endPoint. This is the opposite of radial. Use either endHeading or radial
(radial) No Alternative to endHeading: The radial you want to intercept. The radial is the direction from the endPoint, so it is the opposite of endHeading.
end No The end point of the line (in real live most likely a VOR or NDB)
startOffset Yes The distance from start point in miles from which the painting should start
endOffset Yes The distance from end point in miles from which the painting should end
stroke Yes Can be "line","dashed","dots" or a pattern definition followed optionally by a comma and the line width as decimal, if omitted it is a plain line, 2 dots in width. A pattern definition is a dash separated list of decimals defining the length of the visible and invisible sub-lines of the pattern. e.g. "1-1" (dots), "5-1" (dashes), "10-3-5-3" a long dash, 3 dots space a shorter dash, 3 dots space...
lineWidth Yes The width of the lines to be painted. Default is 2px. Use 1px for vectoring helper lines (dashed/dotted)... Deprecated, define it in stroke!
arrows Yes Paints arrows at the lines end, pointing in direction from start to end: Possible is "begin","end",both", Optionally you can define the arrow size by appending a comma and the size of the arrow. Default is 10, big would be 20. Example: "end,20"
color Yes Defines the color of this line. Overwrites the definition in <route>. Define it there if possible.
text Yes Whatever you define, will be displayed in the middle of the second line. The line is broken at this spot.

Known-start-of-turn Case In this case there is no first line. The drawing starts directly with the bow.

Attribute Opt. Description
startTurn No The start point of the bow
startHeading No The initial heading of the plane at startTurn
radius No The radius in NM that the plane has to fly. You can also use speed to define it.
(speed) No Alternative to radius. Assuming a standard turn (360 degrees in 2 minutes, we can calculate the radius for you...)
direction No Is the turn to be made left or right
endHeading No The heading that the plane will fly after the turn in direction to the endPoint. This is the opposite of radial. Use either endHeading or radial
(radial) No Alternative to endHeading: The radial you want to intercept. The radial is the direction from the endPoint, so it is the opposite of endHeading.
end No The end point of the line (in real live most likely a VOR or NDB)
endOffset Yes The distance from end point in miles from which the painting should end
stroke Yes Can be "line","dashed","dots" or a pattern definition followed optionally by a comma and the line width as decimal, if omitted it is a plain line, 2 dots in width. A pattern definition is a dash separated list of decimals defining the length of the visible and invisible sub-lines of the pattern. e.g. "1-1" (dots), "5-1" (dashes), "10-3-5-3" a long dash, 3 dots space a shorter dash, 3 dots space...
lineWidth Yes The width of the lines to be painted. Default is 2px. Use 1px for vectoring helper lines (dashed/dotted)... Deprecated, define it in stroke!
arrows Yes Paints arrows at the lines end, pointing in direction from start to end: Possible is "begin","end",both", Optionally you can define the arrow size by appending a comma and the size of the arrow. Default is 10, big would be 20. Example: "end,20"
color Yes Defines the color of this line. Overwrites the definition in <route>. Define it there if possible.
text Yes Whatever you define, will be displayed in the middle of the second line. The line is broken at this spot.

Undesired results Constructing an intercept is easy with ruler and triangle, but more difficult when you are facing numerics and different coordinate systems. I have performed a lot of tests and are pretty sure that it works now, but there still can be issues.

  • Parallel headings cause the problem, that I have to ignore the radius definition to connect them with one bow. I use the distance between the lines as bow diameter.
  • Long lines In the general case most problems I saw arose from a radius, that was too small. If the lines are getting closer with growing distance from start, a small radius will cause the lines to be too long. In that case consider to use a larger radius or split the intercept into two.
  • Bow behind startPoint: This is often caused by the fact that the plane needs to fly a wider radius to intercept the endHeading. In that case consider to use a larger radius or split the intercept into two.
  • Other cases If construction is not possible, the result freaks out and paints something else. Verify your parameters! I help if I can, as this also might be a bug. Please send in your route!

Constraints

  • Currently it is not possible to draw S-shape like intercepts automatically. I plan to add it, but need time and a free head for that. Use two intercepts until then!

curve

Curves are an easy and comfortable way to connect lines if there is not radius defined and if the angle is small. A curve is implemented as quad curve, so it has a startPoint, an endPoint and an controlPoint which controls the curving. A good start point for the control point is the interception between the lines that should be connected.

Attribute Opt. Description
start No The start point of the curve
end No The end point of the curve
controlPoint No The location of the control point of this curve.
stroke Yes Can be "line","dashed","dots" or a pattern definition followed optionally by a comma and the line width as decimal, if omitted it is a plain line, 2 dots in width. A pattern definition is a dash separated list of decimals defining the length of the visible and invisible sub-lines of the pattern. e.g. "1-1" (dots), "5-1" (dashes), "10-3-5-3" a long dash, 3 dots space a shorter dash, 3 dots space...
lineWidth Yes The width of the lines to be painted. Default is 2px. Use 1px for vectoring helper lines (dashed/dotted)... Deprecated, define it in stroke!
arrows Yes Paints arrows at the lines end, pointing in direction from start to end: Possible is "begin","end",both", Optionally you can define the arrow size by appending a comma and the size of the arrow. Default is 10, big would be 20. Example: "end,20"
color Yes Defines the color of this line. Overwrites the definition in <route>. Define it there if possible.

Example:

<?xml version="1.0" encoding="UTF-8" ?>
<routes>
	<route name="RW 26 SID" zoomMin="10" zoomMax="100" color="120,140,120">
		<activeStartRunways>26</activeStartRunways>
		<navaids>BASUD,BLM,BS,ELBEG,HOC,HOMBO,LUMEL,WIL</navaids>

		<curve start="6NM226@BLM" end="13.5NM315@BASUD" controlPoint="7.5NM226@BLM"/>
        </route>
</routes>

bow

A bow is a part of a circle around a specified point. It can be used to define circling approaches or wider curves.

Attribute Opt. Description
center No The center of the bow
radius No The radius of the bow
startAngle No The magnetic start angle of the bow
extentAngle No The extend of the bow in degress. Positive direction is the direction of the compass
stroke Yes Can be "line","dashed","dots" or a pattern definition followed optionally by a comma and the line width as decimal, if omitted it is a plain line, 2 dots in width. A pattern definition is a dash separated list of decimals defining the length of the visible and invisible sub-lines of the pattern. e.g. "1-1" (dots), "5-1" (dashes), "10-3-5-3" a long dash, 3 dots space a shorter dash, 3 dots space...
lineWidth Yes The width of the lines to be painted. Default is 2px. Use 1px for vectoring helper lines (dashed/dotted)... Deprecated, define it in stroke!
arrows Yes Paints arrows at the lines end, pointing in direction from start to end: Possible is "begin","end",both", Optionally you can define the arrow size by appending a comma and the size of the arrow. Default is 10, big would be 20. Example: "end,20"
color Yes Defines the color of this line. Overwrites the definition in <route>. Define it there if possible.
text Yes Whatever you define, will be displayed at the center angle of the bow. The line is broken at this spot.

Example:

<?xml version="1.0" encoding="UTF-8" ?>
<routes>
	<route name="RW 26 SID" zoomMin="10" zoomMax="100" color="120,140,120">
		<activeStartRunways>26</activeStartRunways>
		<navaids>BASUD,BLM,BS,ELBEG,HOC,HOMBO,LUMEL,WIL</navaids>

		<bow center="BLM" radius="9" startAngle="277" extentAngle="50" text="D9"/>
		<!-- a misap -->
		<bow center="BLM" radius="15" startAngle="274" extentAngle="-36" stroke="dashed" arrows="start" text="D15"/>
        </route>
</routes>

loop

This element displays a parking area. It has predefined text locations for min, max and misap height...

Attribute Opt. Description
navpoint No The hook of the parking. The target of the inbound direction, where the pilots turn into the loop.
inboundHeading No As magnetic direction.
length Yes the length of a leg in NM (the straight part of the loop)
width Yes the distance between the legs in NM
right Yes "true" or "false", does the pilot turn to right or left at navpoint? Default: right
minHeight Yes The minimum height for planes in this loop (painted bold)
maxHeight Yes The maximum height for planes in this loop
misapHeight Yes The default height for missed approaches.
stroke Yes Can be "line","dashed","dots" or a pattern definition followed optionally by a comma and the line width as decimal, if omitted it is a plain line, 2 dots in width. A pattern definition is a dash separated list of decimals defining the length of the visible and invisible sub-lines of the pattern. e.g. "1-1" (dots), "5-1" (dashes), "10-3-5-3" a long dash, 3 dots space a shorter dash, 3 dots space...
lineWidth Yes The width of the lines to be painted. Default is 2px. Use 1px for vectoring helper lines (dashed/dotted)... Deprecated, define it in stroke!
arrows Yes Paints arrows at the lines end, pointing in direction from start to end: Possible is "begin","end",both", Optionally you can define the arrow size by appending a comma and the size of the arrow. Default is 10, big would be 20. Example: "end,20"
color Yes Defines the color of this line. Overwrites the definition in <route>. Define it there if possible.

Example:

<?xml version="1.0" encoding="UTF-8" ?>
<routes>
	<route name="LFSB Wait loops">
		<navaids>BLM,ALTIK,SEDOR</navaids>
		<loop navpoint="SEDOR" inboundHeading="192" width="5" arrows="both" minHeight="7000" maxHeight="MAX 12000"/>>
		<loop navpoint="ALTIK" inboundHeading="94" width="5" arrows="both" minHeight="5500" maxHeight="MAX 11000" misapHeight="MISAP4000"/>
		<loop navpoint="BALIR" inboundHeading="319" width="5" arrows="both" minHeight="7000" maxHeight="MAX 12000"/>
	</route>
</routes>

text

This element draws a text at the specified spot. If marked as clickable, it can be used to assign a route to the selected contact with a single click.

Attribute Opt. Description
position No The geographic position of the text's center
angle Yes The text can be rotated, if you need to. Default is horizontal, angle grows clockwise
alignHeading Yes Alternative to angle. The text will be displayed aligned to a heading. Useful if you want to write along a route leg.
font Yes The font name, please consider using a font everybody has available, or leave it away to take the default
fontSize Yes The font size in points. Default is 10pt
color Yes Defines the color of this text. Overwrites the definition in <route>. Define it there if possible.
clickable Yes If set to "true", the route can be assigned to the selected contact with a single click onto this text.
text No This text will be displayed. Single line only!

Example:

<?xml version="1.0" encoding="UTF-8" ?>
<routes>
	<route name="text example">
		<text position="5NM327@BLM" font="Arial" fontSize="22" angle="-90" text="Example text"/>
                <text position="6NM327@BLM" font="Arial" fontSize="22" alignHeading="110" text="Example text"/>

                <text position="47.546992,7.664459" fontSize="11" clickable="true" text="ELBEG 6T"/>
	</route>
</routes>

screenText

This element draws a text at the specified spot on your radar display. It will not pan, nor zoom with the rest of the map.

Attribute Opt. Description
screenPos No The position of the text's center in pixels in x,y format, e.g. "50,50". x,y start in the upper left corner. Negative values count from the other side of the screen. "center" works on per x/y base too.
angle Yes The text can be rotated, if you need to. Default is horizontal, angle grows clockwise
font Yes The font name, please consider using a font everybody has available, or leave it away to take the default
fontSize Yes The font size in points. Default is 10pt
color Yes Defines the color of this text. Overwrites the definition in <route>. Define it there if possible.
clickable Yes If set to "true", the route can be assigned to the selected contact with a single click onto this text.
text No This text will be displayed. Single line only!

Example:

<?xml version="1.0" encoding="UTF-8" ?>
<routes>
	<route name="screenText example">
		<screenText screenPos="50,50" text="top left"/>
		<screenText screenPos="-50,50" text="top right"/>
		<screenText screenPos="50,-50" text="bottom left"/>
		<screenText screenPos="-50,-50" text="bottom right"/>
		<screenText screenPos="center,center" text="center"/>
	</route>
</routes>

VFR minimum altitudes

This element draws the known minimum altitude symbol.

Attribute Opt. Description
position No The position of the text's center
value No The altitude in thousands of feet ("3.4" means 3400 ft)
font Yes The font name, please consider using a font everybody has available, or leave it away to take the default
fontSize Yes The font size in points. Default is 10pt
color Yes Defines the color of this text. Overwrites the definition in <route>. Define it there if possible.

Example:

<?xml version="1.0" encoding="UTF-8" ?>
<routes>
	<route name="LFSB minimum altitudes">
		<!-- black forest -->
		<minAlt position="47.705141,7.911530" value="5.7"/>
		<minAlt position="47.861,8.01315" value="5.9"/>
		<!-- jura -->
		<minAlt position="47.81546,6.847916" value="5.3"/>
		<minAlt position="48.084501,7.236557" value="5.4"/>
		<!-- alsace -->
		<minAlt position="47.406250,7.706909" value="5.7"/>
		<minAlt position="47.208841,7.245483" value="6.2"/>
	</route>
</routes>

restriction

This element draws speed and/or altitude restrictions.

Attribute Opt. Description
position No The position of the centre if the restriction element.
maxspeed Yes The maximum permitted speed in knots.
notabove Yes The altitude above which aircraft should not proceed, see below for how this can be represented.
notbelow Yes The altitude below which aircraft should not proceed, see below for how this can be represented.
stroke Yes Can be "line","dashed","dots" or a pattern definition followed optionally by a comma and the line width as decimal, if omitted it is a plain line, 2 dots in width. A pattern definition is a dash separated list of decimals defining the length of the visible and invisible sub-lines of the pattern. e.g. "1-1" (dots), "5-1" (dashes), "10-3-5-3" a long dash, 3 dots space a shorter dash, 3 dots space...
font Yes The font name, please consider using a font everybody has available, or leave out to take the default
fontSize Yes The font size in points. Default is 10pt
color Yes Defines the colour of lines and text in this element. Overrides the colour inherited from the <route>.

Example:

<routes>
	<route name="Restrictions test" displayMode="always" color="255,255,255" zoomMax="300">
	<!-- This route demonstrates the 11 (9 useful) restriction layouts -->
    		<restriction position="53,-7.0" stroke="line,2" font="Courier" fontSize="10"/>
    		<restriction position="53,-6.6" maxspeed="240" stroke="line,2" font="Courier" fontSize="10"/>
    		<restriction position="53,-6.2" notabove="3000ft" stroke="line,2" font="Courier" fontSize="10"/>
    		<restriction position="53,-5.8" notbelow="FL120" stroke="line,2" font="Courier" fontSize="10"/>
    		<restriction position="53,-5.4" maxspeed="240" notabove="3000ft" stroke="line,2" font="Courier" fontSize="10"/>
    		<restriction position="53,-5.0" maxspeed="240" notbelow="FL120" stroke="line,2" font="Courier" fontSize="10"/>
    		<restriction position="53,-4.6" notabove="3000ft" notbelow="FL120" stroke="line,2" font="Courier" fontSize="10"/>
    		<restriction position="53,-4.2" notabove="FL120" notbelow="3000ft" stroke="line,2" font="Courier" fontSize="10"/>
    		<restriction position="53,-3.8" notabove="FL120" notbelow="FL120" stroke="line,2" font="Courier" fontSize="10"/>
    		<restriction position="53,-3.4" maxspeed="240" notabove="FL120" notbelow="FL120" stroke="line,2" font="Courier" fontSize="10"/>
    		<restriction position="53,-2.8" maxspeed="240" notabove="3000ft" notbelow="FL120" stroke="line,2" font="Courier" fontSize="10"/>

	</route>
</routes>

The type of restriction displayed is controlled by the combination and relationship between the three options maxspeed, notabove and notbelow . Not all the combinations are useful; specify none of the three and you'll get a blank restriction you can't even see. Specify all 3 options and where notabove and notbelow are not equal you'll get this helpful error message displayed.

StdRteRestriction-error.png

The remaining 9 combinations are useful.

StdRteRestriction.png from left to right:

  1. maxspeed only
  2. notabove only
  3. notbelow only
  4. notabove and maxspeed
  5. notbelow and maxspeed
  6. notabove and notbelow where notabove < notbelow
  7. notabove and notbelow where notabove > notbelow
  8. notabove and notbelow where notabove = notbelow
  9. notabove, notbelow and maxspeed where notabove = notbelow

Altitudes for notabove and notbelow are represented as feet or Flight Level. Any text provided would be displayed, but to determine the correct symbol and positioning of the text for a particular restriction a calculation has to be performed to determine which of the 2 altitudes provided is higher than the other, or if they are both the same. For this purpose an attempt is made to approximate what is provided in feet. This table shows the currently available formats and the result in feet

provided text Approximation method Approximation in feet
3000 parse number 3000
3000ft remove ft & parse number 3000
3,500 remove commas & parse number 3000
3000 AMSL remove AMSL & parse number 3000
MAX 3000 remove MAX & parse number 3000
FL120 remove FL, parse number & multiply by 100 12000
SFC assume 0 (surface) 0
GND assume 0 (ground) 0

It is obviously incorrect to assume that GND will be 0, but it is sufficient in most cases in order to determine which of the 2 levels would be greater than the other, there are cases where this could be a problem (where the ground is below sea level perhaps), in the unlikely event that you encounter one of these rare situations, please use the actual altitude in feet as a workaround.

Include a route / shared route parts

This element can be used to include all elements of another, already defined, route into the current route. You shall use it, to avoid duplicate route definitions for the part, that is shared by multiple routes.

Note  The include tag does not inherit route definitions like route attributes, active runways or navaids to highlight. These definitions must be done for each real route (the one that includes the shared route). Only the route elements like lines, intercepts etc. are included.
Attribute Opt. Description
routeName No The name of the route that will be included.


Example:

<?xml version="1.0" encoding="UTF-8" ?>
<routes>
	<route name="sharedRouteName">
             <line start="BLM" end="ELBEG" text="069" />
	</route>

	<route name="ELBEG 6T" displayMode="sid" zoomMin="10" zoomMax="100" color="120,140,120">
             <activestartRunways>15</activestartRunways>
             <navaids color="255,255,0">ELBEG,HOC</navaids>

             <include routeName="sharedRouteName" />
	</route>
</routes>