<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.flightgear.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Deskin</id>
	<title>FlightGear wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.flightgear.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Deskin"/>
	<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/Special:Contributions/Deskin"/>
	<updated>2026-04-06T11:42:42Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.6</generator>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=AI_Traffic&amp;diff=3528</id>
		<title>AI Traffic</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=AI_Traffic&amp;diff=3528"/>
		<updated>2007-05-28T01:47:33Z</updated>

		<summary type="html">&lt;p&gt;Deskin: /* Testing the network */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Interactive Traffic in FlightGear ==&lt;br /&gt;
&lt;br /&gt;
Starting with version 0.9.5, FlightGear has an interactive traffic system that is based on the AIModels subsystem, and which is currently under active development. This page aims to provide the required documentation needed to set up some traffic.&lt;br /&gt;
&lt;br /&gt;
In essence, setting-up the AI controlled traffic system involves three steps: &lt;br /&gt;
1. Create Traffic files, 2) Download and install the required AI Aircraft, and 3)Build ground networks for the Airports containing traffic.&lt;br /&gt;
&lt;br /&gt;
== Building Traffic Files ==&lt;br /&gt;
&lt;br /&gt;
Traffic patterns are stored in data files in extended markup language (.xml) format. Depending on version, these files are either stored in a sudirectory called '''Traffic''' in FlightGear's main data directory, hereafter referred to with it's technical name:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
${FGROOT}/Traffic&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or in the AI Aircraft's directory. Current FlightGear CVS (as of late December 2007) has its traffic files in the aircraft directories (e.g., in data/AI/Aircraft/737/, and older versions as well as the current PLIB built version of FlightGear have this file in &amp;lt;nowiki&amp;gt;${FGROOT}/Traffic&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
Each traffic pattern is built around two entities: Aircraft and Flights. Before discussing the details, lets start by exploring these two concepts a little further.&lt;br /&gt;
&lt;br /&gt;
== Some Details: TrafficManager, Aircraft, and Flights ==&lt;br /&gt;
&lt;br /&gt;
As in real life, AI traffic in FlightGear is centered around aircraft. In real life, a commercial airliner is put to use by operating on a series of scheduled flights, on a daily or weekly basis. Take for example the long haul routes that are flown by McDonnel Douglas MD11 aircraft. For instance, the MD11's operated by KLM  fly regularly between Amsterdam and various distant destinations, such as San Fransisco or Minneapolis in the United States, Vancouver or Montreal in Canada, Accra and Lagos in Africa, or New Delhi in India. Some of these routes are too long to complete a return flight in one day, such as the trip between Amsterdam and San Fransisco, which is basically an 11-hour flight one-way. So it would take 22 hours of just the flying time, and at least an additional two hour turn-around time at each airport. Therefore, in real-life, it is necessary to operate this aircraft on a series of routes, because other routes are  considerably shorter than the trip to San Fransisco. Therefore, the time lost on one route can be gained on another, averaging out to approximately one round-trip a day. &lt;br /&gt;
&lt;br /&gt;
In FlightGear, we wouldn't have to be so strictly considerate about the turnaround times as a real-world airline would, but in the not-so distant future, we also want to be able to see realisticly crowded terminals at our simulated airports, so considering the turnaround time in the schedules is a good thing. Therefore, most of the long-haul aircraft will need to be scheduled to fly more than one route. Hence, each AI aircraft has one or more routes assigned to it, which repeat on a weekly, daily, or hourly basis. &lt;br /&gt;
&lt;br /&gt;
The FlightGear traffic manager system, periodically checks the approximate position of a each aircraft in its database. This database is constructed on the basis of a routing table assigned to each aircraft. As in the real-world, when a route ends at one airport the next one has to start from the same airport as well. An important difference between the real world and the FlightGear traffic patterns is that while in the real world aircraft schedules are frequently rotated the FlightGear routes remain the same, unless the database is updated. Real aircraft require mainanance, and are therefore taken out of service periodically, FlightGear aircraft have the advantage that they do not require maintanance in this respect.&lt;br /&gt;
&lt;br /&gt;
== An example of a traffic file ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;trafficlist&amp;gt;&lt;br /&gt;
    &amp;lt;aircraft&amp;gt;&lt;br /&gt;
        &amp;lt;model&amp;gt;Aircraft/MD11/Models/KLMmd11-ai.xml&amp;lt;/model&amp;gt;&lt;br /&gt;
        &amp;lt;livery&amp;gt;KLM&amp;lt;/livery&amp;gt;&lt;br /&gt;
        &amp;lt;airline&amp;gt;KLM&amp;lt;/airline&amp;gt;&lt;br /&gt;
        &amp;lt;actype&amp;gt;MD11&amp;lt;/actype&amp;gt;&lt;br /&gt;
        &amp;lt;offset&amp;gt;19&amp;lt;/offset&amp;gt;&lt;br /&gt;
        &amp;lt;radius&amp;gt;39&amp;lt;/radius&amp;gt;&lt;br /&gt;
        &amp;lt;flighttype&amp;gt;gate&amp;lt;/flighttype&amp;gt;&lt;br /&gt;
        &amp;lt;performance-class&amp;gt;jet_transport&amp;lt;/performance-class&amp;gt;&lt;br /&gt;
        &amp;lt;registration&amp;gt;PH-KCA&amp;lt;/registration&amp;gt;&lt;br /&gt;
        &amp;lt;heavy&amp;gt;true&amp;lt;/heavy&amp;gt;&lt;br /&gt;
        &amp;lt;!-- Day one: Amsterdam to San Fransisco, CA, USA --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0605&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;0/09:45:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;330&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;KSFO&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;0/20:55:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
        &amp;lt;!-- Return Flight: Arrive the next day --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0606&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;KSFO&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;0/23:00:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;1/09:35:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
        &amp;lt;!-- Day two: Amsterdam to Accra, Ghana --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0589&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;1/12:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;330&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;DGAA&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;1/19:00:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
        &amp;lt;!-- Day two Return Flight: Arrive the next Day --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0590&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;DGAA&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;1/21:15:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;2/04:10:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
         &amp;lt;!-- Day three: Amsterdam to Vancouver, BC, Canada --&amp;gt;&lt;br /&gt;
         &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0681&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;2/08:25:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;330&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;CYVR&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;2/18:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
         &amp;lt;!-- Day three: return Flight: Arrive the next day --&amp;gt;&lt;br /&gt;
         &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0682&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;CYVR&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;2/20:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;330&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;3/05:40:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
         &amp;lt;!-- Day four: Amsterdam to Delhi, India --&amp;gt;&lt;br /&gt;
         &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0871&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;3/09:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;VIDP&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;3/17:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;    &lt;br /&gt;
         &amp;lt;!-- Day four: Return Flight: Arrive the next day --&amp;gt;&lt;br /&gt;
         &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0872&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;VIDP&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;3/19:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;350&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;4/04:00:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
         &amp;lt;!-- Day five: Amsterdam to Lagos, Nigeria --&amp;gt;&lt;br /&gt;
         &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0587&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;4/10:30:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;DNMM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;4/16:55:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;  &lt;br /&gt;
        &amp;lt;!-- Day five: Return Flight, Arrive the next day --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0588&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;DNMM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;4/21:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;5/06:10:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;         &lt;br /&gt;
        &amp;lt;!-- Day Six: Amsterdam to Montreal, Quebec, Canada --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0671&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;5/12:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;CYUL&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;5/19:50:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;     &lt;br /&gt;
        &amp;lt;!-- Day Six: Return Flight. Arrive the next day --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0672&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;CYUL&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;5/22:00:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;6/04:45:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;    &lt;br /&gt;
       &amp;lt;!-- Day Seven: Minneapolis/St. Paul, MN, USA --&amp;gt;&lt;br /&gt;
       &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0667&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;6/12:05:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;330&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;KMSP&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;6/20:50:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
       &amp;lt;!-- Day Seven: Return Flight, Arrive the next day. --&amp;gt;&lt;br /&gt;
       &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0668&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;KMSP&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;6/23:00:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;0/07:15:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;                &lt;br /&gt;
    &amp;lt;/aircraft&amp;gt;&lt;br /&gt;
 &amp;lt;/trafficlist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disecting the traffic file ==&lt;br /&gt;
&lt;br /&gt;
Here I will discuss the general structure of a traffic file in more detail. As discussed in the introduction, the traffic patterns are centered around aircraft and flights. Therefore, a minimal traffic file will consist of two sections: the aircraft definition and the flights section. In the next two sections, I will discuss each of these sections. &lt;br /&gt;
&lt;br /&gt;
== General Layout ==&lt;br /&gt;
&lt;br /&gt;
The general layout of each file should look like the above example.&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;trafficlist&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
 &amp;lt;/trafficlist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The general layout of each file should look like the above example. The first line contains a generic xml header, which is followed on the second line with a '''&amp;lt;trafficlist&amp;gt;''' statement. Also, the last line in the file should close off the trafficlist section using the '''&amp;lt;/trafficlist&amp;gt;''' statement. As will be illustrated below, between these two statements can be one or more aircraft definitions.&lt;br /&gt;
&lt;br /&gt;
== Defining the aircraft ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;trafficlist&amp;gt;&lt;br /&gt;
    &amp;lt;aircraft&amp;gt;&lt;br /&gt;
       &amp;lt;model&amp;gt;Aircraft/MD11/Models/KLMmd11-ai.xml&amp;lt;/model&amp;gt;&lt;br /&gt;
       &amp;lt;livery&amp;gt;KLM&amp;lt;/livery&amp;gt;&lt;br /&gt;
       &amp;lt;airline&amp;gt;KLM&amp;lt;/airline&amp;gt;&lt;br /&gt;
       &amp;lt;actype&amp;gt;MD11&amp;lt;/actype&amp;gt;&lt;br /&gt;
       &amp;lt;offset&amp;gt;19&amp;lt;/offset&amp;gt;&lt;br /&gt;
       &amp;lt;radius&amp;gt;39&amp;lt;/radius&amp;gt;&lt;br /&gt;
       &amp;lt;flighttype&amp;gt;gate&amp;lt;/flighttype&amp;gt;&lt;br /&gt;
       &amp;lt;performance-class&amp;gt;jet_transport&amp;lt;/performance-class&amp;gt;&lt;br /&gt;
       &amp;lt;registration&amp;gt;PH-KCA&amp;lt;/registration&amp;gt;&lt;br /&gt;
       &amp;lt;flight&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;/aircraft&amp;gt;&lt;br /&gt;
 &amp;lt;/trafficlist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The first lines inside the '''&amp;lt;aircraft&amp;gt;''' clause define the aircraft's performance characteristics.&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;model&amp;gt;''' Here is a path specified to the 3D model that should be used in FlightGear.&lt;br /&gt;
* '''&amp;lt;livery&amp;gt;''' This line is currently unused, and will likely remain unused. The original idea was to combine this with the '''&amp;lt;model&amp;gt;''' line (see above) to load a specific combination of aircraftype and paint scheme, but I abandoned that idea, because it didn't turn out to be very combatible with the existing FlightGear model loading code. &lt;br /&gt;
* '''&amp;lt;airline&amp;gt;''' This line refers to the airline operating the aircraft. This information is currently used by FlightGear to handle gate/parking assignments. Use the official 3-letter ICAO airline code here, in case of commercial traffic. This keyword is unlikely to be used for general aviation and military traffic. &lt;br /&gt;
* '''&amp;lt;actype&amp;gt;''' A description of the aircraft type reserved for future use in ATC.&lt;br /&gt;
* '''&amp;lt;offset&amp;gt;''' Ground offset of the 3D model. Not all aircraft 3D models are build using the same convention. Use this parameter to align the wheels with the ground. Notice that this parameter will probably become obsolete in the near future, because model view point references can also be done in the xml file that the '''&amp;lt;model&amp;gt;''' keyword refers to.&lt;br /&gt;
* '''&amp;lt;radius&amp;gt;''' An estimate of the aircraft's size. This is mainly used at airports for gate assignments.&lt;br /&gt;
* '''&amp;lt;flighttype&amp;gt;''' This line is also used for gate assignments and should be one of the following:&lt;br /&gt;
    '''ga''' (general aviation), &lt;br /&gt;
    '''cargo''' (cargo)&lt;br /&gt;
    '''gate''' (commercial passenger traffic) &lt;br /&gt;
In addtion, it is expected that a '''mil''' value will be valid sometime soon. In the near future, this keyword will also be used for runway assignments, so that general aviation, commercial, and military traffic will use different runways if that is part of the airport's operational procedures.&lt;br /&gt;
* '''&amp;lt;performance-class&amp;gt;''' This line is used to determine the performance characteristics of AI aircraft. This should match one of the performance classes that are predefined in FlightGear. Currently, the following performance classes are supported:&lt;br /&gt;
 &lt;br /&gt;
 '''light_aircraft''' (prop driven single or twin),&lt;br /&gt;
 '''ww2_fighter'''    (world war two fighter),&lt;br /&gt;
 '''jet_transport'''  (modern commercial jet),&lt;br /&gt;
 '''jet_fighter'''    (modern fighter aircraft)&lt;br /&gt;
 '''tanker'''         (tanker aircraft), or.&lt;br /&gt;
 '''ufo'''            (allows extreme accel/decel capabilities).&lt;br /&gt;
*'''&amp;lt;registration&amp;gt;''' The aircraft's tail number. Future versions of FlightGear will use this registration in ATC for general aviation traffic. For commercial traffic the registration number will likely remain unused.&lt;br /&gt;
&lt;br /&gt;
== Defining a flight ==&lt;br /&gt;
&lt;br /&gt;
The next series of lines within the '''&amp;lt;aircraft&amp;gt;''' section define the flights. Again, each flight is defined between the '''&amp;lt;flight&amp;gt;''' and '''&amp;lt;/flight&amp;gt;''' statements. For example, let's have a look at the first two &lt;br /&gt;
flights specified in our PH-KCA example. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- Day one: Amsterdam to San Fransisco, CA, USA --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0605&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;0/09:45:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;330&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;KSFO&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;0/20:55:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt; &lt;br /&gt;
       &amp;lt;/flight&amp;gt; &lt;br /&gt;
        &amp;lt;!-- Return Flight: Arrive the next day --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0606&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;KSFO&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;0/23:00:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;1/09:35:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The '''&amp;lt;flights&amp;gt;''' section is slightly more complex than the aircraft definition itself, because it has a few nested levels. The following keywords should be specified:&lt;br /&gt;
* '''&amp;lt;flight&amp;gt;''' All the relevant parameter should be specified between the '''&amp;lt;flight&amp;gt;&amp;lt;/flight&amp;gt;''' keywords.&lt;br /&gt;
* '''&amp;lt;callsign&amp;gt;''' The airline callsign used for ATC. If this is an airline flight it should be combination of the airline callsign (e.g. '''KLM''' for KLM, or '''Springbok''' for South African Airways), and the flight number (e.g. '''KLM0605''', or '''Springbok0033''').&lt;br /&gt;
* '''&amp;lt;fltrules&amp;gt;''' Can be ''IFR'' or ''VFR''. This is required for use in ATC, but currently not used. This is likely to change, however.&lt;br /&gt;
* '''&amp;lt;departure&amp;gt;''' Definition of the departure airport. This section should contain the '''&amp;lt;port&amp;gt;''' and '''&amp;lt;time&amp;gt;''' keywords.&lt;br /&gt;
* '''&amp;lt;cruise-alt&amp;gt;''' Cruising altitude for this flight. This is a bit of a simplification from the real world, where aircraft usually don't stay at the same cruise altitude throughout the flight. This behavior will probably also change in future versions. &lt;br /&gt;
* '''&amp;lt;arrival&amp;gt;''' Same as '''&amp;lt;departure&amp;gt;''', but now defining the port of arrival.&lt;br /&gt;
* '''&amp;lt;repeat&amp;gt;''' Repeat period. This can be either the keyword ''WEEK'', or a number followed by ''Hr''. ''WEEK'' means that the whole schedule repeats itself on a weekly basis. ''Hr'' means that the whole schedule repeats after the number of hours specified directly before it (e.g. ''24Hr'' means that the schedule repeats after 24 hours).&lt;br /&gt;
* '''&amp;lt;port&amp;gt;''' This should be the international ICAO airport code. This keyword should be specified only within the '''&amp;lt;departure&amp;gt;''' or '''&amp;lt;arrival&amp;gt;''' sections. As far as I know, here it should still be in upper case, although the FlightGear command line currently also supports lower case ICAO codes. &lt;br /&gt;
* '''&amp;lt;time&amp;gt;''' Used to specify the '''&amp;lt;departure&amp;gt;''' or '''&amp;lt;arrival&amp;gt;''' time. The format of this string is ''hour:minute:second''. Notice that departure day is optional and is specifically intended to be used in combination with a weekly repeating schedule. When used in combination with other schedules, results may be unpredicatble. Times should be in UTC. Weekdays start at sunday (0) and end at saturday (6).&lt;br /&gt;
&lt;br /&gt;
== Putting it all together: Including a traffic file ==&lt;br /&gt;
&lt;br /&gt;
After creating a traffic file, all we need to do is make sure FlightGear knows how to use this. In the next few sections, I will explain how to do this. &lt;br /&gt;
&lt;br /&gt;
== fgtraffic.xml ==&lt;br /&gt;
&lt;br /&gt;
If you use a current version of FlightGear cvs HEAD/ OpenSceneGraph, activating traffic is easy: Just copy the traffic file into the same directory as where the AI aircraft file resides (for example: data/AI/Aircraft/737). If you use an older version, or if you use the PLIB based version of FlightGear, traffic can be activated according to the following instructions.&lt;br /&gt;
&lt;br /&gt;
At startup, FlightGear (older versions, or CVS PLIB) reads a file called '''fgtraffic.xml'''. In order to let FlightGear use our newly built traffic file, all we need to do is add a reference to the new file. Suppose we saved our file as PH-KCA.xml, all that would be required would be to add the following line: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;traffic include=&amp;quot;&amp;lt;path&amp;gt;/PH-KCA.xml&amp;quot;, &lt;br /&gt;
&lt;br /&gt;
where '''&amp;lt;path&amp;gt;''' is the directory where the file is located, relative to the main '''Traffic''' directory. For example, fgtraffic could look like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;trafficlist&amp;gt;&lt;br /&gt;
    &amp;lt;traffic include=&amp;quot;KLM/KLM.xml&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;traffic include=&amp;quot;UAL/UAL.xml&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;traffic include=&amp;quot;general/KSFO/c172.xml&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/trafficlist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Organizing by airline ==&lt;br /&gt;
&lt;br /&gt;
Although the example above works and is perfectly legal, I would prefer to see the individual files grouped together by airline and aircraft type. One way to do this is to organize files by airline and within each airline by aircraft type. For example, we could group all KLM flights together. Then we bundle these into a file called \verb|KLM.xml|, which would look like the following:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;trafficlist&amp;gt;&lt;br /&gt;
    &amp;lt;airline include=&amp;quot;KLM/MD11/MD11.xml&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/trafficlist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This file currently contains only one line, which includes the '''MD11.xml''' group, but more could be added easily.&lt;br /&gt;
&lt;br /&gt;
== Organizing by aircraft type ==&lt;br /&gt;
&lt;br /&gt;
Finally, the '''MD11.xml''' file could look like this. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;trafficlist&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCA.xml&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCB.xml&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCC.xml&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCD.xml&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCE.xml&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCF.xml&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCG.xml&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/trafficlist&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
One final note on the organization of the schedules is that I'm consisdering changing the organization. In order to make the whole system more ''plug-and-play'' compatible, I'd like to add in the ability to drop traffic files right in a dedicated AI directory that FLightGear would automatically scan for new traffic files. Until those ideas are finally fleshed out, the current organisation is probably likely to stay in place.&lt;br /&gt;
&lt;br /&gt;
== Ground networks: A technical perspective ==&lt;br /&gt;
&lt;br /&gt;
AI aircraft pickup taxiway information from an xml file that resides in &lt;br /&gt;
FlightGear's data directory. This is done on an airport by airport basis. the &lt;br /&gt;
precise location of this file is data/Airports/AI/[ICAO-id]/parking.xml. For &lt;br /&gt;
an example, see the groundnetwork for EHAM, which is found in &lt;br /&gt;
data/Airports/AI/EHAM/parking.xml. See the end of this message for a small &lt;br /&gt;
excerpt from this file.&lt;br /&gt;
&lt;br /&gt;
The first section of the file contains the parameters of the airport's parking &lt;br /&gt;
locations. This section is followed by a list of all the nodes in the ground &lt;br /&gt;
network, and the final section contains a list of segments or &amp;quot;arcs&amp;quot; as David &lt;br /&gt;
Luff called them initially, which basically describe which node is connected &lt;br /&gt;
to which other node. &lt;br /&gt;
&lt;br /&gt;
Each parking and ai node has a unique index number, which is used by the &lt;br /&gt;
segments to link the startup location and the taxiways together. Parkings and &lt;br /&gt;
AI nodes have the following parameters: &lt;br /&gt;
 - index (unique, consecutively numbered id)&lt;br /&gt;
 - lat (position in latitude)&lt;br /&gt;
 - lon (position in longitude)&lt;br /&gt;
 - name (name as found on airport charts: e.g. D23, or C1). &lt;br /&gt;
&lt;br /&gt;
Name is currently not used, Parking names will be used in future ATC, but AINode names will probably not be used except for some specific internal functions. &lt;br /&gt;
airlineCodes= list any (comma separated) ICAO airline codes here to specify &lt;br /&gt;
which airlines are allowed here. &lt;br /&gt;
-pushBack (used to determine whether departing aircraft can make left or right &lt;br /&gt;
turns after pushback&lt;br /&gt;
&lt;br /&gt;
In addition, each parking has a number of additional parameters:&lt;br /&gt;
* '''type:''' specifies what type of aircraft can use this parking bay: Valid values for this parameter are: ''cargo, gate'' (=usually intermediate to heavy airline traffic), ''ramp'' (=usually smaller regional jets and commuter aircraft), ''ga'' (=general aviation), and ''mil'' (=military). See the description of the '''&amp;lt;flighttype&amp;gt;''' parameter in the traffic pattern description above for a comparison.&lt;br /&gt;
* '''number:''' Currently unused, and likely to be removed.&lt;br /&gt;
* '''heading:''' the heading the aircraft parked in this bay.&lt;br /&gt;
*'''radius:''' a value used to determine whether the aircaft will fit in this bay: see also the description of the '''&amp;lt;radius&amp;gt;''' parameter in the traffic pattern description above. &lt;br /&gt;
*'''airlineCodes:''' a comma-separated list of ICAO airline codes used to indicate which airlines should park here. Leave this field blank if you want any aircraft to park here.&lt;br /&gt;
*'''pushBack:''' Currently Unused.&lt;br /&gt;
&lt;br /&gt;
Finally, the taxiway segments contain three parameters. &lt;br /&gt;
* '''begin''' (= the id of the parking or AINode this segment starts)&lt;br /&gt;
* '''end''' (= the id of the parking or AINode this segment ends)&lt;br /&gt;
* '''name''' (= name of the taxiway. Currently still unused)&lt;br /&gt;
&lt;br /&gt;
== Creating a ground network, a practical approach ==&lt;br /&gt;
&lt;br /&gt;
Okay that finishes the technical description of the parking file format. The &lt;br /&gt;
good news is that one probably doesn't need to know too much about the technical &lt;br /&gt;
side of the file structure to create a ground network. &lt;br /&gt;
&lt;br /&gt;
== TaxiDraw ==&lt;br /&gt;
&lt;br /&gt;
The CVS version of taxidraw (http://taxidraw.sourceforge.net/) has ground &lt;br /&gt;
network editing capabilities, and will in the short to intermediate term &lt;br /&gt;
probably be the best option to create a ground network for FlightGear.  &lt;br /&gt;
Notice that the ground editing facilities in TaxiDRaw are still rather new, and although the stability of this feature has increased dramatically over the last few weeks, there are still a few issues related to the undo function, so be prepared for a bit of frustration, and make regular backups. &lt;br /&gt;
&lt;br /&gt;
== Obtaining TaxiDraw ==&lt;br /&gt;
&lt;br /&gt;
I'm hoping that we can do a release of taxidraw fairly soon, so that the &lt;br /&gt;
groundnet editing capabilities will become easily accesible. Until that time, &lt;br /&gt;
linux users can try to check out a version of taxidraw from CVS by following &lt;br /&gt;
the instructions on http://taxidraw.sourceforge.net/#download&lt;br /&gt;
&lt;br /&gt;
Windows users can also do this either by using the free winCVS program or &lt;br /&gt;
using the free cygwin environment. &lt;br /&gt;
&lt;br /&gt;
== Getting good reference material ==&lt;br /&gt;
&lt;br /&gt;
The first step in preparation of creating a ground network consists of getting &lt;br /&gt;
some reference material. Ideally, You'd like to find a good satellite or arial image. If you can't find that, using a schematic diagram might also work. In most cases, using http://maps.google.com, and selecting the satellite imagery will work pretty well as reference. You can't save the google images, so importing them as a background image in taxidraw won't work. However, using these images as a reference and placing the parking notes at the approximate location indicated by the map will (at least for an initial version) give reasonable results.&lt;br /&gt;
&lt;br /&gt;
== Creating the network ==&lt;br /&gt;
&lt;br /&gt;
== Startup locations ==&lt;br /&gt;
&lt;br /&gt;
Once you have the reference material, it's time to start building the ground &lt;br /&gt;
network. I typically start by placing all the parkings first. There are two &lt;br /&gt;
ways to do this. 1) Using the mouse, choose [insert|Startup Location] from &lt;br /&gt;
the main menu. This will create a new startup location. Then left-click on it &lt;br /&gt;
and drag it to its desired location. 2) Move the mouse to the location where &lt;br /&gt;
you want to place the startup location and press the 's' key on the keyboard. &lt;br /&gt;
This places the startup location directly where the mouse is located. &lt;br /&gt;
&lt;br /&gt;
== AI Network Nodes ==&lt;br /&gt;
&lt;br /&gt;
Next you want to insert the AINodes, without connecting them yet. The &lt;br /&gt;
procedure is basically the same as placing the startup locations. Either &lt;br /&gt;
select [Insert| Add AI Network Node ] from the menu, or move the mouse to the &lt;br /&gt;
location where you want to place the node. Press the 'n' key to actually add &lt;br /&gt;
the node. &lt;br /&gt;
&lt;br /&gt;
== Connecting the nodes: Drawing the network ==&lt;br /&gt;
&lt;br /&gt;
Once you are finished adding all the nodes, and startup locations, it's time &lt;br /&gt;
to connect the nodes . This is the time to save your work and MAKE A BACKUP, &lt;br /&gt;
as the nodes connection code is not entirely stable yet. &lt;br /&gt;
&lt;br /&gt;
Connecting nodes can be done by switching the editor to arcing mode, by &lt;br /&gt;
pressing the 'm' key. The edit mode of taxidraw is indicated in the lower &lt;br /&gt;
right corner of the status bar. After pressing 'm' it should read ARC. If you &lt;br /&gt;
need to switch back to the standard edit mode press 'm' again. &lt;br /&gt;
&lt;br /&gt;
Making sure we are still in &amp;quot;ARC&amp;quot; mode, select the first node or parking  &lt;br /&gt;
you want to connect to the network by clicking on it. The node you have &lt;br /&gt;
clicked will be selected, and a red line with an arrow symbol will be drawn &lt;br /&gt;
between this node and the mouse cursor. Now, select the second node that you &lt;br /&gt;
wish to connect this node to. Click it with the mouse, and the red line will &lt;br /&gt;
now be drawn between the the two nodes. You have created a taxiroute. Now &lt;br /&gt;
repeat this process for all the nodes you want to connect.&lt;br /&gt;
&lt;br /&gt;
Note that taxi segments are unidirectional. If you want to create &lt;br /&gt;
bidirectional taxiways, make sure you not only connect node &amp;quot;1&amp;quot; to node &amp;quot;2&amp;quot; &lt;br /&gt;
but also to connect node &amp;quot;2&amp;quot; to node &amp;quot;1&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Second, notice also that once you have connected two nodes to each other, and &lt;br /&gt;
want to create a second taxiway that starts at the node that the previous &lt;br /&gt;
node ended, you have to select this node again, to become the first node in &lt;br /&gt;
the next taxiway.&lt;br /&gt;
&lt;br /&gt;
== Editing the startup location parameters ==&lt;br /&gt;
&lt;br /&gt;
Once you have created a ground network, you'll find that it probably won't &lt;br /&gt;
work yet in flightgear. The main reason for this is that the default gate &lt;br /&gt;
size is set to a fairly small size, and most aircraft won't fit into the &lt;br /&gt;
gate. Therefore, you'd need to edit the parking parameters. In addition, &lt;br /&gt;
you'd also need to give each parking a name, and a heading, and probably &lt;br /&gt;
airlines codes. Changing name, and heading can be done in taxidraw, by right &lt;br /&gt;
clicking on the startup location. This will bring up a dialog, in which you &lt;br /&gt;
can change latitude, longitude, heading, and name,  Once you're done editing, &lt;br /&gt;
click okay to accept the new values, or cancel to discard. &lt;br /&gt;
&lt;br /&gt;
Editing the starup location radius, type, airlineCodes, and pushBack &lt;br /&gt;
parameters is not yet possible in taxidraw. So changing these requires saving &lt;br /&gt;
the project and editing these using a texteditor. Once you save the project, this will be done in a file [filename].tpj (taxidraw project). The groundnetwork will be saved in a file named [filename]-groundnet.xml, which will be in the same folder as where you saved the project.&lt;br /&gt;
&lt;br /&gt;
You can edit the remaining parameters by loading this groundnet.xml file into &lt;br /&gt;
a text editor. Once you are done editing make sure you import these changes &lt;br /&gt;
into taxidraw immediately. Do this by going to [File| Import FlightGear AI &lt;br /&gt;
Network]. This will open a file selection dialog. Choose the file you just &lt;br /&gt;
edited and click okay. TaxiDraw will ask for confirmation to overwrite &lt;br /&gt;
existing ground network data and confirm this  by clicking on &amp;quot;yes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Copying the ground network into FlightGear's data directory ==&lt;br /&gt;
&lt;br /&gt;
Finally, once you have finished creating a groundnet work you can test it in &lt;br /&gt;
FlightGear. Create a directory in FlightGear's data/Airports/AI directory, &lt;br /&gt;
with the name of the ICAO code of your airport. For example &lt;br /&gt;
data/Airports/AI/EHAM. Next. locate the file [filename]-groundnetwork.xml and copy this to the directory you just created. Finally, rename the file you just copied to &amp;quot;parking.xml&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Testing the network ==&lt;br /&gt;
&lt;br /&gt;
Startup flightGear at the airport for which you have just created the network, &lt;br /&gt;
and make sure you have traffic for that aircraft. FlightGear will check the &lt;br /&gt;
network and report errors on the console. Aircraft than can't be placed at &lt;br /&gt;
one of the parking locations will be placed at a default location. &lt;br /&gt;
&lt;br /&gt;
If the FlightGear AI system can't find a valid route between startup location &lt;br /&gt;
and runway, it will list which nodes are not connected and exit.&lt;br /&gt;
&lt;br /&gt;
== Appendix: ==&lt;br /&gt;
&lt;br /&gt;
An below is an example section from data/Airports/AI/EHAM/parking.xml&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;groundnet&amp;gt;&lt;br /&gt;
  &amp;lt;parkinglist&amp;gt;&lt;br /&gt;
    &amp;lt;Parking index=&amp;quot;0&amp;quot;&lt;br /&gt;
         type=&amp;quot;cargo&amp;quot;&lt;br /&gt;
         name=&amp;quot;R02&amp;quot;&lt;br /&gt;
         number=&amp;quot;1&amp;quot;&lt;br /&gt;
         lat=&amp;quot;N52 17.664&amp;quot;&lt;br /&gt;
         lon=&amp;quot;E04 44.527&amp;quot;&lt;br /&gt;
         heading=&amp;quot;328.8&amp;quot;&lt;br /&gt;
         radius=&amp;quot;43&amp;quot;&lt;br /&gt;
         airlineCodes=&amp;quot;NONE&amp;quot;&lt;br /&gt;
         pushBack=&amp;quot;left&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Parking index=&amp;quot;1&amp;quot;&lt;br /&gt;
         type=&amp;quot;cargo&amp;quot;&lt;br /&gt;
         name=&amp;quot;R04&amp;quot;&lt;br /&gt;
         number=&amp;quot;1&amp;quot;&lt;br /&gt;
         lat=&amp;quot;N52 17.682&amp;quot;&lt;br /&gt;
         lon=&amp;quot;E04 44.572&amp;quot;&lt;br /&gt;
         heading=&amp;quot;328.8&amp;quot;&lt;br /&gt;
         radius=&amp;quot;43&amp;quot;&lt;br /&gt;
         airlineCodes=&amp;quot;NONE&amp;quot;&lt;br /&gt;
         pushBack=&amp;quot;left&amp;quot;/&amp;gt;&lt;br /&gt;
 [SNIP] &lt;br /&gt;
    &amp;lt;Parking index=&amp;quot;198&amp;quot;&lt;br /&gt;
         type=&amp;quot;gate&amp;quot;&lt;br /&gt;
         name=&amp;quot;J80&amp;quot;&lt;br /&gt;
         number=&amp;quot;1&amp;quot;&lt;br /&gt;
         lat=&amp;quot;N52 18.678&amp;quot;&lt;br /&gt;
         lon=&amp;quot;E04 44.659&amp;quot;&lt;br /&gt;
         heading=&amp;quot;0&amp;quot;&lt;br /&gt;
         radius=&amp;quot;15&amp;quot;&lt;br /&gt;
         airlineCodes=&amp;quot;NONE&amp;quot;&lt;br /&gt;
         pushBack=&amp;quot;left&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/parkinglist&amp;gt;&lt;br /&gt;
  &amp;lt;TaxiNodes&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;199&amp;quot; lat=&amp;quot;N52 20.778&amp;quot; lon=&amp;quot;E04 42.626&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;200&amp;quot; lat=&amp;quot;N52 20.622&amp;quot; lon=&amp;quot;E04 42.771&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;201&amp;quot; lat=&amp;quot;N52 20.478&amp;quot; lon=&amp;quot;E04 42.592&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;202&amp;quot; lat=&amp;quot;N52 20.394&amp;quot; lon=&amp;quot;E04 42.685&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;203&amp;quot; lat=&amp;quot;N52 20.406&amp;quot; lon=&amp;quot;E04 42.754&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;204&amp;quot; lat=&amp;quot;N52 20.310&amp;quot; lon=&amp;quot;E04 42.740&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;205&amp;quot; lat=&amp;quot;N52 20.148&amp;quot; lon=&amp;quot;E04 42.565&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
 [SNIP]...&lt;br /&gt;
    &amp;lt;node index=&amp;quot;597&amp;quot; lat=&amp;quot;N52 18.666&amp;quot; lon=&amp;quot;E04 45.372&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;598&amp;quot; lat=&amp;quot;N52 18.678&amp;quot; lon=&amp;quot;E04 45.358&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;599&amp;quot; lat=&amp;quot;N52 18.678&amp;quot; lon=&amp;quot;E04 45.377&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/TaxiNodes&amp;gt;&lt;br /&gt;
  &amp;lt;TaxiWaySegments&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;237&amp;quot; end=&amp;quot;234&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;234&amp;quot; end=&amp;quot;239&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;239&amp;quot; end=&amp;quot;242&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;242&amp;quot; end=&amp;quot;245&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;369&amp;quot; end=&amp;quot;374&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;374&amp;quot; end=&amp;quot;369&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;370&amp;quot; end=&amp;quot;373&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;373&amp;quot; end=&amp;quot;370&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/TaxiWaySegments&amp;gt;&lt;br /&gt;
 &amp;lt;/groundnet&amp;gt;&lt;/div&gt;</summary>
		<author><name>Deskin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=AI_Traffic&amp;diff=3527</id>
		<title>AI Traffic</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=AI_Traffic&amp;diff=3527"/>
		<updated>2007-05-28T01:43:40Z</updated>

		<summary type="html">&lt;p&gt;Deskin: /* Organizing by aircraft type */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Interactive Traffic in FlightGear ==&lt;br /&gt;
&lt;br /&gt;
Starting with version 0.9.5, FlightGear has an interactive traffic system that is based on the AIModels subsystem, and which is currently under active development. This page aims to provide the required documentation needed to set up some traffic.&lt;br /&gt;
&lt;br /&gt;
In essence, setting-up the AI controlled traffic system involves three steps: &lt;br /&gt;
1. Create Traffic files, 2) Download and install the required AI Aircraft, and 3)Build ground networks for the Airports containing traffic.&lt;br /&gt;
&lt;br /&gt;
== Building Traffic Files ==&lt;br /&gt;
&lt;br /&gt;
Traffic patterns are stored in data files in extended markup language (.xml) format. Depending on version, these files are either stored in a sudirectory called '''Traffic''' in FlightGear's main data directory, hereafter referred to with it's technical name:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
${FGROOT}/Traffic&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or in the AI Aircraft's directory. Current FlightGear CVS (as of late December 2007) has its traffic files in the aircraft directories (e.g., in data/AI/Aircraft/737/, and older versions as well as the current PLIB built version of FlightGear have this file in &amp;lt;nowiki&amp;gt;${FGROOT}/Traffic&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
Each traffic pattern is built around two entities: Aircraft and Flights. Before discussing the details, lets start by exploring these two concepts a little further.&lt;br /&gt;
&lt;br /&gt;
== Some Details: TrafficManager, Aircraft, and Flights ==&lt;br /&gt;
&lt;br /&gt;
As in real life, AI traffic in FlightGear is centered around aircraft. In real life, a commercial airliner is put to use by operating on a series of scheduled flights, on a daily or weekly basis. Take for example the long haul routes that are flown by McDonnel Douglas MD11 aircraft. For instance, the MD11's operated by KLM  fly regularly between Amsterdam and various distant destinations, such as San Fransisco or Minneapolis in the United States, Vancouver or Montreal in Canada, Accra and Lagos in Africa, or New Delhi in India. Some of these routes are too long to complete a return flight in one day, such as the trip between Amsterdam and San Fransisco, which is basically an 11-hour flight one-way. So it would take 22 hours of just the flying time, and at least an additional two hour turn-around time at each airport. Therefore, in real-life, it is necessary to operate this aircraft on a series of routes, because other routes are  considerably shorter than the trip to San Fransisco. Therefore, the time lost on one route can be gained on another, averaging out to approximately one round-trip a day. &lt;br /&gt;
&lt;br /&gt;
In FlightGear, we wouldn't have to be so strictly considerate about the turnaround times as a real-world airline would, but in the not-so distant future, we also want to be able to see realisticly crowded terminals at our simulated airports, so considering the turnaround time in the schedules is a good thing. Therefore, most of the long-haul aircraft will need to be scheduled to fly more than one route. Hence, each AI aircraft has one or more routes assigned to it, which repeat on a weekly, daily, or hourly basis. &lt;br /&gt;
&lt;br /&gt;
The FlightGear traffic manager system, periodically checks the approximate position of a each aircraft in its database. This database is constructed on the basis of a routing table assigned to each aircraft. As in the real-world, when a route ends at one airport the next one has to start from the same airport as well. An important difference between the real world and the FlightGear traffic patterns is that while in the real world aircraft schedules are frequently rotated the FlightGear routes remain the same, unless the database is updated. Real aircraft require mainanance, and are therefore taken out of service periodically, FlightGear aircraft have the advantage that they do not require maintanance in this respect.&lt;br /&gt;
&lt;br /&gt;
== An example of a traffic file ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;trafficlist&amp;gt;&lt;br /&gt;
    &amp;lt;aircraft&amp;gt;&lt;br /&gt;
        &amp;lt;model&amp;gt;Aircraft/MD11/Models/KLMmd11-ai.xml&amp;lt;/model&amp;gt;&lt;br /&gt;
        &amp;lt;livery&amp;gt;KLM&amp;lt;/livery&amp;gt;&lt;br /&gt;
        &amp;lt;airline&amp;gt;KLM&amp;lt;/airline&amp;gt;&lt;br /&gt;
        &amp;lt;actype&amp;gt;MD11&amp;lt;/actype&amp;gt;&lt;br /&gt;
        &amp;lt;offset&amp;gt;19&amp;lt;/offset&amp;gt;&lt;br /&gt;
        &amp;lt;radius&amp;gt;39&amp;lt;/radius&amp;gt;&lt;br /&gt;
        &amp;lt;flighttype&amp;gt;gate&amp;lt;/flighttype&amp;gt;&lt;br /&gt;
        &amp;lt;performance-class&amp;gt;jet_transport&amp;lt;/performance-class&amp;gt;&lt;br /&gt;
        &amp;lt;registration&amp;gt;PH-KCA&amp;lt;/registration&amp;gt;&lt;br /&gt;
        &amp;lt;heavy&amp;gt;true&amp;lt;/heavy&amp;gt;&lt;br /&gt;
        &amp;lt;!-- Day one: Amsterdam to San Fransisco, CA, USA --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0605&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;0/09:45:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;330&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;KSFO&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;0/20:55:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
        &amp;lt;!-- Return Flight: Arrive the next day --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0606&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;KSFO&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;0/23:00:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;1/09:35:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
        &amp;lt;!-- Day two: Amsterdam to Accra, Ghana --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0589&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;1/12:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;330&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;DGAA&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;1/19:00:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
        &amp;lt;!-- Day two Return Flight: Arrive the next Day --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0590&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;DGAA&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;1/21:15:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;2/04:10:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
         &amp;lt;!-- Day three: Amsterdam to Vancouver, BC, Canada --&amp;gt;&lt;br /&gt;
         &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0681&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;2/08:25:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;330&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;CYVR&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;2/18:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
         &amp;lt;!-- Day three: return Flight: Arrive the next day --&amp;gt;&lt;br /&gt;
         &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0682&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;CYVR&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;2/20:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;330&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;3/05:40:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
         &amp;lt;!-- Day four: Amsterdam to Delhi, India --&amp;gt;&lt;br /&gt;
         &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0871&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;3/09:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;VIDP&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;3/17:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;    &lt;br /&gt;
         &amp;lt;!-- Day four: Return Flight: Arrive the next day --&amp;gt;&lt;br /&gt;
         &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0872&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;VIDP&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;3/19:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;350&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;4/04:00:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
         &amp;lt;!-- Day five: Amsterdam to Lagos, Nigeria --&amp;gt;&lt;br /&gt;
         &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0587&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;4/10:30:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;DNMM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;4/16:55:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;  &lt;br /&gt;
        &amp;lt;!-- Day five: Return Flight, Arrive the next day --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0588&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;DNMM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;4/21:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;5/06:10:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;         &lt;br /&gt;
        &amp;lt;!-- Day Six: Amsterdam to Montreal, Quebec, Canada --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0671&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;5/12:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;CYUL&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;5/19:50:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;     &lt;br /&gt;
        &amp;lt;!-- Day Six: Return Flight. Arrive the next day --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0672&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;CYUL&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;5/22:00:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;6/04:45:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;    &lt;br /&gt;
       &amp;lt;!-- Day Seven: Minneapolis/St. Paul, MN, USA --&amp;gt;&lt;br /&gt;
       &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0667&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;6/12:05:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;330&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;KMSP&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;6/20:50:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
       &amp;lt;!-- Day Seven: Return Flight, Arrive the next day. --&amp;gt;&lt;br /&gt;
       &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0668&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;KMSP&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;6/23:00:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;0/07:15:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;                &lt;br /&gt;
    &amp;lt;/aircraft&amp;gt;&lt;br /&gt;
 &amp;lt;/trafficlist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disecting the traffic file ==&lt;br /&gt;
&lt;br /&gt;
Here I will discuss the general structure of a traffic file in more detail. As discussed in the introduction, the traffic patterns are centered around aircraft and flights. Therefore, a minimal traffic file will consist of two sections: the aircraft definition and the flights section. In the next two sections, I will discuss each of these sections. &lt;br /&gt;
&lt;br /&gt;
== General Layout ==&lt;br /&gt;
&lt;br /&gt;
The general layout of each file should look like the above example.&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;trafficlist&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
 &amp;lt;/trafficlist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The general layout of each file should look like the above example. The first line contains a generic xml header, which is followed on the second line with a '''&amp;lt;trafficlist&amp;gt;''' statement. Also, the last line in the file should close off the trafficlist section using the '''&amp;lt;/trafficlist&amp;gt;''' statement. As will be illustrated below, between these two statements can be one or more aircraft definitions.&lt;br /&gt;
&lt;br /&gt;
== Defining the aircraft ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;trafficlist&amp;gt;&lt;br /&gt;
    &amp;lt;aircraft&amp;gt;&lt;br /&gt;
       &amp;lt;model&amp;gt;Aircraft/MD11/Models/KLMmd11-ai.xml&amp;lt;/model&amp;gt;&lt;br /&gt;
       &amp;lt;livery&amp;gt;KLM&amp;lt;/livery&amp;gt;&lt;br /&gt;
       &amp;lt;airline&amp;gt;KLM&amp;lt;/airline&amp;gt;&lt;br /&gt;
       &amp;lt;actype&amp;gt;MD11&amp;lt;/actype&amp;gt;&lt;br /&gt;
       &amp;lt;offset&amp;gt;19&amp;lt;/offset&amp;gt;&lt;br /&gt;
       &amp;lt;radius&amp;gt;39&amp;lt;/radius&amp;gt;&lt;br /&gt;
       &amp;lt;flighttype&amp;gt;gate&amp;lt;/flighttype&amp;gt;&lt;br /&gt;
       &amp;lt;performance-class&amp;gt;jet_transport&amp;lt;/performance-class&amp;gt;&lt;br /&gt;
       &amp;lt;registration&amp;gt;PH-KCA&amp;lt;/registration&amp;gt;&lt;br /&gt;
       &amp;lt;flight&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;/aircraft&amp;gt;&lt;br /&gt;
 &amp;lt;/trafficlist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The first lines inside the '''&amp;lt;aircraft&amp;gt;''' clause define the aircraft's performance characteristics.&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;model&amp;gt;''' Here is a path specified to the 3D model that should be used in FlightGear.&lt;br /&gt;
* '''&amp;lt;livery&amp;gt;''' This line is currently unused, and will likely remain unused. The original idea was to combine this with the '''&amp;lt;model&amp;gt;''' line (see above) to load a specific combination of aircraftype and paint scheme, but I abandoned that idea, because it didn't turn out to be very combatible with the existing FlightGear model loading code. &lt;br /&gt;
* '''&amp;lt;airline&amp;gt;''' This line refers to the airline operating the aircraft. This information is currently used by FlightGear to handle gate/parking assignments. Use the official 3-letter ICAO airline code here, in case of commercial traffic. This keyword is unlikely to be used for general aviation and military traffic. &lt;br /&gt;
* '''&amp;lt;actype&amp;gt;''' A description of the aircraft type reserved for future use in ATC.&lt;br /&gt;
* '''&amp;lt;offset&amp;gt;''' Ground offset of the 3D model. Not all aircraft 3D models are build using the same convention. Use this parameter to align the wheels with the ground. Notice that this parameter will probably become obsolete in the near future, because model view point references can also be done in the xml file that the '''&amp;lt;model&amp;gt;''' keyword refers to.&lt;br /&gt;
* '''&amp;lt;radius&amp;gt;''' An estimate of the aircraft's size. This is mainly used at airports for gate assignments.&lt;br /&gt;
* '''&amp;lt;flighttype&amp;gt;''' This line is also used for gate assignments and should be one of the following:&lt;br /&gt;
    '''ga''' (general aviation), &lt;br /&gt;
    '''cargo''' (cargo)&lt;br /&gt;
    '''gate''' (commercial passenger traffic) &lt;br /&gt;
In addtion, it is expected that a '''mil''' value will be valid sometime soon. In the near future, this keyword will also be used for runway assignments, so that general aviation, commercial, and military traffic will use different runways if that is part of the airport's operational procedures.&lt;br /&gt;
* '''&amp;lt;performance-class&amp;gt;''' This line is used to determine the performance characteristics of AI aircraft. This should match one of the performance classes that are predefined in FlightGear. Currently, the following performance classes are supported:&lt;br /&gt;
 &lt;br /&gt;
 '''light_aircraft''' (prop driven single or twin),&lt;br /&gt;
 '''ww2_fighter'''    (world war two fighter),&lt;br /&gt;
 '''jet_transport'''  (modern commercial jet),&lt;br /&gt;
 '''jet_fighter'''    (modern fighter aircraft)&lt;br /&gt;
 '''tanker'''         (tanker aircraft), or.&lt;br /&gt;
 '''ufo'''            (allows extreme accel/decel capabilities).&lt;br /&gt;
*'''&amp;lt;registration&amp;gt;''' The aircraft's tail number. Future versions of FlightGear will use this registration in ATC for general aviation traffic. For commercial traffic the registration number will likely remain unused.&lt;br /&gt;
&lt;br /&gt;
== Defining a flight ==&lt;br /&gt;
&lt;br /&gt;
The next series of lines within the '''&amp;lt;aircraft&amp;gt;''' section define the flights. Again, each flight is defined between the '''&amp;lt;flight&amp;gt;''' and '''&amp;lt;/flight&amp;gt;''' statements. For example, let's have a look at the first two &lt;br /&gt;
flights specified in our PH-KCA example. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- Day one: Amsterdam to San Fransisco, CA, USA --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0605&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;0/09:45:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;330&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;KSFO&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;0/20:55:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt; &lt;br /&gt;
       &amp;lt;/flight&amp;gt; &lt;br /&gt;
        &amp;lt;!-- Return Flight: Arrive the next day --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0606&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;KSFO&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;0/23:00:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;1/09:35:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The '''&amp;lt;flights&amp;gt;''' section is slightly more complex than the aircraft definition itself, because it has a few nested levels. The following keywords should be specified:&lt;br /&gt;
* '''&amp;lt;flight&amp;gt;''' All the relevant parameter should be specified between the '''&amp;lt;flight&amp;gt;&amp;lt;/flight&amp;gt;''' keywords.&lt;br /&gt;
* '''&amp;lt;callsign&amp;gt;''' The airline callsign used for ATC. If this is an airline flight it should be combination of the airline callsign (e.g. '''KLM''' for KLM, or '''Springbok''' for South African Airways), and the flight number (e.g. '''KLM0605''', or '''Springbok0033''').&lt;br /&gt;
* '''&amp;lt;fltrules&amp;gt;''' Can be ''IFR'' or ''VFR''. This is required for use in ATC, but currently not used. This is likely to change, however.&lt;br /&gt;
* '''&amp;lt;departure&amp;gt;''' Definition of the departure airport. This section should contain the '''&amp;lt;port&amp;gt;''' and '''&amp;lt;time&amp;gt;''' keywords.&lt;br /&gt;
* '''&amp;lt;cruise-alt&amp;gt;''' Cruising altitude for this flight. This is a bit of a simplification from the real world, where aircraft usually don't stay at the same cruise altitude throughout the flight. This behavior will probably also change in future versions. &lt;br /&gt;
* '''&amp;lt;arrival&amp;gt;''' Same as '''&amp;lt;departure&amp;gt;''', but now defining the port of arrival.&lt;br /&gt;
* '''&amp;lt;repeat&amp;gt;''' Repeat period. This can be either the keyword ''WEEK'', or a number followed by ''Hr''. ''WEEK'' means that the whole schedule repeats itself on a weekly basis. ''Hr'' means that the whole schedule repeats after the number of hours specified directly before it (e.g. ''24Hr'' means that the schedule repeats after 24 hours).&lt;br /&gt;
* '''&amp;lt;port&amp;gt;''' This should be the international ICAO airport code. This keyword should be specified only within the '''&amp;lt;departure&amp;gt;''' or '''&amp;lt;arrival&amp;gt;''' sections. As far as I know, here it should still be in upper case, although the FlightGear command line currently also supports lower case ICAO codes. &lt;br /&gt;
* '''&amp;lt;time&amp;gt;''' Used to specify the '''&amp;lt;departure&amp;gt;''' or '''&amp;lt;arrival&amp;gt;''' time. The format of this string is ''hour:minute:second''. Notice that departure day is optional and is specifically intended to be used in combination with a weekly repeating schedule. When used in combination with other schedules, results may be unpredicatble. Times should be in UTC. Weekdays start at sunday (0) and end at saturday (6).&lt;br /&gt;
&lt;br /&gt;
== Putting it all together: Including a traffic file ==&lt;br /&gt;
&lt;br /&gt;
After creating a traffic file, all we need to do is make sure FlightGear knows how to use this. In the next few sections, I will explain how to do this. &lt;br /&gt;
&lt;br /&gt;
== fgtraffic.xml ==&lt;br /&gt;
&lt;br /&gt;
If you use a current version of FlightGear cvs HEAD/ OpenSceneGraph, activating traffic is easy: Just copy the traffic file into the same directory as where the AI aircraft file resides (for example: data/AI/Aircraft/737). If you use an older version, or if you use the PLIB based version of FlightGear, traffic can be activated according to the following instructions.&lt;br /&gt;
&lt;br /&gt;
At startup, FlightGear (older versions, or CVS PLIB) reads a file called '''fgtraffic.xml'''. In order to let FlightGear use our newly built traffic file, all we need to do is add a reference to the new file. Suppose we saved our file as PH-KCA.xml, all that would be required would be to add the following line: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;traffic include=&amp;quot;&amp;lt;path&amp;gt;/PH-KCA.xml&amp;quot;, &lt;br /&gt;
&lt;br /&gt;
where '''&amp;lt;path&amp;gt;''' is the directory where the file is located, relative to the main '''Traffic''' directory. For example, fgtraffic could look like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;trafficlist&amp;gt;&lt;br /&gt;
    &amp;lt;traffic include=&amp;quot;KLM/KLM.xml&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;traffic include=&amp;quot;UAL/UAL.xml&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;traffic include=&amp;quot;general/KSFO/c172.xml&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/trafficlist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Organizing by airline ==&lt;br /&gt;
&lt;br /&gt;
Although the example above works and is perfectly legal, I would prefer to see the individual files grouped together by airline and aircraft type. One way to do this is to organize files by airline and within each airline by aircraft type. For example, we could group all KLM flights together. Then we bundle these into a file called \verb|KLM.xml|, which would look like the following:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;trafficlist&amp;gt;&lt;br /&gt;
    &amp;lt;airline include=&amp;quot;KLM/MD11/MD11.xml&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/trafficlist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This file currently contains only one line, which includes the '''MD11.xml''' group, but more could be added easily.&lt;br /&gt;
&lt;br /&gt;
== Organizing by aircraft type ==&lt;br /&gt;
&lt;br /&gt;
Finally, the '''MD11.xml''' file could look like this. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;trafficlist&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCA.xml&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCB.xml&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCC.xml&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCD.xml&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCE.xml&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCF.xml&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCG.xml&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/trafficlist&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
One final note on the organization of the schedules is that I'm consisdering changing the organization. In order to make the whole system more ''plug-and-play'' compatible, I'd like to add in the ability to drop traffic files right in a dedicated AI directory that FLightGear would automatically scan for new traffic files. Until those ideas are finally fleshed out, the current organisation is probably likely to stay in place.&lt;br /&gt;
&lt;br /&gt;
== Ground networks: A technical perspective ==&lt;br /&gt;
&lt;br /&gt;
AI aircraft pickup taxiway information from an xml file that resides in &lt;br /&gt;
FlightGear's data directory. This is done on an airport by airport basis. the &lt;br /&gt;
precise location of this file is data/Airports/AI/[ICAO-id]/parking.xml. For &lt;br /&gt;
an example, see the groundnetwork for EHAM, which is found in &lt;br /&gt;
data/Airports/AI/EHAM/parking.xml. See the end of this message for a small &lt;br /&gt;
excerpt from this file.&lt;br /&gt;
&lt;br /&gt;
The first section of the file contains the parameters of the airport's parking &lt;br /&gt;
locations. This section is followed by a list of all the nodes in the ground &lt;br /&gt;
network, and the final section contains a list of segments or &amp;quot;arcs&amp;quot; as David &lt;br /&gt;
Luff called them initially, which basically describe which node is connected &lt;br /&gt;
to which other node. &lt;br /&gt;
&lt;br /&gt;
Each parking and ai node has a unique index number, which is used by the &lt;br /&gt;
segments to link the startup location and the taxiways together. Parkings and &lt;br /&gt;
AI nodes have the following parameters: &lt;br /&gt;
 - index (unique, consecutively numbered id)&lt;br /&gt;
 - lat (position in latitude)&lt;br /&gt;
 - lon (position in longitude)&lt;br /&gt;
 - name (name as found on airport charts: e.g. D23, or C1). &lt;br /&gt;
&lt;br /&gt;
Name is currently not used, Parking names will be used in future ATC, but AINode names will probably not be used except for some specific internal functions. &lt;br /&gt;
airlineCodes= list any (comma separated) ICAO airline codes here to specify &lt;br /&gt;
which airlines are allowed here. &lt;br /&gt;
-pushBack (used to determine whether departing aircraft can make left or right &lt;br /&gt;
turns after pushback&lt;br /&gt;
&lt;br /&gt;
In addition, each parking has a number of additional parameters:&lt;br /&gt;
* '''type:''' specifies what type of aircraft can use this parking bay: Valid values for this parameter are: ''cargo, gate'' (=usually intermediate to heavy airline traffic), ''ramp'' (=usually smaller regional jets and commuter aircraft), ''ga'' (=general aviation), and ''mil'' (=military). See the description of the '''&amp;lt;flighttype&amp;gt;''' parameter in the traffic pattern description above for a comparison.&lt;br /&gt;
* '''number:''' Currently unused, and likely to be removed.&lt;br /&gt;
* '''heading:''' the heading the aircraft parked in this bay.&lt;br /&gt;
*'''radius:''' a value used to determine whether the aircaft will fit in this bay: see also the description of the '''&amp;lt;radius&amp;gt;''' parameter in the traffic pattern description above. &lt;br /&gt;
*'''airlineCodes:''' a comma-separated list of ICAO airline codes used to indicate which airlines should park here. Leave this field blank if you want any aircraft to park here.&lt;br /&gt;
*'''pushBack:''' Currently Unused.&lt;br /&gt;
&lt;br /&gt;
Finally, the taxiway segments contain three parameters. &lt;br /&gt;
* '''begin''' (= the id of the parking or AINode this segment starts)&lt;br /&gt;
* '''end''' (= the id of the parking or AINode this segment ends)&lt;br /&gt;
* '''name''' (= name of the taxiway. Currently still unused)&lt;br /&gt;
&lt;br /&gt;
== Creating a ground network, a practical approach ==&lt;br /&gt;
&lt;br /&gt;
Okay that finishes the technical description of the parking file format. The &lt;br /&gt;
good news is that one probably doesn't need to know too much about the technical &lt;br /&gt;
side of the file structure to create a ground network. &lt;br /&gt;
&lt;br /&gt;
== TaxiDraw ==&lt;br /&gt;
&lt;br /&gt;
The CVS version of taxidraw (http://taxidraw.sourceforge.net/) has ground &lt;br /&gt;
network editing capabilities, and will in the short to intermediate term &lt;br /&gt;
probably be the best option to create a ground network for FlightGear.  &lt;br /&gt;
Notice that the ground editing facilities in TaxiDRaw are still rather new, and although the stability of this feature has increased dramatically over the last few weeks, there are still a few issues related to the undo function, so be prepared for a bit of frustration, and make regular backups. &lt;br /&gt;
&lt;br /&gt;
== Obtaining TaxiDraw ==&lt;br /&gt;
&lt;br /&gt;
I'm hoping that we can do a release of taxidraw fairly soon, so that the &lt;br /&gt;
groundnet editing capabilities will become easily accesible. Until that time, &lt;br /&gt;
linux users can try to check out a version of taxidraw from CVS by following &lt;br /&gt;
the instructions on http://taxidraw.sourceforge.net/#download&lt;br /&gt;
&lt;br /&gt;
Windows users can also do this either by using the free winCVS program or &lt;br /&gt;
using the free cygwin environment. &lt;br /&gt;
&lt;br /&gt;
== Getting good reference material ==&lt;br /&gt;
&lt;br /&gt;
The first step in preparation of creating a ground network consists of getting &lt;br /&gt;
some reference material. Ideally, You'd like to find a good satellite or arial image. If you can't find that, using a schematic diagram might also work. In most cases, using http://maps.google.com, and selecting the satellite imagery will work pretty well as reference. You can't save the google images, so importing them as a background image in taxidraw won't work. However, using these images as a reference and placing the parking notes at the approximate location indicated by the map will (at least for an initial version) give reasonable results.&lt;br /&gt;
&lt;br /&gt;
== Creating the network ==&lt;br /&gt;
&lt;br /&gt;
== Startup locations ==&lt;br /&gt;
&lt;br /&gt;
Once you have the reference material, it's time to start building the ground &lt;br /&gt;
network. I typically start by placing all the parkings first. There are two &lt;br /&gt;
ways to do this. 1) Using the mouse, choose [insert|Startup Location] from &lt;br /&gt;
the main menu. This will create a new startup location. Then left-click on it &lt;br /&gt;
and drag it to its desired location. 2) Move the mouse to the location where &lt;br /&gt;
you want to place the startup location and press the 's' key on the keyboard. &lt;br /&gt;
This places the startup location directly where the mouse is located. &lt;br /&gt;
&lt;br /&gt;
== AI Network Nodes ==&lt;br /&gt;
&lt;br /&gt;
Next you want to insert the AINodes, without connecting them yet. The &lt;br /&gt;
procedure is basically the same as placing the startup locations. Either &lt;br /&gt;
select [Insert| Add AI Network Node ] from the menu, or move the mouse to the &lt;br /&gt;
location where you want to place the node. Press the 'n' key to actually add &lt;br /&gt;
the node. &lt;br /&gt;
&lt;br /&gt;
== Connecting the nodes: Drawing the network ==&lt;br /&gt;
&lt;br /&gt;
Once you are finished adding all the nodes, and startup locations, it's time &lt;br /&gt;
to connect the nodes . This is the time to save your work and MAKE A BACKUP, &lt;br /&gt;
as the nodes connection code is not entirely stable yet. &lt;br /&gt;
&lt;br /&gt;
Connecting nodes can be done by switching the editor to arcing mode, by &lt;br /&gt;
pressing the 'm' key. The edit mode of taxidraw is indicated in the lower &lt;br /&gt;
right corner of the status bar. After pressing 'm' it should read ARC. If you &lt;br /&gt;
need to switch back to the standard edit mode press 'm' again. &lt;br /&gt;
&lt;br /&gt;
Making sure we are still in &amp;quot;ARC&amp;quot; mode, select the first node or parking  &lt;br /&gt;
you want to connect to the network by clicking on it. The node you have &lt;br /&gt;
clicked will be selected, and a red line with an arrow symbol will be drawn &lt;br /&gt;
between this node and the mouse cursor. Now, select the second node that you &lt;br /&gt;
wish to connect this node to. Click it with the mouse, and the red line will &lt;br /&gt;
now be drawn between the the two nodes. You have created a taxiroute. Now &lt;br /&gt;
repeat this process for all the nodes you want to connect.&lt;br /&gt;
&lt;br /&gt;
Note that taxi segments are unidirectional. If you want to create &lt;br /&gt;
bidirectional taxiways, make sure you not only connect node &amp;quot;1&amp;quot; to node &amp;quot;2&amp;quot; &lt;br /&gt;
but also to connect node &amp;quot;2&amp;quot; to node &amp;quot;1&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Second, notice also that once you have connected two nodes to each other, and &lt;br /&gt;
want to create a second taxiway that starts at the node that the previous &lt;br /&gt;
node ended, you have to select this node again, to become the first node in &lt;br /&gt;
the next taxiway.&lt;br /&gt;
&lt;br /&gt;
== Editing the startup location parameters ==&lt;br /&gt;
&lt;br /&gt;
Once you have created a ground network, you'll find that it probably won't &lt;br /&gt;
work yet in flightgear. The main reason for this is that the default gate &lt;br /&gt;
size is set to a fairly small size, and most aircraft won't fit into the &lt;br /&gt;
gate. Therefore, you'd need to edit the parking parameters. In addition, &lt;br /&gt;
you'd also need to give each parking a name, and a heading, and probably &lt;br /&gt;
airlines codes. Changing name, and heading can be done in taxidraw, by right &lt;br /&gt;
clicking on the startup location. This will bring up a dialog, in which you &lt;br /&gt;
can change latitude, longitude, heading, and name,  Once you're done editing, &lt;br /&gt;
click okay to accept the new values, or cancel to discard. &lt;br /&gt;
&lt;br /&gt;
Editing the starup location radius, type, airlineCodes, and pushBack &lt;br /&gt;
parameters is not yet possible in taxidraw. So changing these requires saving &lt;br /&gt;
the project and editing these using a texteditor. Once you save the project, this will be done in a file [filename].tpj (taxidraw project). The groundnetwork will be saved in a file named [filename]-groundnet.xml, which will be in the same folder as where you saved the project.&lt;br /&gt;
&lt;br /&gt;
You can edit the remaining parameters by loading this groundnet.xml file into &lt;br /&gt;
a text editor. Once you are done editing make sure you import these changes &lt;br /&gt;
into taxidraw immediately. Do this by going to [File| Import FlightGear AI &lt;br /&gt;
Network]. This will open a file selection dialog. Choose the file you just &lt;br /&gt;
edited and click okay. TaxiDraw will ask for confirmation to overwrite &lt;br /&gt;
existing ground network data and confirm this  by clicking on &amp;quot;yes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Copying the ground network into FlightGear's data directory ==&lt;br /&gt;
&lt;br /&gt;
Finally, once you have finished creating a groundnet work you can test it in &lt;br /&gt;
FlightGear. Create a directory in FlightGear's data/Airports/AI directory, &lt;br /&gt;
with the name of the ICAO code of your airport. For example &lt;br /&gt;
data/Airports/AI/EHAM. Next. locate the file [filename]-groundnetwork.xml and copy this to the directory you just created. Finally, rename the file you just copied to &amp;quot;parking.xml&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Testing the network ==&lt;br /&gt;
&lt;br /&gt;
Startup flightGear at the airport for wich you have just created the network, &lt;br /&gt;
and make sure you have traffic for that aircraft. FlightGear will check the &lt;br /&gt;
network and report errors on the console. Aircraft than can't be placed at &lt;br /&gt;
one of the parking locations will be placed at a default location. &lt;br /&gt;
&lt;br /&gt;
If the FlightGear AI system can't find a valid route between startup location &lt;br /&gt;
and runway, it will list which nodes are not connected and exit. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Appendix: ==&lt;br /&gt;
&lt;br /&gt;
An below is an example section from data/Airports/AI/EHAM/parking.xml&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;groundnet&amp;gt;&lt;br /&gt;
  &amp;lt;parkinglist&amp;gt;&lt;br /&gt;
    &amp;lt;Parking index=&amp;quot;0&amp;quot;&lt;br /&gt;
         type=&amp;quot;cargo&amp;quot;&lt;br /&gt;
         name=&amp;quot;R02&amp;quot;&lt;br /&gt;
         number=&amp;quot;1&amp;quot;&lt;br /&gt;
         lat=&amp;quot;N52 17.664&amp;quot;&lt;br /&gt;
         lon=&amp;quot;E04 44.527&amp;quot;&lt;br /&gt;
         heading=&amp;quot;328.8&amp;quot;&lt;br /&gt;
         radius=&amp;quot;43&amp;quot;&lt;br /&gt;
         airlineCodes=&amp;quot;NONE&amp;quot;&lt;br /&gt;
         pushBack=&amp;quot;left&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Parking index=&amp;quot;1&amp;quot;&lt;br /&gt;
         type=&amp;quot;cargo&amp;quot;&lt;br /&gt;
         name=&amp;quot;R04&amp;quot;&lt;br /&gt;
         number=&amp;quot;1&amp;quot;&lt;br /&gt;
         lat=&amp;quot;N52 17.682&amp;quot;&lt;br /&gt;
         lon=&amp;quot;E04 44.572&amp;quot;&lt;br /&gt;
         heading=&amp;quot;328.8&amp;quot;&lt;br /&gt;
         radius=&amp;quot;43&amp;quot;&lt;br /&gt;
         airlineCodes=&amp;quot;NONE&amp;quot;&lt;br /&gt;
         pushBack=&amp;quot;left&amp;quot;/&amp;gt;&lt;br /&gt;
 [SNIP] &lt;br /&gt;
    &amp;lt;Parking index=&amp;quot;198&amp;quot;&lt;br /&gt;
         type=&amp;quot;gate&amp;quot;&lt;br /&gt;
         name=&amp;quot;J80&amp;quot;&lt;br /&gt;
         number=&amp;quot;1&amp;quot;&lt;br /&gt;
         lat=&amp;quot;N52 18.678&amp;quot;&lt;br /&gt;
         lon=&amp;quot;E04 44.659&amp;quot;&lt;br /&gt;
         heading=&amp;quot;0&amp;quot;&lt;br /&gt;
         radius=&amp;quot;15&amp;quot;&lt;br /&gt;
         airlineCodes=&amp;quot;NONE&amp;quot;&lt;br /&gt;
         pushBack=&amp;quot;left&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/parkinglist&amp;gt;&lt;br /&gt;
  &amp;lt;TaxiNodes&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;199&amp;quot; lat=&amp;quot;N52 20.778&amp;quot; lon=&amp;quot;E04 42.626&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;200&amp;quot; lat=&amp;quot;N52 20.622&amp;quot; lon=&amp;quot;E04 42.771&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;201&amp;quot; lat=&amp;quot;N52 20.478&amp;quot; lon=&amp;quot;E04 42.592&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;202&amp;quot; lat=&amp;quot;N52 20.394&amp;quot; lon=&amp;quot;E04 42.685&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;203&amp;quot; lat=&amp;quot;N52 20.406&amp;quot; lon=&amp;quot;E04 42.754&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;204&amp;quot; lat=&amp;quot;N52 20.310&amp;quot; lon=&amp;quot;E04 42.740&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;205&amp;quot; lat=&amp;quot;N52 20.148&amp;quot; lon=&amp;quot;E04 42.565&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
 [SNIP]...&lt;br /&gt;
    &amp;lt;node index=&amp;quot;597&amp;quot; lat=&amp;quot;N52 18.666&amp;quot; lon=&amp;quot;E04 45.372&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;598&amp;quot; lat=&amp;quot;N52 18.678&amp;quot; lon=&amp;quot;E04 45.358&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;599&amp;quot; lat=&amp;quot;N52 18.678&amp;quot; lon=&amp;quot;E04 45.377&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/TaxiNodes&amp;gt;&lt;br /&gt;
  &amp;lt;TaxiWaySegments&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;237&amp;quot; end=&amp;quot;234&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;234&amp;quot; end=&amp;quot;239&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;239&amp;quot; end=&amp;quot;242&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;242&amp;quot; end=&amp;quot;245&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;369&amp;quot; end=&amp;quot;374&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;374&amp;quot; end=&amp;quot;369&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;370&amp;quot; end=&amp;quot;373&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;373&amp;quot; end=&amp;quot;370&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/TaxiWaySegments&amp;gt;&lt;br /&gt;
 &amp;lt;/groundnet&amp;gt;&lt;/div&gt;</summary>
		<author><name>Deskin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=AI_Traffic&amp;diff=3526</id>
		<title>AI Traffic</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=AI_Traffic&amp;diff=3526"/>
		<updated>2007-05-28T01:35:12Z</updated>

		<summary type="html">&lt;p&gt;Deskin: /* Defining a flight */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Interactive Traffic in FlightGear ==&lt;br /&gt;
&lt;br /&gt;
Starting with version 0.9.5, FlightGear has an interactive traffic system that is based on the AIModels subsystem, and which is currently under active development. This page aims to provide the required documentation needed to set up some traffic.&lt;br /&gt;
&lt;br /&gt;
In essence, setting-up the AI controlled traffic system involves three steps: &lt;br /&gt;
1. Create Traffic files, 2) Download and install the required AI Aircraft, and 3)Build ground networks for the Airports containing traffic.&lt;br /&gt;
&lt;br /&gt;
== Building Traffic Files ==&lt;br /&gt;
&lt;br /&gt;
Traffic patterns are stored in data files in extended markup language (.xml) format. Depending on version, these files are either stored in a sudirectory called '''Traffic''' in FlightGear's main data directory, hereafter referred to with it's technical name:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
${FGROOT}/Traffic&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or in the AI Aircraft's directory. Current FlightGear CVS (as of late December 2007) has its traffic files in the aircraft directories (e.g., in data/AI/Aircraft/737/, and older versions as well as the current PLIB built version of FlightGear have this file in &amp;lt;nowiki&amp;gt;${FGROOT}/Traffic&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
Each traffic pattern is built around two entities: Aircraft and Flights. Before discussing the details, lets start by exploring these two concepts a little further.&lt;br /&gt;
&lt;br /&gt;
== Some Details: TrafficManager, Aircraft, and Flights ==&lt;br /&gt;
&lt;br /&gt;
As in real life, AI traffic in FlightGear is centered around aircraft. In real life, a commercial airliner is put to use by operating on a series of scheduled flights, on a daily or weekly basis. Take for example the long haul routes that are flown by McDonnel Douglas MD11 aircraft. For instance, the MD11's operated by KLM  fly regularly between Amsterdam and various distant destinations, such as San Fransisco or Minneapolis in the United States, Vancouver or Montreal in Canada, Accra and Lagos in Africa, or New Delhi in India. Some of these routes are too long to complete a return flight in one day, such as the trip between Amsterdam and San Fransisco, which is basically an 11-hour flight one-way. So it would take 22 hours of just the flying time, and at least an additional two hour turn-around time at each airport. Therefore, in real-life, it is necessary to operate this aircraft on a series of routes, because other routes are  considerably shorter than the trip to San Fransisco. Therefore, the time lost on one route can be gained on another, averaging out to approximately one round-trip a day. &lt;br /&gt;
&lt;br /&gt;
In FlightGear, we wouldn't have to be so strictly considerate about the turnaround times as a real-world airline would, but in the not-so distant future, we also want to be able to see realisticly crowded terminals at our simulated airports, so considering the turnaround time in the schedules is a good thing. Therefore, most of the long-haul aircraft will need to be scheduled to fly more than one route. Hence, each AI aircraft has one or more routes assigned to it, which repeat on a weekly, daily, or hourly basis. &lt;br /&gt;
&lt;br /&gt;
The FlightGear traffic manager system, periodically checks the approximate position of a each aircraft in its database. This database is constructed on the basis of a routing table assigned to each aircraft. As in the real-world, when a route ends at one airport the next one has to start from the same airport as well. An important difference between the real world and the FlightGear traffic patterns is that while in the real world aircraft schedules are frequently rotated the FlightGear routes remain the same, unless the database is updated. Real aircraft require mainanance, and are therefore taken out of service periodically, FlightGear aircraft have the advantage that they do not require maintanance in this respect.&lt;br /&gt;
&lt;br /&gt;
== An example of a traffic file ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;trafficlist&amp;gt;&lt;br /&gt;
    &amp;lt;aircraft&amp;gt;&lt;br /&gt;
        &amp;lt;model&amp;gt;Aircraft/MD11/Models/KLMmd11-ai.xml&amp;lt;/model&amp;gt;&lt;br /&gt;
        &amp;lt;livery&amp;gt;KLM&amp;lt;/livery&amp;gt;&lt;br /&gt;
        &amp;lt;airline&amp;gt;KLM&amp;lt;/airline&amp;gt;&lt;br /&gt;
        &amp;lt;actype&amp;gt;MD11&amp;lt;/actype&amp;gt;&lt;br /&gt;
        &amp;lt;offset&amp;gt;19&amp;lt;/offset&amp;gt;&lt;br /&gt;
        &amp;lt;radius&amp;gt;39&amp;lt;/radius&amp;gt;&lt;br /&gt;
        &amp;lt;flighttype&amp;gt;gate&amp;lt;/flighttype&amp;gt;&lt;br /&gt;
        &amp;lt;performance-class&amp;gt;jet_transport&amp;lt;/performance-class&amp;gt;&lt;br /&gt;
        &amp;lt;registration&amp;gt;PH-KCA&amp;lt;/registration&amp;gt;&lt;br /&gt;
        &amp;lt;heavy&amp;gt;true&amp;lt;/heavy&amp;gt;&lt;br /&gt;
        &amp;lt;!-- Day one: Amsterdam to San Fransisco, CA, USA --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0605&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;0/09:45:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;330&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;KSFO&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;0/20:55:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
        &amp;lt;!-- Return Flight: Arrive the next day --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0606&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;KSFO&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;0/23:00:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;1/09:35:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
        &amp;lt;!-- Day two: Amsterdam to Accra, Ghana --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0589&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;1/12:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;330&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;DGAA&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;1/19:00:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
        &amp;lt;!-- Day two Return Flight: Arrive the next Day --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0590&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;DGAA&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;1/21:15:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;2/04:10:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
         &amp;lt;!-- Day three: Amsterdam to Vancouver, BC, Canada --&amp;gt;&lt;br /&gt;
         &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0681&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;2/08:25:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;330&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;CYVR&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;2/18:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
         &amp;lt;!-- Day three: return Flight: Arrive the next day --&amp;gt;&lt;br /&gt;
         &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0682&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;CYVR&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;2/20:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;330&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;3/05:40:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
         &amp;lt;!-- Day four: Amsterdam to Delhi, India --&amp;gt;&lt;br /&gt;
         &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0871&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;3/09:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;VIDP&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;3/17:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;    &lt;br /&gt;
         &amp;lt;!-- Day four: Return Flight: Arrive the next day --&amp;gt;&lt;br /&gt;
         &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0872&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;VIDP&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;3/19:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;350&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;4/04:00:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
         &amp;lt;!-- Day five: Amsterdam to Lagos, Nigeria --&amp;gt;&lt;br /&gt;
         &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0587&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;4/10:30:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;DNMM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;4/16:55:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;  &lt;br /&gt;
        &amp;lt;!-- Day five: Return Flight, Arrive the next day --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0588&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;DNMM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;4/21:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;5/06:10:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;         &lt;br /&gt;
        &amp;lt;!-- Day Six: Amsterdam to Montreal, Quebec, Canada --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0671&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;5/12:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;CYUL&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;5/19:50:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;     &lt;br /&gt;
        &amp;lt;!-- Day Six: Return Flight. Arrive the next day --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0672&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;CYUL&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;5/22:00:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;6/04:45:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;    &lt;br /&gt;
       &amp;lt;!-- Day Seven: Minneapolis/St. Paul, MN, USA --&amp;gt;&lt;br /&gt;
       &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0667&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;6/12:05:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;330&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;KMSP&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;6/20:50:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
       &amp;lt;!-- Day Seven: Return Flight, Arrive the next day. --&amp;gt;&lt;br /&gt;
       &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0668&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;KMSP&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;6/23:00:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;0/07:15:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;                &lt;br /&gt;
    &amp;lt;/aircraft&amp;gt;&lt;br /&gt;
 &amp;lt;/trafficlist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disecting the traffic file ==&lt;br /&gt;
&lt;br /&gt;
Here I will discuss the general structure of a traffic file in more detail. As discussed in the introduction, the traffic patterns are centered around aircraft and flights. Therefore, a minimal traffic file will consist of two sections: the aircraft definition and the flights section. In the next two sections, I will discuss each of these sections. &lt;br /&gt;
&lt;br /&gt;
== General Layout ==&lt;br /&gt;
&lt;br /&gt;
The general layout of each file should look like the above example.&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;trafficlist&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
 &amp;lt;/trafficlist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The general layout of each file should look like the above example. The first line contains a generic xml header, which is followed on the second line with a '''&amp;lt;trafficlist&amp;gt;''' statement. Also, the last line in the file should close off the trafficlist section using the '''&amp;lt;/trafficlist&amp;gt;''' statement. As will be illustrated below, between these two statements can be one or more aircraft definitions.&lt;br /&gt;
&lt;br /&gt;
== Defining the aircraft ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;trafficlist&amp;gt;&lt;br /&gt;
    &amp;lt;aircraft&amp;gt;&lt;br /&gt;
       &amp;lt;model&amp;gt;Aircraft/MD11/Models/KLMmd11-ai.xml&amp;lt;/model&amp;gt;&lt;br /&gt;
       &amp;lt;livery&amp;gt;KLM&amp;lt;/livery&amp;gt;&lt;br /&gt;
       &amp;lt;airline&amp;gt;KLM&amp;lt;/airline&amp;gt;&lt;br /&gt;
       &amp;lt;actype&amp;gt;MD11&amp;lt;/actype&amp;gt;&lt;br /&gt;
       &amp;lt;offset&amp;gt;19&amp;lt;/offset&amp;gt;&lt;br /&gt;
       &amp;lt;radius&amp;gt;39&amp;lt;/radius&amp;gt;&lt;br /&gt;
       &amp;lt;flighttype&amp;gt;gate&amp;lt;/flighttype&amp;gt;&lt;br /&gt;
       &amp;lt;performance-class&amp;gt;jet_transport&amp;lt;/performance-class&amp;gt;&lt;br /&gt;
       &amp;lt;registration&amp;gt;PH-KCA&amp;lt;/registration&amp;gt;&lt;br /&gt;
       &amp;lt;flight&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;/aircraft&amp;gt;&lt;br /&gt;
 &amp;lt;/trafficlist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The first lines inside the '''&amp;lt;aircraft&amp;gt;''' clause define the aircraft's performance characteristics.&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;model&amp;gt;''' Here is a path specified to the 3D model that should be used in FlightGear.&lt;br /&gt;
* '''&amp;lt;livery&amp;gt;''' This line is currently unused, and will likely remain unused. The original idea was to combine this with the '''&amp;lt;model&amp;gt;''' line (see above) to load a specific combination of aircraftype and paint scheme, but I abandoned that idea, because it didn't turn out to be very combatible with the existing FlightGear model loading code. &lt;br /&gt;
* '''&amp;lt;airline&amp;gt;''' This line refers to the airline operating the aircraft. This information is currently used by FlightGear to handle gate/parking assignments. Use the official 3-letter ICAO airline code here, in case of commercial traffic. This keyword is unlikely to be used for general aviation and military traffic. &lt;br /&gt;
* '''&amp;lt;actype&amp;gt;''' A description of the aircraft type reserved for future use in ATC.&lt;br /&gt;
* '''&amp;lt;offset&amp;gt;''' Ground offset of the 3D model. Not all aircraft 3D models are build using the same convention. Use this parameter to align the wheels with the ground. Notice that this parameter will probably become obsolete in the near future, because model view point references can also be done in the xml file that the '''&amp;lt;model&amp;gt;''' keyword refers to.&lt;br /&gt;
* '''&amp;lt;radius&amp;gt;''' An estimate of the aircraft's size. This is mainly used at airports for gate assignments.&lt;br /&gt;
* '''&amp;lt;flighttype&amp;gt;''' This line is also used for gate assignments and should be one of the following:&lt;br /&gt;
    '''ga''' (general aviation), &lt;br /&gt;
    '''cargo''' (cargo)&lt;br /&gt;
    '''gate''' (commercial passenger traffic) &lt;br /&gt;
In addtion, it is expected that a '''mil''' value will be valid sometime soon. In the near future, this keyword will also be used for runway assignments, so that general aviation, commercial, and military traffic will use different runways if that is part of the airport's operational procedures.&lt;br /&gt;
* '''&amp;lt;performance-class&amp;gt;''' This line is used to determine the performance characteristics of AI aircraft. This should match one of the performance classes that are predefined in FlightGear. Currently, the following performance classes are supported:&lt;br /&gt;
 &lt;br /&gt;
 '''light_aircraft''' (prop driven single or twin),&lt;br /&gt;
 '''ww2_fighter'''    (world war two fighter),&lt;br /&gt;
 '''jet_transport'''  (modern commercial jet),&lt;br /&gt;
 '''jet_fighter'''    (modern fighter aircraft)&lt;br /&gt;
 '''tanker'''         (tanker aircraft), or.&lt;br /&gt;
 '''ufo'''            (allows extreme accel/decel capabilities).&lt;br /&gt;
*'''&amp;lt;registration&amp;gt;''' The aircraft's tail number. Future versions of FlightGear will use this registration in ATC for general aviation traffic. For commercial traffic the registration number will likely remain unused.&lt;br /&gt;
&lt;br /&gt;
== Defining a flight ==&lt;br /&gt;
&lt;br /&gt;
The next series of lines within the '''&amp;lt;aircraft&amp;gt;''' section define the flights. Again, each flight is defined between the '''&amp;lt;flight&amp;gt;''' and '''&amp;lt;/flight&amp;gt;''' statements. For example, let's have a look at the first two &lt;br /&gt;
flights specified in our PH-KCA example. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- Day one: Amsterdam to San Fransisco, CA, USA --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0605&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;0/09:45:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;330&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;KSFO&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;0/20:55:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt; &lt;br /&gt;
       &amp;lt;/flight&amp;gt; &lt;br /&gt;
        &amp;lt;!-- Return Flight: Arrive the next day --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0606&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;KSFO&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;0/23:00:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;1/09:35:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The '''&amp;lt;flights&amp;gt;''' section is slightly more complex than the aircraft definition itself, because it has a few nested levels. The following keywords should be specified:&lt;br /&gt;
* '''&amp;lt;flight&amp;gt;''' All the relevant parameter should be specified between the '''&amp;lt;flight&amp;gt;&amp;lt;/flight&amp;gt;''' keywords.&lt;br /&gt;
* '''&amp;lt;callsign&amp;gt;''' The airline callsign used for ATC. If this is an airline flight it should be combination of the airline callsign (e.g. '''KLM''' for KLM, or '''Springbok''' for South African Airways), and the flight number (e.g. '''KLM0605''', or '''Springbok0033''').&lt;br /&gt;
* '''&amp;lt;fltrules&amp;gt;''' Can be ''IFR'' or ''VFR''. This is required for use in ATC, but currently not used. This is likely to change, however.&lt;br /&gt;
* '''&amp;lt;departure&amp;gt;''' Definition of the departure airport. This section should contain the '''&amp;lt;port&amp;gt;''' and '''&amp;lt;time&amp;gt;''' keywords.&lt;br /&gt;
* '''&amp;lt;cruise-alt&amp;gt;''' Cruising altitude for this flight. This is a bit of a simplification from the real world, where aircraft usually don't stay at the same cruise altitude throughout the flight. This behavior will probably also change in future versions. &lt;br /&gt;
* '''&amp;lt;arrival&amp;gt;''' Same as '''&amp;lt;departure&amp;gt;''', but now defining the port of arrival.&lt;br /&gt;
* '''&amp;lt;repeat&amp;gt;''' Repeat period. This can be either the keyword ''WEEK'', or a number followed by ''Hr''. ''WEEK'' means that the whole schedule repeats itself on a weekly basis. ''Hr'' means that the whole schedule repeats after the number of hours specified directly before it (e.g. ''24Hr'' means that the schedule repeats after 24 hours).&lt;br /&gt;
* '''&amp;lt;port&amp;gt;''' This should be the international ICAO airport code. This keyword should be specified only within the '''&amp;lt;departure&amp;gt;''' or '''&amp;lt;arrival&amp;gt;''' sections. As far as I know, here it should still be in upper case, although the FlightGear command line currently also supports lower case ICAO codes. &lt;br /&gt;
* '''&amp;lt;time&amp;gt;''' Used to specify the '''&amp;lt;departure&amp;gt;''' or '''&amp;lt;arrival&amp;gt;''' time. The format of this string is ''hour:minute:second''. Notice that departure day is optional and is specifically intended to be used in combination with a weekly repeating schedule. When used in combination with other schedules, results may be unpredicatble. Times should be in UTC. Weekdays start at sunday (0) and end at saturday (6).&lt;br /&gt;
&lt;br /&gt;
== Putting it all together: Including a traffic file ==&lt;br /&gt;
&lt;br /&gt;
After creating a traffic file, all we need to do is make sure FlightGear knows how to use this. In the next few sections, I will explain how to do this. &lt;br /&gt;
&lt;br /&gt;
== fgtraffic.xml ==&lt;br /&gt;
&lt;br /&gt;
If you use a current version of FlightGear cvs HEAD/ OpenSceneGraph, activating traffic is easy: Just copy the traffic file into the same directory as where the AI aircraft file resides (for example: data/AI/Aircraft/737). If you use an older version, or if you use the PLIB based version of FlightGear, traffic can be activated according to the following instructions.&lt;br /&gt;
&lt;br /&gt;
At startup, FlightGear (older versions, or CVS PLIB) reads a file called '''fgtraffic.xml'''. In order to let FlightGear use our newly built traffic file, all we need to do is add a reference to the new file. Suppose we saved our file as PH-KCA.xml, all that would be required would be to add the following line: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;traffic include=&amp;quot;&amp;lt;path&amp;gt;/PH-KCA.xml&amp;quot;, &lt;br /&gt;
&lt;br /&gt;
where '''&amp;lt;path&amp;gt;''' is the directory where the file is located, relative to the main '''Traffic''' directory. For example, fgtraffic could look like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;trafficlist&amp;gt;&lt;br /&gt;
    &amp;lt;traffic include=&amp;quot;KLM/KLM.xml&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;traffic include=&amp;quot;UAL/UAL.xml&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;traffic include=&amp;quot;general/KSFO/c172.xml&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/trafficlist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Organizing by airline ==&lt;br /&gt;
&lt;br /&gt;
Although the example above works and is perfectly legal, I would prefer to see the individual files grouped together by airline and aircraft type. One way to do this is to organize files by airline and within each airline by aircraft type. For example, we could group all KLM flights together. Then we bundle these into a file called \verb|KLM.xml|, which would look like the following:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;trafficlist&amp;gt;&lt;br /&gt;
    &amp;lt;airline include=&amp;quot;KLM/MD11/MD11.xml&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/trafficlist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This file currently contains only one line, which includes the '''MD11.xml''' group, but more could be added easily.&lt;br /&gt;
&lt;br /&gt;
== Organizing by aircraft type ==&lt;br /&gt;
&lt;br /&gt;
Finally, the '''MD11.xml''' file could look like this. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;trafficlist&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCA.xml&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCB.xml&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCC.xml&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCD.xml&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCE.xml&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCF.xml&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCG.xml&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/trafficlist&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
One final note on the organization of the schedules is that I'm consisdering changing the organization. In order to make the whole system more ''plug-and-play'' compatible, I'd like to add in the ability to drop traffic files right in a dedicated AI directory that FLightGear would automatically scan for new traffic files. Until those ideas are finally fleshed out, the current organisation is prbably likely to stay in place.&lt;br /&gt;
&lt;br /&gt;
== Ground networks: A technical perspective ==&lt;br /&gt;
&lt;br /&gt;
AI aircraft pickup taxiway information from an xml file that resides in &lt;br /&gt;
FlightGear's data directory. This is done on an airport by airport basis. the &lt;br /&gt;
precise location of this file is data/Airports/AI/[ICAO-id]/parking.xml. For &lt;br /&gt;
an example, see the groundnetwork for EHAM, which is found in &lt;br /&gt;
data/Airports/AI/EHAM/parking.xml. See the end of this message for a small &lt;br /&gt;
excerpt from this file.&lt;br /&gt;
&lt;br /&gt;
The first section of the file contains the parameters of the airport's parking &lt;br /&gt;
locations. This section is followed by a list of all the nodes in the ground &lt;br /&gt;
network, and the final section contains a list of segments or &amp;quot;arcs&amp;quot; as David &lt;br /&gt;
Luff called them initially, which basically describe which node is connected &lt;br /&gt;
to which other node. &lt;br /&gt;
&lt;br /&gt;
Each parking and ai node has a unique index number, which is used by the &lt;br /&gt;
segments to link the startup location and the taxiways together. Parkings and &lt;br /&gt;
AI nodes have the following parameters: &lt;br /&gt;
 - index (unique, consecutively numbered id)&lt;br /&gt;
 - lat (position in latitude)&lt;br /&gt;
 - lon (position in longitude)&lt;br /&gt;
 - name (name as found on airport charts: e.g. D23, or C1). &lt;br /&gt;
&lt;br /&gt;
Name is currently not used, Parking names will be used in future ATC, but AINode names will probably not be used except for some specific internal functions. &lt;br /&gt;
airlineCodes= list any (comma separated) ICAO airline codes here to specify &lt;br /&gt;
which airlines are allowed here. &lt;br /&gt;
-pushBack (used to determine whether departing aircraft can make left or right &lt;br /&gt;
turns after pushback&lt;br /&gt;
&lt;br /&gt;
In addition, each parking has a number of additional parameters:&lt;br /&gt;
* '''type:''' specifies what type of aircraft can use this parking bay: Valid values for this parameter are: ''cargo, gate'' (=usually intermediate to heavy airline traffic), ''ramp'' (=usually smaller regional jets and commuter aircraft), ''ga'' (=general aviation), and ''mil'' (=military). See the description of the '''&amp;lt;flighttype&amp;gt;''' parameter in the traffic pattern description above for a comparison.&lt;br /&gt;
* '''number:''' Currently unused, and likely to be removed.&lt;br /&gt;
* '''heading:''' the heading the aircraft parked in this bay.&lt;br /&gt;
*'''radius:''' a value used to determine whether the aircaft will fit in this bay: see also the description of the '''&amp;lt;radius&amp;gt;''' parameter in the traffic pattern description above. &lt;br /&gt;
*'''airlineCodes:''' a comma-separated list of ICAO airline codes used to indicate which airlines should park here. Leave this field blank if you want any aircraft to park here.&lt;br /&gt;
*'''pushBack:''' Currently Unused.&lt;br /&gt;
&lt;br /&gt;
Finally, the taxiway segments contain three parameters. &lt;br /&gt;
* '''begin''' (= the id of the parking or AINode this segment starts)&lt;br /&gt;
* '''end''' (= the id of the parking or AINode this segment ends)&lt;br /&gt;
* '''name''' (= name of the taxiway. Currently still unused)&lt;br /&gt;
&lt;br /&gt;
== Creating a ground network, a practical approach ==&lt;br /&gt;
&lt;br /&gt;
Okay that finishes the technical description of the parking file format. The &lt;br /&gt;
good news is that one probably doesn't need to know too much about the technical &lt;br /&gt;
side of the file structure to create a ground network. &lt;br /&gt;
&lt;br /&gt;
== TaxiDraw ==&lt;br /&gt;
&lt;br /&gt;
The CVS version of taxidraw (http://taxidraw.sourceforge.net/) has ground &lt;br /&gt;
network editing capabilities, and will in the short to intermediate term &lt;br /&gt;
probably be the best option to create a ground network for FlightGear.  &lt;br /&gt;
Notice that the ground editing facilities in TaxiDRaw are still rather new, and although the stability of this feature has increased dramatically over the last few weeks, there are still a few issues related to the undo function, so be prepared for a bit of frustration, and make regular backups. &lt;br /&gt;
&lt;br /&gt;
== Obtaining TaxiDraw ==&lt;br /&gt;
&lt;br /&gt;
I'm hoping that we can do a release of taxidraw fairly soon, so that the &lt;br /&gt;
groundnet editing capabilities will become easily accesible. Until that time, &lt;br /&gt;
linux users can try to check out a version of taxidraw from CVS by following &lt;br /&gt;
the instructions on http://taxidraw.sourceforge.net/#download&lt;br /&gt;
&lt;br /&gt;
Windows users can also do this either by using the free winCVS program or &lt;br /&gt;
using the free cygwin environment. &lt;br /&gt;
&lt;br /&gt;
== Getting good reference material ==&lt;br /&gt;
&lt;br /&gt;
The first step in preparation of creating a ground network consists of getting &lt;br /&gt;
some reference material. Ideally, You'd like to find a good satellite or arial image. If you can't find that, using a schematic diagram might also work. In most cases, using http://maps.google.com, and selecting the satellite imagery will work pretty well as reference. You can't save the google images, so importing them as a background image in taxidraw won't work. However, using these images as a reference and placing the parking notes at the approximate location indicated by the map will (at least for an initial version) give reasonable results.&lt;br /&gt;
&lt;br /&gt;
== Creating the network ==&lt;br /&gt;
&lt;br /&gt;
== Startup locations ==&lt;br /&gt;
&lt;br /&gt;
Once you have the reference material, it's time to start building the ground &lt;br /&gt;
network. I typically start by placing all the parkings first. There are two &lt;br /&gt;
ways to do this. 1) Using the mouse, choose [insert|Startup Location] from &lt;br /&gt;
the main menu. This will create a new startup location. Then left-click on it &lt;br /&gt;
and drag it to its desired location. 2) Move the mouse to the location where &lt;br /&gt;
you want to place the startup location and press the 's' key on the keyboard. &lt;br /&gt;
This places the startup location directly where the mouse is located. &lt;br /&gt;
&lt;br /&gt;
== AI Network Nodes ==&lt;br /&gt;
&lt;br /&gt;
Next you want to insert the AINodes, without connecting them yet. The &lt;br /&gt;
procedure is basically the same as placing the startup locations. Either &lt;br /&gt;
select [Insert| Add AI Network Node ] from the menu, or move the mouse to the &lt;br /&gt;
location where you want to place the node. Press the 'n' key to actually add &lt;br /&gt;
the node. &lt;br /&gt;
&lt;br /&gt;
== Connecting the nodes: Drawing the network ==&lt;br /&gt;
&lt;br /&gt;
Once you are finished adding all the nodes, and startup locations, it's time &lt;br /&gt;
to connect the nodes . This is the time to save your work and MAKE A BACKUP, &lt;br /&gt;
as the nodes connection code is not entirely stable yet. &lt;br /&gt;
&lt;br /&gt;
Connecting nodes can be done by switching the editor to arcing mode, by &lt;br /&gt;
pressing the 'm' key. The edit mode of taxidraw is indicated in the lower &lt;br /&gt;
right corner of the status bar. After pressing 'm' it should read ARC. If you &lt;br /&gt;
need to switch back to the standard edit mode press 'm' again. &lt;br /&gt;
&lt;br /&gt;
Making sure we are still in &amp;quot;ARC&amp;quot; mode, select the first node or parking  &lt;br /&gt;
you want to connect to the network by clicking on it. The node you have &lt;br /&gt;
clicked will be selected, and a red line with an arrow symbol will be drawn &lt;br /&gt;
between this node and the mouse cursor. Now, select the second node that you &lt;br /&gt;
wish to connect this node to. Click it with the mouse, and the red line will &lt;br /&gt;
now be drawn between the the two nodes. You have created a taxiroute. Now &lt;br /&gt;
repeat this process for all the nodes you want to connect.&lt;br /&gt;
&lt;br /&gt;
Note that taxi segments are unidirectional. If you want to create &lt;br /&gt;
bidirectional taxiways, make sure you not only connect node &amp;quot;1&amp;quot; to node &amp;quot;2&amp;quot; &lt;br /&gt;
but also to connect node &amp;quot;2&amp;quot; to node &amp;quot;1&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Second, notice also that once you have connected two nodes to each other, and &lt;br /&gt;
want to create a second taxiway that starts at the node that the previous &lt;br /&gt;
node ended, you have to select this node again, to become the first node in &lt;br /&gt;
the next taxiway.&lt;br /&gt;
&lt;br /&gt;
== Editing the startup location parameters ==&lt;br /&gt;
&lt;br /&gt;
Once you have created a ground network, you'll find that it probably won't &lt;br /&gt;
work yet in flightgear. The main reason for this is that the default gate &lt;br /&gt;
size is set to a fairly small size, and most aircraft won't fit into the &lt;br /&gt;
gate. Therefore, you'd need to edit the parking parameters. In addition, &lt;br /&gt;
you'd also need to give each parking a name, and a heading, and probably &lt;br /&gt;
airlines codes. Changing name, and heading can be done in taxidraw, by right &lt;br /&gt;
clicking on the startup location. This will bring up a dialog, in which you &lt;br /&gt;
can change latitude, longitude, heading, and name,  Once you're done editing, &lt;br /&gt;
click okay to accept the new values, or cancel to discard. &lt;br /&gt;
&lt;br /&gt;
Editing the starup location radius, type, airlineCodes, and pushBack &lt;br /&gt;
parameters is not yet possible in taxidraw. So changing these requires saving &lt;br /&gt;
the project and editing these using a texteditor. Once you save the project, this will be done in a file [filename].tpj (taxidraw project). The groundnetwork will be saved in a file named [filename]-groundnet.xml, which will be in the same folder as where you saved the project.&lt;br /&gt;
&lt;br /&gt;
You can edit the remaining parameters by loading this groundnet.xml file into &lt;br /&gt;
a text editor. Once you are done editing make sure you import these changes &lt;br /&gt;
into taxidraw immediately. Do this by going to [File| Import FlightGear AI &lt;br /&gt;
Network]. This will open a file selection dialog. Choose the file you just &lt;br /&gt;
edited and click okay. TaxiDraw will ask for confirmation to overwrite &lt;br /&gt;
existing ground network data and confirm this  by clicking on &amp;quot;yes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Copying the ground network into FlightGear's data directory ==&lt;br /&gt;
&lt;br /&gt;
Finally, once you have finished creating a groundnet work you can test it in &lt;br /&gt;
FlightGear. Create a directory in FlightGear's data/Airports/AI directory, &lt;br /&gt;
with the name of the ICAO code of your airport. For example &lt;br /&gt;
data/Airports/AI/EHAM. Next. locate the file [filename]-groundnetwork.xml and copy this to the directory you just created. Finally, rename the file you just copied to &amp;quot;parking.xml&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Testing the network ==&lt;br /&gt;
&lt;br /&gt;
Startup flightGear at the airport for wich you have just created the network, &lt;br /&gt;
and make sure you have traffic for that aircraft. FlightGear will check the &lt;br /&gt;
network and report errors on the console. Aircraft than can't be placed at &lt;br /&gt;
one of the parking locations will be placed at a default location. &lt;br /&gt;
&lt;br /&gt;
If the FlightGear AI system can't find a valid route between startup location &lt;br /&gt;
and runway, it will list which nodes are not connected and exit. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Appendix: ==&lt;br /&gt;
&lt;br /&gt;
An below is an example section from data/Airports/AI/EHAM/parking.xml&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;groundnet&amp;gt;&lt;br /&gt;
  &amp;lt;parkinglist&amp;gt;&lt;br /&gt;
    &amp;lt;Parking index=&amp;quot;0&amp;quot;&lt;br /&gt;
         type=&amp;quot;cargo&amp;quot;&lt;br /&gt;
         name=&amp;quot;R02&amp;quot;&lt;br /&gt;
         number=&amp;quot;1&amp;quot;&lt;br /&gt;
         lat=&amp;quot;N52 17.664&amp;quot;&lt;br /&gt;
         lon=&amp;quot;E04 44.527&amp;quot;&lt;br /&gt;
         heading=&amp;quot;328.8&amp;quot;&lt;br /&gt;
         radius=&amp;quot;43&amp;quot;&lt;br /&gt;
         airlineCodes=&amp;quot;NONE&amp;quot;&lt;br /&gt;
         pushBack=&amp;quot;left&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Parking index=&amp;quot;1&amp;quot;&lt;br /&gt;
         type=&amp;quot;cargo&amp;quot;&lt;br /&gt;
         name=&amp;quot;R04&amp;quot;&lt;br /&gt;
         number=&amp;quot;1&amp;quot;&lt;br /&gt;
         lat=&amp;quot;N52 17.682&amp;quot;&lt;br /&gt;
         lon=&amp;quot;E04 44.572&amp;quot;&lt;br /&gt;
         heading=&amp;quot;328.8&amp;quot;&lt;br /&gt;
         radius=&amp;quot;43&amp;quot;&lt;br /&gt;
         airlineCodes=&amp;quot;NONE&amp;quot;&lt;br /&gt;
         pushBack=&amp;quot;left&amp;quot;/&amp;gt;&lt;br /&gt;
 [SNIP] &lt;br /&gt;
    &amp;lt;Parking index=&amp;quot;198&amp;quot;&lt;br /&gt;
         type=&amp;quot;gate&amp;quot;&lt;br /&gt;
         name=&amp;quot;J80&amp;quot;&lt;br /&gt;
         number=&amp;quot;1&amp;quot;&lt;br /&gt;
         lat=&amp;quot;N52 18.678&amp;quot;&lt;br /&gt;
         lon=&amp;quot;E04 44.659&amp;quot;&lt;br /&gt;
         heading=&amp;quot;0&amp;quot;&lt;br /&gt;
         radius=&amp;quot;15&amp;quot;&lt;br /&gt;
         airlineCodes=&amp;quot;NONE&amp;quot;&lt;br /&gt;
         pushBack=&amp;quot;left&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/parkinglist&amp;gt;&lt;br /&gt;
  &amp;lt;TaxiNodes&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;199&amp;quot; lat=&amp;quot;N52 20.778&amp;quot; lon=&amp;quot;E04 42.626&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;200&amp;quot; lat=&amp;quot;N52 20.622&amp;quot; lon=&amp;quot;E04 42.771&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;201&amp;quot; lat=&amp;quot;N52 20.478&amp;quot; lon=&amp;quot;E04 42.592&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;202&amp;quot; lat=&amp;quot;N52 20.394&amp;quot; lon=&amp;quot;E04 42.685&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;203&amp;quot; lat=&amp;quot;N52 20.406&amp;quot; lon=&amp;quot;E04 42.754&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;204&amp;quot; lat=&amp;quot;N52 20.310&amp;quot; lon=&amp;quot;E04 42.740&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;205&amp;quot; lat=&amp;quot;N52 20.148&amp;quot; lon=&amp;quot;E04 42.565&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
 [SNIP]...&lt;br /&gt;
    &amp;lt;node index=&amp;quot;597&amp;quot; lat=&amp;quot;N52 18.666&amp;quot; lon=&amp;quot;E04 45.372&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;598&amp;quot; lat=&amp;quot;N52 18.678&amp;quot; lon=&amp;quot;E04 45.358&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;599&amp;quot; lat=&amp;quot;N52 18.678&amp;quot; lon=&amp;quot;E04 45.377&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/TaxiNodes&amp;gt;&lt;br /&gt;
  &amp;lt;TaxiWaySegments&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;237&amp;quot; end=&amp;quot;234&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;234&amp;quot; end=&amp;quot;239&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;239&amp;quot; end=&amp;quot;242&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;242&amp;quot; end=&amp;quot;245&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;369&amp;quot; end=&amp;quot;374&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;374&amp;quot; end=&amp;quot;369&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;370&amp;quot; end=&amp;quot;373&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;373&amp;quot; end=&amp;quot;370&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/TaxiWaySegments&amp;gt;&lt;br /&gt;
 &amp;lt;/groundnet&amp;gt;&lt;/div&gt;</summary>
		<author><name>Deskin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=AI_Traffic&amp;diff=3525</id>
		<title>AI Traffic</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=AI_Traffic&amp;diff=3525"/>
		<updated>2007-05-28T01:32:19Z</updated>

		<summary type="html">&lt;p&gt;Deskin: /* Defining the aircraft */ Readability&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Interactive Traffic in FlightGear ==&lt;br /&gt;
&lt;br /&gt;
Starting with version 0.9.5, FlightGear has an interactive traffic system that is based on the AIModels subsystem, and which is currently under active development. This page aims to provide the required documentation needed to set up some traffic.&lt;br /&gt;
&lt;br /&gt;
In essence, setting-up the AI controlled traffic system involves three steps: &lt;br /&gt;
1. Create Traffic files, 2) Download and install the required AI Aircraft, and 3)Build ground networks for the Airports containing traffic.&lt;br /&gt;
&lt;br /&gt;
== Building Traffic Files ==&lt;br /&gt;
&lt;br /&gt;
Traffic patterns are stored in data files in extended markup language (.xml) format. Depending on version, these files are either stored in a sudirectory called '''Traffic''' in FlightGear's main data directory, hereafter referred to with it's technical name:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
${FGROOT}/Traffic&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or in the AI Aircraft's directory. Current FlightGear CVS (as of late December 2007) has its traffic files in the aircraft directories (e.g., in data/AI/Aircraft/737/, and older versions as well as the current PLIB built version of FlightGear have this file in &amp;lt;nowiki&amp;gt;${FGROOT}/Traffic&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
Each traffic pattern is built around two entities: Aircraft and Flights. Before discussing the details, lets start by exploring these two concepts a little further.&lt;br /&gt;
&lt;br /&gt;
== Some Details: TrafficManager, Aircraft, and Flights ==&lt;br /&gt;
&lt;br /&gt;
As in real life, AI traffic in FlightGear is centered around aircraft. In real life, a commercial airliner is put to use by operating on a series of scheduled flights, on a daily or weekly basis. Take for example the long haul routes that are flown by McDonnel Douglas MD11 aircraft. For instance, the MD11's operated by KLM  fly regularly between Amsterdam and various distant destinations, such as San Fransisco or Minneapolis in the United States, Vancouver or Montreal in Canada, Accra and Lagos in Africa, or New Delhi in India. Some of these routes are too long to complete a return flight in one day, such as the trip between Amsterdam and San Fransisco, which is basically an 11-hour flight one-way. So it would take 22 hours of just the flying time, and at least an additional two hour turn-around time at each airport. Therefore, in real-life, it is necessary to operate this aircraft on a series of routes, because other routes are  considerably shorter than the trip to San Fransisco. Therefore, the time lost on one route can be gained on another, averaging out to approximately one round-trip a day. &lt;br /&gt;
&lt;br /&gt;
In FlightGear, we wouldn't have to be so strictly considerate about the turnaround times as a real-world airline would, but in the not-so distant future, we also want to be able to see realisticly crowded terminals at our simulated airports, so considering the turnaround time in the schedules is a good thing. Therefore, most of the long-haul aircraft will need to be scheduled to fly more than one route. Hence, each AI aircraft has one or more routes assigned to it, which repeat on a weekly, daily, or hourly basis. &lt;br /&gt;
&lt;br /&gt;
The FlightGear traffic manager system, periodically checks the approximate position of a each aircraft in its database. This database is constructed on the basis of a routing table assigned to each aircraft. As in the real-world, when a route ends at one airport the next one has to start from the same airport as well. An important difference between the real world and the FlightGear traffic patterns is that while in the real world aircraft schedules are frequently rotated the FlightGear routes remain the same, unless the database is updated. Real aircraft require mainanance, and are therefore taken out of service periodically, FlightGear aircraft have the advantage that they do not require maintanance in this respect.&lt;br /&gt;
&lt;br /&gt;
== An example of a traffic file ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;trafficlist&amp;gt;&lt;br /&gt;
    &amp;lt;aircraft&amp;gt;&lt;br /&gt;
        &amp;lt;model&amp;gt;Aircraft/MD11/Models/KLMmd11-ai.xml&amp;lt;/model&amp;gt;&lt;br /&gt;
        &amp;lt;livery&amp;gt;KLM&amp;lt;/livery&amp;gt;&lt;br /&gt;
        &amp;lt;airline&amp;gt;KLM&amp;lt;/airline&amp;gt;&lt;br /&gt;
        &amp;lt;actype&amp;gt;MD11&amp;lt;/actype&amp;gt;&lt;br /&gt;
        &amp;lt;offset&amp;gt;19&amp;lt;/offset&amp;gt;&lt;br /&gt;
        &amp;lt;radius&amp;gt;39&amp;lt;/radius&amp;gt;&lt;br /&gt;
        &amp;lt;flighttype&amp;gt;gate&amp;lt;/flighttype&amp;gt;&lt;br /&gt;
        &amp;lt;performance-class&amp;gt;jet_transport&amp;lt;/performance-class&amp;gt;&lt;br /&gt;
        &amp;lt;registration&amp;gt;PH-KCA&amp;lt;/registration&amp;gt;&lt;br /&gt;
        &amp;lt;heavy&amp;gt;true&amp;lt;/heavy&amp;gt;&lt;br /&gt;
        &amp;lt;!-- Day one: Amsterdam to San Fransisco, CA, USA --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0605&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;0/09:45:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;330&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;KSFO&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;0/20:55:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
        &amp;lt;!-- Return Flight: Arrive the next day --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0606&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;KSFO&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;0/23:00:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;1/09:35:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
        &amp;lt;!-- Day two: Amsterdam to Accra, Ghana --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0589&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;1/12:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;330&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;DGAA&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;1/19:00:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
        &amp;lt;!-- Day two Return Flight: Arrive the next Day --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0590&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;DGAA&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;1/21:15:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;2/04:10:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
         &amp;lt;!-- Day three: Amsterdam to Vancouver, BC, Canada --&amp;gt;&lt;br /&gt;
         &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0681&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;2/08:25:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;330&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;CYVR&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;2/18:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
         &amp;lt;!-- Day three: return Flight: Arrive the next day --&amp;gt;&lt;br /&gt;
         &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0682&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;CYVR&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;2/20:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;330&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;3/05:40:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
         &amp;lt;!-- Day four: Amsterdam to Delhi, India --&amp;gt;&lt;br /&gt;
         &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0871&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;3/09:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;VIDP&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;3/17:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;    &lt;br /&gt;
         &amp;lt;!-- Day four: Return Flight: Arrive the next day --&amp;gt;&lt;br /&gt;
         &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0872&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;VIDP&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;3/19:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;350&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;4/04:00:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
         &amp;lt;!-- Day five: Amsterdam to Lagos, Nigeria --&amp;gt;&lt;br /&gt;
         &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0587&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;4/10:30:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;DNMM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;4/16:55:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;  &lt;br /&gt;
        &amp;lt;!-- Day five: Return Flight, Arrive the next day --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0588&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;DNMM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;4/21:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;5/06:10:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;         &lt;br /&gt;
        &amp;lt;!-- Day Six: Amsterdam to Montreal, Quebec, Canada --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0671&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;5/12:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;CYUL&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;5/19:50:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;     &lt;br /&gt;
        &amp;lt;!-- Day Six: Return Flight. Arrive the next day --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0672&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;CYUL&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;5/22:00:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;6/04:45:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;    &lt;br /&gt;
       &amp;lt;!-- Day Seven: Minneapolis/St. Paul, MN, USA --&amp;gt;&lt;br /&gt;
       &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0667&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;6/12:05:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;330&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;KMSP&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;6/20:50:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
       &amp;lt;!-- Day Seven: Return Flight, Arrive the next day. --&amp;gt;&lt;br /&gt;
       &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0668&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;KMSP&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;6/23:00:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;0/07:15:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;                &lt;br /&gt;
    &amp;lt;/aircraft&amp;gt;&lt;br /&gt;
 &amp;lt;/trafficlist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disecting the traffic file ==&lt;br /&gt;
&lt;br /&gt;
Here I will discuss the general structure of a traffic file in more detail. As discussed in the introduction, the traffic patterns are centered around aircraft and flights. Therefore, a minimal traffic file will consist of two sections: the aircraft definition and the flights section. In the next two sections, I will discuss each of these sections. &lt;br /&gt;
&lt;br /&gt;
== General Layout ==&lt;br /&gt;
&lt;br /&gt;
The general layout of each file should look like the above example.&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;trafficlist&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
 &amp;lt;/trafficlist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The general layout of each file should look like the above example. The first line contains a generic xml header, which is followed on the second line with a '''&amp;lt;trafficlist&amp;gt;''' statement. Also, the last line in the file should close off the trafficlist section using the '''&amp;lt;/trafficlist&amp;gt;''' statement. As will be illustrated below, between these two statements can be one or more aircraft definitions.&lt;br /&gt;
&lt;br /&gt;
== Defining the aircraft ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;trafficlist&amp;gt;&lt;br /&gt;
    &amp;lt;aircraft&amp;gt;&lt;br /&gt;
       &amp;lt;model&amp;gt;Aircraft/MD11/Models/KLMmd11-ai.xml&amp;lt;/model&amp;gt;&lt;br /&gt;
       &amp;lt;livery&amp;gt;KLM&amp;lt;/livery&amp;gt;&lt;br /&gt;
       &amp;lt;airline&amp;gt;KLM&amp;lt;/airline&amp;gt;&lt;br /&gt;
       &amp;lt;actype&amp;gt;MD11&amp;lt;/actype&amp;gt;&lt;br /&gt;
       &amp;lt;offset&amp;gt;19&amp;lt;/offset&amp;gt;&lt;br /&gt;
       &amp;lt;radius&amp;gt;39&amp;lt;/radius&amp;gt;&lt;br /&gt;
       &amp;lt;flighttype&amp;gt;gate&amp;lt;/flighttype&amp;gt;&lt;br /&gt;
       &amp;lt;performance-class&amp;gt;jet_transport&amp;lt;/performance-class&amp;gt;&lt;br /&gt;
       &amp;lt;registration&amp;gt;PH-KCA&amp;lt;/registration&amp;gt;&lt;br /&gt;
       &amp;lt;flight&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;/aircraft&amp;gt;&lt;br /&gt;
 &amp;lt;/trafficlist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The first lines inside the '''&amp;lt;aircraft&amp;gt;''' clause define the aircraft's performance characteristics.&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;model&amp;gt;''' Here is a path specified to the 3D model that should be used in FlightGear.&lt;br /&gt;
* '''&amp;lt;livery&amp;gt;''' This line is currently unused, and will likely remain unused. The original idea was to combine this with the '''&amp;lt;model&amp;gt;''' line (see above) to load a specific combination of aircraftype and paint scheme, but I abandoned that idea, because it didn't turn out to be very combatible with the existing FlightGear model loading code. &lt;br /&gt;
* '''&amp;lt;airline&amp;gt;''' This line refers to the airline operating the aircraft. This information is currently used by FlightGear to handle gate/parking assignments. Use the official 3-letter ICAO airline code here, in case of commercial traffic. This keyword is unlikely to be used for general aviation and military traffic. &lt;br /&gt;
* '''&amp;lt;actype&amp;gt;''' A description of the aircraft type reserved for future use in ATC.&lt;br /&gt;
* '''&amp;lt;offset&amp;gt;''' Ground offset of the 3D model. Not all aircraft 3D models are build using the same convention. Use this parameter to align the wheels with the ground. Notice that this parameter will probably become obsolete in the near future, because model view point references can also be done in the xml file that the '''&amp;lt;model&amp;gt;''' keyword refers to.&lt;br /&gt;
* '''&amp;lt;radius&amp;gt;''' An estimate of the aircraft's size. This is mainly used at airports for gate assignments.&lt;br /&gt;
* '''&amp;lt;flighttype&amp;gt;''' This line is also used for gate assignments and should be one of the following:&lt;br /&gt;
    '''ga''' (general aviation), &lt;br /&gt;
    '''cargo''' (cargo)&lt;br /&gt;
    '''gate''' (commercial passenger traffic) &lt;br /&gt;
In addtion, it is expected that a '''mil''' value will be valid sometime soon. In the near future, this keyword will also be used for runway assignments, so that general aviation, commercial, and military traffic will use different runways if that is part of the airport's operational procedures.&lt;br /&gt;
* '''&amp;lt;performance-class&amp;gt;''' This line is used to determine the performance characteristics of AI aircraft. This should match one of the performance classes that are predefined in FlightGear. Currently, the following performance classes are supported:&lt;br /&gt;
 &lt;br /&gt;
 '''light_aircraft''' (prop driven single or twin),&lt;br /&gt;
 '''ww2_fighter'''    (world war two fighter),&lt;br /&gt;
 '''jet_transport'''  (modern commercial jet),&lt;br /&gt;
 '''jet_fighter'''    (modern fighter aircraft)&lt;br /&gt;
 '''tanker'''         (tanker aircraft), or.&lt;br /&gt;
 '''ufo'''            (allows extreme accel/decel capabilities).&lt;br /&gt;
*'''&amp;lt;registration&amp;gt;''' The aircraft's tail number. Future versions of FlightGear will use this registration in ATC for general aviation traffic. For commercial traffic the registration number will likely remain unused.&lt;br /&gt;
&lt;br /&gt;
== Defining a flight ==&lt;br /&gt;
&lt;br /&gt;
The next series of lines within the '''&amp;lt;aircraft&amp;gt;''' section define the flights. Again, each flight is defined between the '''&amp;lt;flight&amp;gt;''' and '''&amp;lt;/flight&amp;gt;''' statements. For example, let's have a look at the first two &lt;br /&gt;
flights specified in our PH-KCA example. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- Day one: Amsterdam to San Fransisco, CA, USA --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0605&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;0/09:45:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;330&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;KSFO&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;0/20:55:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt; &lt;br /&gt;
       &amp;lt;/flight&amp;gt; &lt;br /&gt;
        &amp;lt;!-- Return Flight: Arrive the next day --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0606&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;KSFO&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;0/23:00:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;1/09:35:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The '''&amp;lt;flights&amp;gt;''' section is slightly more complex than the aircraft definition itself, because it has a few nested levels. The following keywords should be specified:&lt;br /&gt;
* '''&amp;lt;flight&amp;gt;''' All the relevant parameter should be specified between the '''&amp;lt;flight&amp;gt;&amp;lt;/flight&amp;gt;''' keywords.&lt;br /&gt;
* '''&amp;lt;callsign&amp;gt;''' The airline callsign used for ATC. If this is an airline flight it should be combination of the airline callsign (e.g. '''KLM''' for KLM, or '''Springbok''' for South African Airways), and the flight number (e.g. '''KLM0605''', or '''Springbok0033''').&lt;br /&gt;
* '''&amp;lt;fltrules&amp;gt;''' Can be ''IFR'' or ''VFR''. This is required or use in ATC, but currently not used. This is likely to change, however.&lt;br /&gt;
* '''&amp;lt;departure&amp;gt;''' Definition of the departure airport. This section should contain the '''&amp;lt;port&amp;gt;''' and '''&amp;lt;time&amp;gt;''' keywords.&lt;br /&gt;
* '''&amp;lt;cruise-alt&amp;gt;''' Cruising altitude for this flight. This is a bit of a simplyfication from the real world, where aircraft usually don't stay at the same cruise altitude throughout the flight. This behavior will probably also change in future versions. &lt;br /&gt;
* '''&amp;lt;arrival&amp;gt;''' Same as '''&amp;lt;departure&amp;gt;''', but now defining the port of arrival.&lt;br /&gt;
* '''&amp;lt;repeat&amp;gt;''' Repeat period. This can be either the keyword ''WEEK'', or a number followed by ''Hr''. ''WEEK'' means that the whole schedule repeats itself on a weekly basis. ''Hr'' means that the whole schedule repeats after the number of hours specified directly before it (e.g. ''24Hr'' means that the schedule repeats after 24 hours).&lt;br /&gt;
* '''&amp;lt;port&amp;gt;''' This should be the international ICAO airport code. This keyword should be specified only within the '''&amp;lt;departure&amp;gt;''' or '''&amp;lt;arrival&amp;gt;''' sections. As far as I know, here it should still be in upper case, although the FlightGear command line currently also supports lower case ICAO codes. &lt;br /&gt;
* '''&amp;lt;time&amp;gt;''' Used to specify the '''&amp;lt;departure&amp;gt;''' or '''&amp;lt;arrival&amp;gt;''' time. The format of this string is ''hour:minute:second''. Notice that departure day is optional and is specifically intended to be used in combination with a weekly repeating schedule. When used in combination with other schedules, results may be unpredicatble. Times should be in UTC. Weekdays start at sunday (0) and end at saturday (6).&lt;br /&gt;
&lt;br /&gt;
== Putting it all together: Including a traffic file ==&lt;br /&gt;
&lt;br /&gt;
After creating a traffic file, all we need to do is make sure FlightGear knows how to use this. In the next few sections, I will explain how to do this. &lt;br /&gt;
&lt;br /&gt;
== fgtraffic.xml ==&lt;br /&gt;
&lt;br /&gt;
If you use a current version of FlightGear cvs HEAD/ OpenSceneGraph, activating traffic is easy: Just copy the traffic file into the same directory as where the AI aircraft file resides (for example: data/AI/Aircraft/737). If you use an older version, or if you use the PLIB based version of FlightGear, traffic can be activated according to the following instructions.&lt;br /&gt;
&lt;br /&gt;
At startup, FlightGear (older versions, or CVS PLIB) reads a file called '''fgtraffic.xml'''. In order to let FlightGear use our newly built traffic file, all we need to do is add a reference to the new file. Suppose we saved our file as PH-KCA.xml, all that would be required would be to add the following line: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;traffic include=&amp;quot;&amp;lt;path&amp;gt;/PH-KCA.xml&amp;quot;, &lt;br /&gt;
&lt;br /&gt;
where '''&amp;lt;path&amp;gt;''' is the directory where the file is located, relative to the main '''Traffic''' directory. For example, fgtraffic could look like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;trafficlist&amp;gt;&lt;br /&gt;
    &amp;lt;traffic include=&amp;quot;KLM/KLM.xml&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;traffic include=&amp;quot;UAL/UAL.xml&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;traffic include=&amp;quot;general/KSFO/c172.xml&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/trafficlist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Organizing by airline ==&lt;br /&gt;
&lt;br /&gt;
Although the example above works and is perfectly legal, I would prefer to see the individual files grouped together by airline and aircraft type. One way to do this is to organize files by airline and within each airline by aircraft type. For example, we could group all KLM flights together. Then we bundle these into a file called \verb|KLM.xml|, which would look like the following:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;trafficlist&amp;gt;&lt;br /&gt;
    &amp;lt;airline include=&amp;quot;KLM/MD11/MD11.xml&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/trafficlist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This file currently contains only one line, which includes the '''MD11.xml''' group, but more could be added easily.&lt;br /&gt;
&lt;br /&gt;
== Organizing by aircraft type ==&lt;br /&gt;
&lt;br /&gt;
Finally, the '''MD11.xml''' file could look like this. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;trafficlist&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCA.xml&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCB.xml&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCC.xml&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCD.xml&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCE.xml&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCF.xml&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCG.xml&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/trafficlist&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
One final note on the organization of the schedules is that I'm consisdering changing the organization. In order to make the whole system more ''plug-and-play'' compatible, I'd like to add in the ability to drop traffic files right in a dedicated AI directory that FLightGear would automatically scan for new traffic files. Until those ideas are finally fleshed out, the current organisation is prbably likely to stay in place.&lt;br /&gt;
&lt;br /&gt;
== Ground networks: A technical perspective ==&lt;br /&gt;
&lt;br /&gt;
AI aircraft pickup taxiway information from an xml file that resides in &lt;br /&gt;
FlightGear's data directory. This is done on an airport by airport basis. the &lt;br /&gt;
precise location of this file is data/Airports/AI/[ICAO-id]/parking.xml. For &lt;br /&gt;
an example, see the groundnetwork for EHAM, which is found in &lt;br /&gt;
data/Airports/AI/EHAM/parking.xml. See the end of this message for a small &lt;br /&gt;
excerpt from this file.&lt;br /&gt;
&lt;br /&gt;
The first section of the file contains the parameters of the airport's parking &lt;br /&gt;
locations. This section is followed by a list of all the nodes in the ground &lt;br /&gt;
network, and the final section contains a list of segments or &amp;quot;arcs&amp;quot; as David &lt;br /&gt;
Luff called them initially, which basically describe which node is connected &lt;br /&gt;
to which other node. &lt;br /&gt;
&lt;br /&gt;
Each parking and ai node has a unique index number, which is used by the &lt;br /&gt;
segments to link the startup location and the taxiways together. Parkings and &lt;br /&gt;
AI nodes have the following parameters: &lt;br /&gt;
 - index (unique, consecutively numbered id)&lt;br /&gt;
 - lat (position in latitude)&lt;br /&gt;
 - lon (position in longitude)&lt;br /&gt;
 - name (name as found on airport charts: e.g. D23, or C1). &lt;br /&gt;
&lt;br /&gt;
Name is currently not used, Parking names will be used in future ATC, but AINode names will probably not be used except for some specific internal functions. &lt;br /&gt;
airlineCodes= list any (comma separated) ICAO airline codes here to specify &lt;br /&gt;
which airlines are allowed here. &lt;br /&gt;
-pushBack (used to determine whether departing aircraft can make left or right &lt;br /&gt;
turns after pushback&lt;br /&gt;
&lt;br /&gt;
In addition, each parking has a number of additional parameters:&lt;br /&gt;
* '''type:''' specifies what type of aircraft can use this parking bay: Valid values for this parameter are: ''cargo, gate'' (=usually intermediate to heavy airline traffic), ''ramp'' (=usually smaller regional jets and commuter aircraft), ''ga'' (=general aviation), and ''mil'' (=military). See the description of the '''&amp;lt;flighttype&amp;gt;''' parameter in the traffic pattern description above for a comparison.&lt;br /&gt;
* '''number:''' Currently unused, and likely to be removed.&lt;br /&gt;
* '''heading:''' the heading the aircraft parked in this bay.&lt;br /&gt;
*'''radius:''' a value used to determine whether the aircaft will fit in this bay: see also the description of the '''&amp;lt;radius&amp;gt;''' parameter in the traffic pattern description above. &lt;br /&gt;
*'''airlineCodes:''' a comma-separated list of ICAO airline codes used to indicate which airlines should park here. Leave this field blank if you want any aircraft to park here.&lt;br /&gt;
*'''pushBack:''' Currently Unused.&lt;br /&gt;
&lt;br /&gt;
Finally, the taxiway segments contain three parameters. &lt;br /&gt;
* '''begin''' (= the id of the parking or AINode this segment starts)&lt;br /&gt;
* '''end''' (= the id of the parking or AINode this segment ends)&lt;br /&gt;
* '''name''' (= name of the taxiway. Currently still unused)&lt;br /&gt;
&lt;br /&gt;
== Creating a ground network, a practical approach ==&lt;br /&gt;
&lt;br /&gt;
Okay that finishes the technical description of the parking file format. The &lt;br /&gt;
good news is that one probably doesn't need to know too much about the technical &lt;br /&gt;
side of the file structure to create a ground network. &lt;br /&gt;
&lt;br /&gt;
== TaxiDraw ==&lt;br /&gt;
&lt;br /&gt;
The CVS version of taxidraw (http://taxidraw.sourceforge.net/) has ground &lt;br /&gt;
network editing capabilities, and will in the short to intermediate term &lt;br /&gt;
probably be the best option to create a ground network for FlightGear.  &lt;br /&gt;
Notice that the ground editing facilities in TaxiDRaw are still rather new, and although the stability of this feature has increased dramatically over the last few weeks, there are still a few issues related to the undo function, so be prepared for a bit of frustration, and make regular backups. &lt;br /&gt;
&lt;br /&gt;
== Obtaining TaxiDraw ==&lt;br /&gt;
&lt;br /&gt;
I'm hoping that we can do a release of taxidraw fairly soon, so that the &lt;br /&gt;
groundnet editing capabilities will become easily accesible. Until that time, &lt;br /&gt;
linux users can try to check out a version of taxidraw from CVS by following &lt;br /&gt;
the instructions on http://taxidraw.sourceforge.net/#download&lt;br /&gt;
&lt;br /&gt;
Windows users can also do this either by using the free winCVS program or &lt;br /&gt;
using the free cygwin environment. &lt;br /&gt;
&lt;br /&gt;
== Getting good reference material ==&lt;br /&gt;
&lt;br /&gt;
The first step in preparation of creating a ground network consists of getting &lt;br /&gt;
some reference material. Ideally, You'd like to find a good satellite or arial image. If you can't find that, using a schematic diagram might also work. In most cases, using http://maps.google.com, and selecting the satellite imagery will work pretty well as reference. You can't save the google images, so importing them as a background image in taxidraw won't work. However, using these images as a reference and placing the parking notes at the approximate location indicated by the map will (at least for an initial version) give reasonable results.&lt;br /&gt;
&lt;br /&gt;
== Creating the network ==&lt;br /&gt;
&lt;br /&gt;
== Startup locations ==&lt;br /&gt;
&lt;br /&gt;
Once you have the reference material, it's time to start building the ground &lt;br /&gt;
network. I typically start by placing all the parkings first. There are two &lt;br /&gt;
ways to do this. 1) Using the mouse, choose [insert|Startup Location] from &lt;br /&gt;
the main menu. This will create a new startup location. Then left-click on it &lt;br /&gt;
and drag it to its desired location. 2) Move the mouse to the location where &lt;br /&gt;
you want to place the startup location and press the 's' key on the keyboard. &lt;br /&gt;
This places the startup location directly where the mouse is located. &lt;br /&gt;
&lt;br /&gt;
== AI Network Nodes ==&lt;br /&gt;
&lt;br /&gt;
Next you want to insert the AINodes, without connecting them yet. The &lt;br /&gt;
procedure is basically the same as placing the startup locations. Either &lt;br /&gt;
select [Insert| Add AI Network Node ] from the menu, or move the mouse to the &lt;br /&gt;
location where you want to place the node. Press the 'n' key to actually add &lt;br /&gt;
the node. &lt;br /&gt;
&lt;br /&gt;
== Connecting the nodes: Drawing the network ==&lt;br /&gt;
&lt;br /&gt;
Once you are finished adding all the nodes, and startup locations, it's time &lt;br /&gt;
to connect the nodes . This is the time to save your work and MAKE A BACKUP, &lt;br /&gt;
as the nodes connection code is not entirely stable yet. &lt;br /&gt;
&lt;br /&gt;
Connecting nodes can be done by switching the editor to arcing mode, by &lt;br /&gt;
pressing the 'm' key. The edit mode of taxidraw is indicated in the lower &lt;br /&gt;
right corner of the status bar. After pressing 'm' it should read ARC. If you &lt;br /&gt;
need to switch back to the standard edit mode press 'm' again. &lt;br /&gt;
&lt;br /&gt;
Making sure we are still in &amp;quot;ARC&amp;quot; mode, select the first node or parking  &lt;br /&gt;
you want to connect to the network by clicking on it. The node you have &lt;br /&gt;
clicked will be selected, and a red line with an arrow symbol will be drawn &lt;br /&gt;
between this node and the mouse cursor. Now, select the second node that you &lt;br /&gt;
wish to connect this node to. Click it with the mouse, and the red line will &lt;br /&gt;
now be drawn between the the two nodes. You have created a taxiroute. Now &lt;br /&gt;
repeat this process for all the nodes you want to connect.&lt;br /&gt;
&lt;br /&gt;
Note that taxi segments are unidirectional. If you want to create &lt;br /&gt;
bidirectional taxiways, make sure you not only connect node &amp;quot;1&amp;quot; to node &amp;quot;2&amp;quot; &lt;br /&gt;
but also to connect node &amp;quot;2&amp;quot; to node &amp;quot;1&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Second, notice also that once you have connected two nodes to each other, and &lt;br /&gt;
want to create a second taxiway that starts at the node that the previous &lt;br /&gt;
node ended, you have to select this node again, to become the first node in &lt;br /&gt;
the next taxiway.&lt;br /&gt;
&lt;br /&gt;
== Editing the startup location parameters ==&lt;br /&gt;
&lt;br /&gt;
Once you have created a ground network, you'll find that it probably won't &lt;br /&gt;
work yet in flightgear. The main reason for this is that the default gate &lt;br /&gt;
size is set to a fairly small size, and most aircraft won't fit into the &lt;br /&gt;
gate. Therefore, you'd need to edit the parking parameters. In addition, &lt;br /&gt;
you'd also need to give each parking a name, and a heading, and probably &lt;br /&gt;
airlines codes. Changing name, and heading can be done in taxidraw, by right &lt;br /&gt;
clicking on the startup location. This will bring up a dialog, in which you &lt;br /&gt;
can change latitude, longitude, heading, and name,  Once you're done editing, &lt;br /&gt;
click okay to accept the new values, or cancel to discard. &lt;br /&gt;
&lt;br /&gt;
Editing the starup location radius, type, airlineCodes, and pushBack &lt;br /&gt;
parameters is not yet possible in taxidraw. So changing these requires saving &lt;br /&gt;
the project and editing these using a texteditor. Once you save the project, this will be done in a file [filename].tpj (taxidraw project). The groundnetwork will be saved in a file named [filename]-groundnet.xml, which will be in the same folder as where you saved the project.&lt;br /&gt;
&lt;br /&gt;
You can edit the remaining parameters by loading this groundnet.xml file into &lt;br /&gt;
a text editor. Once you are done editing make sure you import these changes &lt;br /&gt;
into taxidraw immediately. Do this by going to [File| Import FlightGear AI &lt;br /&gt;
Network]. This will open a file selection dialog. Choose the file you just &lt;br /&gt;
edited and click okay. TaxiDraw will ask for confirmation to overwrite &lt;br /&gt;
existing ground network data and confirm this  by clicking on &amp;quot;yes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Copying the ground network into FlightGear's data directory ==&lt;br /&gt;
&lt;br /&gt;
Finally, once you have finished creating a groundnet work you can test it in &lt;br /&gt;
FlightGear. Create a directory in FlightGear's data/Airports/AI directory, &lt;br /&gt;
with the name of the ICAO code of your airport. For example &lt;br /&gt;
data/Airports/AI/EHAM. Next. locate the file [filename]-groundnetwork.xml and copy this to the directory you just created. Finally, rename the file you just copied to &amp;quot;parking.xml&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Testing the network ==&lt;br /&gt;
&lt;br /&gt;
Startup flightGear at the airport for wich you have just created the network, &lt;br /&gt;
and make sure you have traffic for that aircraft. FlightGear will check the &lt;br /&gt;
network and report errors on the console. Aircraft than can't be placed at &lt;br /&gt;
one of the parking locations will be placed at a default location. &lt;br /&gt;
&lt;br /&gt;
If the FlightGear AI system can't find a valid route between startup location &lt;br /&gt;
and runway, it will list which nodes are not connected and exit. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Appendix: ==&lt;br /&gt;
&lt;br /&gt;
An below is an example section from data/Airports/AI/EHAM/parking.xml&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;groundnet&amp;gt;&lt;br /&gt;
  &amp;lt;parkinglist&amp;gt;&lt;br /&gt;
    &amp;lt;Parking index=&amp;quot;0&amp;quot;&lt;br /&gt;
         type=&amp;quot;cargo&amp;quot;&lt;br /&gt;
         name=&amp;quot;R02&amp;quot;&lt;br /&gt;
         number=&amp;quot;1&amp;quot;&lt;br /&gt;
         lat=&amp;quot;N52 17.664&amp;quot;&lt;br /&gt;
         lon=&amp;quot;E04 44.527&amp;quot;&lt;br /&gt;
         heading=&amp;quot;328.8&amp;quot;&lt;br /&gt;
         radius=&amp;quot;43&amp;quot;&lt;br /&gt;
         airlineCodes=&amp;quot;NONE&amp;quot;&lt;br /&gt;
         pushBack=&amp;quot;left&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Parking index=&amp;quot;1&amp;quot;&lt;br /&gt;
         type=&amp;quot;cargo&amp;quot;&lt;br /&gt;
         name=&amp;quot;R04&amp;quot;&lt;br /&gt;
         number=&amp;quot;1&amp;quot;&lt;br /&gt;
         lat=&amp;quot;N52 17.682&amp;quot;&lt;br /&gt;
         lon=&amp;quot;E04 44.572&amp;quot;&lt;br /&gt;
         heading=&amp;quot;328.8&amp;quot;&lt;br /&gt;
         radius=&amp;quot;43&amp;quot;&lt;br /&gt;
         airlineCodes=&amp;quot;NONE&amp;quot;&lt;br /&gt;
         pushBack=&amp;quot;left&amp;quot;/&amp;gt;&lt;br /&gt;
 [SNIP] &lt;br /&gt;
    &amp;lt;Parking index=&amp;quot;198&amp;quot;&lt;br /&gt;
         type=&amp;quot;gate&amp;quot;&lt;br /&gt;
         name=&amp;quot;J80&amp;quot;&lt;br /&gt;
         number=&amp;quot;1&amp;quot;&lt;br /&gt;
         lat=&amp;quot;N52 18.678&amp;quot;&lt;br /&gt;
         lon=&amp;quot;E04 44.659&amp;quot;&lt;br /&gt;
         heading=&amp;quot;0&amp;quot;&lt;br /&gt;
         radius=&amp;quot;15&amp;quot;&lt;br /&gt;
         airlineCodes=&amp;quot;NONE&amp;quot;&lt;br /&gt;
         pushBack=&amp;quot;left&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/parkinglist&amp;gt;&lt;br /&gt;
  &amp;lt;TaxiNodes&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;199&amp;quot; lat=&amp;quot;N52 20.778&amp;quot; lon=&amp;quot;E04 42.626&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;200&amp;quot; lat=&amp;quot;N52 20.622&amp;quot; lon=&amp;quot;E04 42.771&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;201&amp;quot; lat=&amp;quot;N52 20.478&amp;quot; lon=&amp;quot;E04 42.592&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;202&amp;quot; lat=&amp;quot;N52 20.394&amp;quot; lon=&amp;quot;E04 42.685&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;203&amp;quot; lat=&amp;quot;N52 20.406&amp;quot; lon=&amp;quot;E04 42.754&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;204&amp;quot; lat=&amp;quot;N52 20.310&amp;quot; lon=&amp;quot;E04 42.740&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;205&amp;quot; lat=&amp;quot;N52 20.148&amp;quot; lon=&amp;quot;E04 42.565&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
 [SNIP]...&lt;br /&gt;
    &amp;lt;node index=&amp;quot;597&amp;quot; lat=&amp;quot;N52 18.666&amp;quot; lon=&amp;quot;E04 45.372&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;598&amp;quot; lat=&amp;quot;N52 18.678&amp;quot; lon=&amp;quot;E04 45.358&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;599&amp;quot; lat=&amp;quot;N52 18.678&amp;quot; lon=&amp;quot;E04 45.377&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/TaxiNodes&amp;gt;&lt;br /&gt;
  &amp;lt;TaxiWaySegments&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;237&amp;quot; end=&amp;quot;234&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;234&amp;quot; end=&amp;quot;239&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;239&amp;quot; end=&amp;quot;242&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;242&amp;quot; end=&amp;quot;245&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;369&amp;quot; end=&amp;quot;374&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;374&amp;quot; end=&amp;quot;369&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;370&amp;quot; end=&amp;quot;373&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;373&amp;quot; end=&amp;quot;370&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/TaxiWaySegments&amp;gt;&lt;br /&gt;
 &amp;lt;/groundnet&amp;gt;&lt;/div&gt;</summary>
		<author><name>Deskin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=AI_Traffic&amp;diff=3524</id>
		<title>AI Traffic</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=AI_Traffic&amp;diff=3524"/>
		<updated>2007-05-28T01:31:06Z</updated>

		<summary type="html">&lt;p&gt;Deskin: /* Defining the aircraft */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Interactive Traffic in FlightGear ==&lt;br /&gt;
&lt;br /&gt;
Starting with version 0.9.5, FlightGear has an interactive traffic system that is based on the AIModels subsystem, and which is currently under active development. This page aims to provide the required documentation needed to set up some traffic.&lt;br /&gt;
&lt;br /&gt;
In essence, setting-up the AI controlled traffic system involves three steps: &lt;br /&gt;
1. Create Traffic files, 2) Download and install the required AI Aircraft, and 3)Build ground networks for the Airports containing traffic.&lt;br /&gt;
&lt;br /&gt;
== Building Traffic Files ==&lt;br /&gt;
&lt;br /&gt;
Traffic patterns are stored in data files in extended markup language (.xml) format. Depending on version, these files are either stored in a sudirectory called '''Traffic''' in FlightGear's main data directory, hereafter referred to with it's technical name:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
${FGROOT}/Traffic&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or in the AI Aircraft's directory. Current FlightGear CVS (as of late December 2007) has its traffic files in the aircraft directories (e.g., in data/AI/Aircraft/737/, and older versions as well as the current PLIB built version of FlightGear have this file in &amp;lt;nowiki&amp;gt;${FGROOT}/Traffic&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
Each traffic pattern is built around two entities: Aircraft and Flights. Before discussing the details, lets start by exploring these two concepts a little further.&lt;br /&gt;
&lt;br /&gt;
== Some Details: TrafficManager, Aircraft, and Flights ==&lt;br /&gt;
&lt;br /&gt;
As in real life, AI traffic in FlightGear is centered around aircraft. In real life, a commercial airliner is put to use by operating on a series of scheduled flights, on a daily or weekly basis. Take for example the long haul routes that are flown by McDonnel Douglas MD11 aircraft. For instance, the MD11's operated by KLM  fly regularly between Amsterdam and various distant destinations, such as San Fransisco or Minneapolis in the United States, Vancouver or Montreal in Canada, Accra and Lagos in Africa, or New Delhi in India. Some of these routes are too long to complete a return flight in one day, such as the trip between Amsterdam and San Fransisco, which is basically an 11-hour flight one-way. So it would take 22 hours of just the flying time, and at least an additional two hour turn-around time at each airport. Therefore, in real-life, it is necessary to operate this aircraft on a series of routes, because other routes are  considerably shorter than the trip to San Fransisco. Therefore, the time lost on one route can be gained on another, averaging out to approximately one round-trip a day. &lt;br /&gt;
&lt;br /&gt;
In FlightGear, we wouldn't have to be so strictly considerate about the turnaround times as a real-world airline would, but in the not-so distant future, we also want to be able to see realisticly crowded terminals at our simulated airports, so considering the turnaround time in the schedules is a good thing. Therefore, most of the long-haul aircraft will need to be scheduled to fly more than one route. Hence, each AI aircraft has one or more routes assigned to it, which repeat on a weekly, daily, or hourly basis. &lt;br /&gt;
&lt;br /&gt;
The FlightGear traffic manager system, periodically checks the approximate position of a each aircraft in its database. This database is constructed on the basis of a routing table assigned to each aircraft. As in the real-world, when a route ends at one airport the next one has to start from the same airport as well. An important difference between the real world and the FlightGear traffic patterns is that while in the real world aircraft schedules are frequently rotated the FlightGear routes remain the same, unless the database is updated. Real aircraft require mainanance, and are therefore taken out of service periodically, FlightGear aircraft have the advantage that they do not require maintanance in this respect.&lt;br /&gt;
&lt;br /&gt;
== An example of a traffic file ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;trafficlist&amp;gt;&lt;br /&gt;
    &amp;lt;aircraft&amp;gt;&lt;br /&gt;
        &amp;lt;model&amp;gt;Aircraft/MD11/Models/KLMmd11-ai.xml&amp;lt;/model&amp;gt;&lt;br /&gt;
        &amp;lt;livery&amp;gt;KLM&amp;lt;/livery&amp;gt;&lt;br /&gt;
        &amp;lt;airline&amp;gt;KLM&amp;lt;/airline&amp;gt;&lt;br /&gt;
        &amp;lt;actype&amp;gt;MD11&amp;lt;/actype&amp;gt;&lt;br /&gt;
        &amp;lt;offset&amp;gt;19&amp;lt;/offset&amp;gt;&lt;br /&gt;
        &amp;lt;radius&amp;gt;39&amp;lt;/radius&amp;gt;&lt;br /&gt;
        &amp;lt;flighttype&amp;gt;gate&amp;lt;/flighttype&amp;gt;&lt;br /&gt;
        &amp;lt;performance-class&amp;gt;jet_transport&amp;lt;/performance-class&amp;gt;&lt;br /&gt;
        &amp;lt;registration&amp;gt;PH-KCA&amp;lt;/registration&amp;gt;&lt;br /&gt;
        &amp;lt;heavy&amp;gt;true&amp;lt;/heavy&amp;gt;&lt;br /&gt;
        &amp;lt;!-- Day one: Amsterdam to San Fransisco, CA, USA --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0605&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;0/09:45:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;330&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;KSFO&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;0/20:55:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
        &amp;lt;!-- Return Flight: Arrive the next day --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0606&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;KSFO&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;0/23:00:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;1/09:35:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
        &amp;lt;!-- Day two: Amsterdam to Accra, Ghana --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0589&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;1/12:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;330&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;DGAA&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;1/19:00:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
        &amp;lt;!-- Day two Return Flight: Arrive the next Day --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0590&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;DGAA&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;1/21:15:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;2/04:10:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
         &amp;lt;!-- Day three: Amsterdam to Vancouver, BC, Canada --&amp;gt;&lt;br /&gt;
         &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0681&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;2/08:25:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;330&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;CYVR&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;2/18:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
         &amp;lt;!-- Day three: return Flight: Arrive the next day --&amp;gt;&lt;br /&gt;
         &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0682&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;CYVR&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;2/20:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;330&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;3/05:40:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
         &amp;lt;!-- Day four: Amsterdam to Delhi, India --&amp;gt;&lt;br /&gt;
         &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0871&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;3/09:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;VIDP&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;3/17:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;    &lt;br /&gt;
         &amp;lt;!-- Day four: Return Flight: Arrive the next day --&amp;gt;&lt;br /&gt;
         &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0872&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;VIDP&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;3/19:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;350&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;4/04:00:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
         &amp;lt;!-- Day five: Amsterdam to Lagos, Nigeria --&amp;gt;&lt;br /&gt;
         &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0587&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;4/10:30:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;DNMM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;4/16:55:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;  &lt;br /&gt;
        &amp;lt;!-- Day five: Return Flight, Arrive the next day --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0588&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;DNMM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;4/21:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;5/06:10:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;         &lt;br /&gt;
        &amp;lt;!-- Day Six: Amsterdam to Montreal, Quebec, Canada --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0671&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;5/12:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;CYUL&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;5/19:50:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;     &lt;br /&gt;
        &amp;lt;!-- Day Six: Return Flight. Arrive the next day --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0672&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;CYUL&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;5/22:00:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;6/04:45:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;    &lt;br /&gt;
       &amp;lt;!-- Day Seven: Minneapolis/St. Paul, MN, USA --&amp;gt;&lt;br /&gt;
       &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0667&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;6/12:05:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;330&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;KMSP&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;6/20:50:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
       &amp;lt;!-- Day Seven: Return Flight, Arrive the next day. --&amp;gt;&lt;br /&gt;
       &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0668&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;KMSP&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;6/23:00:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;0/07:15:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;                &lt;br /&gt;
    &amp;lt;/aircraft&amp;gt;&lt;br /&gt;
 &amp;lt;/trafficlist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disecting the traffic file ==&lt;br /&gt;
&lt;br /&gt;
Here I will discuss the general structure of a traffic file in more detail. As discussed in the introduction, the traffic patterns are centered around aircraft and flights. Therefore, a minimal traffic file will consist of two sections: the aircraft definition and the flights section. In the next two sections, I will discuss each of these sections. &lt;br /&gt;
&lt;br /&gt;
== General Layout ==&lt;br /&gt;
&lt;br /&gt;
The general layout of each file should look like the above example.&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;trafficlist&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
 &amp;lt;/trafficlist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The general layout of each file should look like the above example. The first line contains a generic xml header, which is followed on the second line with a '''&amp;lt;trafficlist&amp;gt;''' statement. Also, the last line in the file should close off the trafficlist section using the '''&amp;lt;/trafficlist&amp;gt;''' statement. As will be illustrated below, between these two statements can be one or more aircraft definitions.&lt;br /&gt;
&lt;br /&gt;
== Defining the aircraft ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;trafficlist&amp;gt;&lt;br /&gt;
    &amp;lt;aircraft&amp;gt;&lt;br /&gt;
       &amp;lt;model&amp;gt;Aircraft/MD11/Models/KLMmd11-ai.xml&amp;lt;/model&amp;gt;&lt;br /&gt;
       &amp;lt;livery&amp;gt;KLM&amp;lt;/livery&amp;gt;&lt;br /&gt;
       &amp;lt;airline&amp;gt;KLM&amp;lt;/airline&amp;gt;&lt;br /&gt;
       &amp;lt;actype&amp;gt;MD11&amp;lt;/actype&amp;gt;&lt;br /&gt;
       &amp;lt;offset&amp;gt;19&amp;lt;/offset&amp;gt;&lt;br /&gt;
       &amp;lt;radius&amp;gt;39&amp;lt;/radius&amp;gt;&lt;br /&gt;
       &amp;lt;flighttype&amp;gt;gate&amp;lt;/flighttype&amp;gt;&lt;br /&gt;
       &amp;lt;performance-class&amp;gt;jet_transport&amp;lt;/performance-class&amp;gt;&lt;br /&gt;
       &amp;lt;registration&amp;gt;PH-KCA&amp;lt;/registration&amp;gt;&lt;br /&gt;
       &amp;lt;flight&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;/aircraft&amp;gt;&lt;br /&gt;
 &amp;lt;/trafficlist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The first lines inside the '''&amp;lt;aircraft&amp;gt;''' clause define the aircraft's performance characteristics.&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;model&amp;gt;''' Here is a path specified to the 3D model that should be used in FlightGear.&lt;br /&gt;
* '''&amp;lt;livery&amp;gt;''' This line is currently unused, and will likely remain unused. The original idea was to combine this with the '''&amp;lt;model&amp;gt;''' line (see above) to load a specific combination of aircraftype and paint scheme, but I abandoned that idea, because it didn't turn out to be very combatible with the existing FlightGear model loading code. &lt;br /&gt;
* '''&amp;lt;airline&amp;gt;''' This line refers to the airline operating the aircraft. This information is currently used by FlightGear to handle gate/parking assignments. Use the official 3-letter ICAO airline code here, in case of commercial traffic. This keyword is unlikely to be used for general aviation and military traffic. &lt;br /&gt;
* '''&amp;lt;actype&amp;gt;''' A description of the aircraft type reserved for future use in ATC.&lt;br /&gt;
* '''&amp;lt;offset&amp;gt;''' Ground offset of the 3D model. Not all aircraft 3D models are build using the same convention. Use this parameter to align the wheels with the ground. Notice that this parameter will probably become obsolete in the near future, because model view point references can also be done in the xml file that the '''&amp;lt;model&amp;gt;''' keyword refers to.&lt;br /&gt;
* '''&amp;lt;radius&amp;gt;''' An estimate of the aircraft's size. This is mainly used at airports for gate assignments.&lt;br /&gt;
* '''&amp;lt;flighttype&amp;gt;''' This line is also used for gate assignments and should be &lt;br /&gt;
    '''ga''' (general aviation), &lt;br /&gt;
    '''cargo''' (cargo)&lt;br /&gt;
    '''gate''' (commercial passenger traffic) &lt;br /&gt;
In addtion, it is expected that a '''mil''' value will be valid sometime soon. In the near future, this keyword will also be used for runway assignments, so that general aviation, commercial, and military traffic will use different runways if that is part of the airport's operational procedures.&lt;br /&gt;
* '''&amp;lt;performance-class&amp;gt;''' This line is used to determine the performance characteristics of AI aircraft. This should match one of the performance classes that are predefined in FlightGear. Currently, the following performance classes are supported:&lt;br /&gt;
 &lt;br /&gt;
 '''light_aircraft''' (prop driven single or twin),&lt;br /&gt;
 '''ww2_fighter'''    (world war two fighter),&lt;br /&gt;
 '''jet_transport'''  (modern commercial jet),&lt;br /&gt;
 '''jet_fighter'''    (modern fighter aircraft)&lt;br /&gt;
 '''tanker'''         (tanker aircraft), or.&lt;br /&gt;
 '''ufo'''            (allows extreme accel/decel capabilities).&lt;br /&gt;
*'''&amp;lt;registration&amp;gt;''' The aircraft's tail number. Future versions of FlightGear will use this registration in ATC for general aviation traffic. For commercial traffic the registration number will likely remain unused.&lt;br /&gt;
&lt;br /&gt;
== Defining a flight ==&lt;br /&gt;
&lt;br /&gt;
The next series of lines within the '''&amp;lt;aircraft&amp;gt;''' section define the flights. Again, each flight is defined between the '''&amp;lt;flight&amp;gt;''' and '''&amp;lt;/flight&amp;gt;''' statements. For example, let's have a look at the first two &lt;br /&gt;
flights specified in our PH-KCA example. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- Day one: Amsterdam to San Fransisco, CA, USA --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0605&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;0/09:45:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;330&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;KSFO&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;0/20:55:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt; &lt;br /&gt;
       &amp;lt;/flight&amp;gt; &lt;br /&gt;
        &amp;lt;!-- Return Flight: Arrive the next day --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0606&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;KSFO&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;0/23:00:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;1/09:35:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The '''&amp;lt;flights&amp;gt;''' section is slightly more complex than the aircraft definition itself, because it has a few nested levels. The following keywords should be specified:&lt;br /&gt;
* '''&amp;lt;flight&amp;gt;''' All the relevant parameter should be specified between the '''&amp;lt;flight&amp;gt;&amp;lt;/flight&amp;gt;''' keywords.&lt;br /&gt;
* '''&amp;lt;callsign&amp;gt;''' The airline callsign used for ATC. If this is an airline flight it should be combination of the airline callsign (e.g. '''KLM''' for KLM, or '''Springbok''' for South African Airways), and the flight number (e.g. '''KLM0605''', or '''Springbok0033''').&lt;br /&gt;
* '''&amp;lt;fltrules&amp;gt;''' Can be ''IFR'' or ''VFR''. This is required or use in ATC, but currently not used. This is likely to change, however.&lt;br /&gt;
* '''&amp;lt;departure&amp;gt;''' Definition of the departure airport. This section should contain the '''&amp;lt;port&amp;gt;''' and '''&amp;lt;time&amp;gt;''' keywords.&lt;br /&gt;
* '''&amp;lt;cruise-alt&amp;gt;''' Cruising altitude for this flight. This is a bit of a simplyfication from the real world, where aircraft usually don't stay at the same cruise altitude throughout the flight. This behavior will probably also change in future versions. &lt;br /&gt;
* '''&amp;lt;arrival&amp;gt;''' Same as '''&amp;lt;departure&amp;gt;''', but now defining the port of arrival.&lt;br /&gt;
* '''&amp;lt;repeat&amp;gt;''' Repeat period. This can be either the keyword ''WEEK'', or a number followed by ''Hr''. ''WEEK'' means that the whole schedule repeats itself on a weekly basis. ''Hr'' means that the whole schedule repeats after the number of hours specified directly before it (e.g. ''24Hr'' means that the schedule repeats after 24 hours).&lt;br /&gt;
* '''&amp;lt;port&amp;gt;''' This should be the international ICAO airport code. This keyword should be specified only within the '''&amp;lt;departure&amp;gt;''' or '''&amp;lt;arrival&amp;gt;''' sections. As far as I know, here it should still be in upper case, although the FlightGear command line currently also supports lower case ICAO codes. &lt;br /&gt;
* '''&amp;lt;time&amp;gt;''' Used to specify the '''&amp;lt;departure&amp;gt;''' or '''&amp;lt;arrival&amp;gt;''' time. The format of this string is ''hour:minute:second''. Notice that departure day is optional and is specifically intended to be used in combination with a weekly repeating schedule. When used in combination with other schedules, results may be unpredicatble. Times should be in UTC. Weekdays start at sunday (0) and end at saturday (6).&lt;br /&gt;
&lt;br /&gt;
== Putting it all together: Including a traffic file ==&lt;br /&gt;
&lt;br /&gt;
After creating a traffic file, all we need to do is make sure FlightGear knows how to use this. In the next few sections, I will explain how to do this. &lt;br /&gt;
&lt;br /&gt;
== fgtraffic.xml ==&lt;br /&gt;
&lt;br /&gt;
If you use a current version of FlightGear cvs HEAD/ OpenSceneGraph, activating traffic is easy: Just copy the traffic file into the same directory as where the AI aircraft file resides (for example: data/AI/Aircraft/737). If you use an older version, or if you use the PLIB based version of FlightGear, traffic can be activated according to the following instructions.&lt;br /&gt;
&lt;br /&gt;
At startup, FlightGear (older versions, or CVS PLIB) reads a file called '''fgtraffic.xml'''. In order to let FlightGear use our newly built traffic file, all we need to do is add a reference to the new file. Suppose we saved our file as PH-KCA.xml, all that would be required would be to add the following line: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;traffic include=&amp;quot;&amp;lt;path&amp;gt;/PH-KCA.xml&amp;quot;, &lt;br /&gt;
&lt;br /&gt;
where '''&amp;lt;path&amp;gt;''' is the directory where the file is located, relative to the main '''Traffic''' directory. For example, fgtraffic could look like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;trafficlist&amp;gt;&lt;br /&gt;
    &amp;lt;traffic include=&amp;quot;KLM/KLM.xml&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;traffic include=&amp;quot;UAL/UAL.xml&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;traffic include=&amp;quot;general/KSFO/c172.xml&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/trafficlist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Organizing by airline ==&lt;br /&gt;
&lt;br /&gt;
Although the example above works and is perfectly legal, I would prefer to see the individual files grouped together by airline and aircraft type. One way to do this is to organize files by airline and within each airline by aircraft type. For example, we could group all KLM flights together. Then we bundle these into a file called \verb|KLM.xml|, which would look like the following:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;trafficlist&amp;gt;&lt;br /&gt;
    &amp;lt;airline include=&amp;quot;KLM/MD11/MD11.xml&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/trafficlist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This file currently contains only one line, which includes the '''MD11.xml''' group, but more could be added easily.&lt;br /&gt;
&lt;br /&gt;
== Organizing by aircraft type ==&lt;br /&gt;
&lt;br /&gt;
Finally, the '''MD11.xml''' file could look like this. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;trafficlist&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCA.xml&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCB.xml&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCC.xml&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCD.xml&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCE.xml&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCF.xml&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCG.xml&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/trafficlist&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
One final note on the organization of the schedules is that I'm consisdering changing the organization. In order to make the whole system more ''plug-and-play'' compatible, I'd like to add in the ability to drop traffic files right in a dedicated AI directory that FLightGear would automatically scan for new traffic files. Until those ideas are finally fleshed out, the current organisation is prbably likely to stay in place.&lt;br /&gt;
&lt;br /&gt;
== Ground networks: A technical perspective ==&lt;br /&gt;
&lt;br /&gt;
AI aircraft pickup taxiway information from an xml file that resides in &lt;br /&gt;
FlightGear's data directory. This is done on an airport by airport basis. the &lt;br /&gt;
precise location of this file is data/Airports/AI/[ICAO-id]/parking.xml. For &lt;br /&gt;
an example, see the groundnetwork for EHAM, which is found in &lt;br /&gt;
data/Airports/AI/EHAM/parking.xml. See the end of this message for a small &lt;br /&gt;
excerpt from this file.&lt;br /&gt;
&lt;br /&gt;
The first section of the file contains the parameters of the airport's parking &lt;br /&gt;
locations. This section is followed by a list of all the nodes in the ground &lt;br /&gt;
network, and the final section contains a list of segments or &amp;quot;arcs&amp;quot; as David &lt;br /&gt;
Luff called them initially, which basically describe which node is connected &lt;br /&gt;
to which other node. &lt;br /&gt;
&lt;br /&gt;
Each parking and ai node has a unique index number, which is used by the &lt;br /&gt;
segments to link the startup location and the taxiways together. Parkings and &lt;br /&gt;
AI nodes have the following parameters: &lt;br /&gt;
 - index (unique, consecutively numbered id)&lt;br /&gt;
 - lat (position in latitude)&lt;br /&gt;
 - lon (position in longitude)&lt;br /&gt;
 - name (name as found on airport charts: e.g. D23, or C1). &lt;br /&gt;
&lt;br /&gt;
Name is currently not used, Parking names will be used in future ATC, but AINode names will probably not be used except for some specific internal functions. &lt;br /&gt;
airlineCodes= list any (comma separated) ICAO airline codes here to specify &lt;br /&gt;
which airlines are allowed here. &lt;br /&gt;
-pushBack (used to determine whether departing aircraft can make left or right &lt;br /&gt;
turns after pushback&lt;br /&gt;
&lt;br /&gt;
In addition, each parking has a number of additional parameters:&lt;br /&gt;
* '''type:''' specifies what type of aircraft can use this parking bay: Valid values for this parameter are: ''cargo, gate'' (=usually intermediate to heavy airline traffic), ''ramp'' (=usually smaller regional jets and commuter aircraft), ''ga'' (=general aviation), and ''mil'' (=military). See the description of the '''&amp;lt;flighttype&amp;gt;''' parameter in the traffic pattern description above for a comparison.&lt;br /&gt;
* '''number:''' Currently unused, and likely to be removed.&lt;br /&gt;
* '''heading:''' the heading the aircraft parked in this bay.&lt;br /&gt;
*'''radius:''' a value used to determine whether the aircaft will fit in this bay: see also the description of the '''&amp;lt;radius&amp;gt;''' parameter in the traffic pattern description above. &lt;br /&gt;
*'''airlineCodes:''' a comma-separated list of ICAO airline codes used to indicate which airlines should park here. Leave this field blank if you want any aircraft to park here.&lt;br /&gt;
*'''pushBack:''' Currently Unused.&lt;br /&gt;
&lt;br /&gt;
Finally, the taxiway segments contain three parameters. &lt;br /&gt;
* '''begin''' (= the id of the parking or AINode this segment starts)&lt;br /&gt;
* '''end''' (= the id of the parking or AINode this segment ends)&lt;br /&gt;
* '''name''' (= name of the taxiway. Currently still unused)&lt;br /&gt;
&lt;br /&gt;
== Creating a ground network, a practical approach ==&lt;br /&gt;
&lt;br /&gt;
Okay that finishes the technical description of the parking file format. The &lt;br /&gt;
good news is that one probably doesn't need to know too much about the technical &lt;br /&gt;
side of the file structure to create a ground network. &lt;br /&gt;
&lt;br /&gt;
== TaxiDraw ==&lt;br /&gt;
&lt;br /&gt;
The CVS version of taxidraw (http://taxidraw.sourceforge.net/) has ground &lt;br /&gt;
network editing capabilities, and will in the short to intermediate term &lt;br /&gt;
probably be the best option to create a ground network for FlightGear.  &lt;br /&gt;
Notice that the ground editing facilities in TaxiDRaw are still rather new, and although the stability of this feature has increased dramatically over the last few weeks, there are still a few issues related to the undo function, so be prepared for a bit of frustration, and make regular backups. &lt;br /&gt;
&lt;br /&gt;
== Obtaining TaxiDraw ==&lt;br /&gt;
&lt;br /&gt;
I'm hoping that we can do a release of taxidraw fairly soon, so that the &lt;br /&gt;
groundnet editing capabilities will become easily accesible. Until that time, &lt;br /&gt;
linux users can try to check out a version of taxidraw from CVS by following &lt;br /&gt;
the instructions on http://taxidraw.sourceforge.net/#download&lt;br /&gt;
&lt;br /&gt;
Windows users can also do this either by using the free winCVS program or &lt;br /&gt;
using the free cygwin environment. &lt;br /&gt;
&lt;br /&gt;
== Getting good reference material ==&lt;br /&gt;
&lt;br /&gt;
The first step in preparation of creating a ground network consists of getting &lt;br /&gt;
some reference material. Ideally, You'd like to find a good satellite or arial image. If you can't find that, using a schematic diagram might also work. In most cases, using http://maps.google.com, and selecting the satellite imagery will work pretty well as reference. You can't save the google images, so importing them as a background image in taxidraw won't work. However, using these images as a reference and placing the parking notes at the approximate location indicated by the map will (at least for an initial version) give reasonable results.&lt;br /&gt;
&lt;br /&gt;
== Creating the network ==&lt;br /&gt;
&lt;br /&gt;
== Startup locations ==&lt;br /&gt;
&lt;br /&gt;
Once you have the reference material, it's time to start building the ground &lt;br /&gt;
network. I typically start by placing all the parkings first. There are two &lt;br /&gt;
ways to do this. 1) Using the mouse, choose [insert|Startup Location] from &lt;br /&gt;
the main menu. This will create a new startup location. Then left-click on it &lt;br /&gt;
and drag it to its desired location. 2) Move the mouse to the location where &lt;br /&gt;
you want to place the startup location and press the 's' key on the keyboard. &lt;br /&gt;
This places the startup location directly where the mouse is located. &lt;br /&gt;
&lt;br /&gt;
== AI Network Nodes ==&lt;br /&gt;
&lt;br /&gt;
Next you want to insert the AINodes, without connecting them yet. The &lt;br /&gt;
procedure is basically the same as placing the startup locations. Either &lt;br /&gt;
select [Insert| Add AI Network Node ] from the menu, or move the mouse to the &lt;br /&gt;
location where you want to place the node. Press the 'n' key to actually add &lt;br /&gt;
the node. &lt;br /&gt;
&lt;br /&gt;
== Connecting the nodes: Drawing the network ==&lt;br /&gt;
&lt;br /&gt;
Once you are finished adding all the nodes, and startup locations, it's time &lt;br /&gt;
to connect the nodes . This is the time to save your work and MAKE A BACKUP, &lt;br /&gt;
as the nodes connection code is not entirely stable yet. &lt;br /&gt;
&lt;br /&gt;
Connecting nodes can be done by switching the editor to arcing mode, by &lt;br /&gt;
pressing the 'm' key. The edit mode of taxidraw is indicated in the lower &lt;br /&gt;
right corner of the status bar. After pressing 'm' it should read ARC. If you &lt;br /&gt;
need to switch back to the standard edit mode press 'm' again. &lt;br /&gt;
&lt;br /&gt;
Making sure we are still in &amp;quot;ARC&amp;quot; mode, select the first node or parking  &lt;br /&gt;
you want to connect to the network by clicking on it. The node you have &lt;br /&gt;
clicked will be selected, and a red line with an arrow symbol will be drawn &lt;br /&gt;
between this node and the mouse cursor. Now, select the second node that you &lt;br /&gt;
wish to connect this node to. Click it with the mouse, and the red line will &lt;br /&gt;
now be drawn between the the two nodes. You have created a taxiroute. Now &lt;br /&gt;
repeat this process for all the nodes you want to connect.&lt;br /&gt;
&lt;br /&gt;
Note that taxi segments are unidirectional. If you want to create &lt;br /&gt;
bidirectional taxiways, make sure you not only connect node &amp;quot;1&amp;quot; to node &amp;quot;2&amp;quot; &lt;br /&gt;
but also to connect node &amp;quot;2&amp;quot; to node &amp;quot;1&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Second, notice also that once you have connected two nodes to each other, and &lt;br /&gt;
want to create a second taxiway that starts at the node that the previous &lt;br /&gt;
node ended, you have to select this node again, to become the first node in &lt;br /&gt;
the next taxiway.&lt;br /&gt;
&lt;br /&gt;
== Editing the startup location parameters ==&lt;br /&gt;
&lt;br /&gt;
Once you have created a ground network, you'll find that it probably won't &lt;br /&gt;
work yet in flightgear. The main reason for this is that the default gate &lt;br /&gt;
size is set to a fairly small size, and most aircraft won't fit into the &lt;br /&gt;
gate. Therefore, you'd need to edit the parking parameters. In addition, &lt;br /&gt;
you'd also need to give each parking a name, and a heading, and probably &lt;br /&gt;
airlines codes. Changing name, and heading can be done in taxidraw, by right &lt;br /&gt;
clicking on the startup location. This will bring up a dialog, in which you &lt;br /&gt;
can change latitude, longitude, heading, and name,  Once you're done editing, &lt;br /&gt;
click okay to accept the new values, or cancel to discard. &lt;br /&gt;
&lt;br /&gt;
Editing the starup location radius, type, airlineCodes, and pushBack &lt;br /&gt;
parameters is not yet possible in taxidraw. So changing these requires saving &lt;br /&gt;
the project and editing these using a texteditor. Once you save the project, this will be done in a file [filename].tpj (taxidraw project). The groundnetwork will be saved in a file named [filename]-groundnet.xml, which will be in the same folder as where you saved the project.&lt;br /&gt;
&lt;br /&gt;
You can edit the remaining parameters by loading this groundnet.xml file into &lt;br /&gt;
a text editor. Once you are done editing make sure you import these changes &lt;br /&gt;
into taxidraw immediately. Do this by going to [File| Import FlightGear AI &lt;br /&gt;
Network]. This will open a file selection dialog. Choose the file you just &lt;br /&gt;
edited and click okay. TaxiDraw will ask for confirmation to overwrite &lt;br /&gt;
existing ground network data and confirm this  by clicking on &amp;quot;yes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Copying the ground network into FlightGear's data directory ==&lt;br /&gt;
&lt;br /&gt;
Finally, once you have finished creating a groundnet work you can test it in &lt;br /&gt;
FlightGear. Create a directory in FlightGear's data/Airports/AI directory, &lt;br /&gt;
with the name of the ICAO code of your airport. For example &lt;br /&gt;
data/Airports/AI/EHAM. Next. locate the file [filename]-groundnetwork.xml and copy this to the directory you just created. Finally, rename the file you just copied to &amp;quot;parking.xml&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Testing the network ==&lt;br /&gt;
&lt;br /&gt;
Startup flightGear at the airport for wich you have just created the network, &lt;br /&gt;
and make sure you have traffic for that aircraft. FlightGear will check the &lt;br /&gt;
network and report errors on the console. Aircraft than can't be placed at &lt;br /&gt;
one of the parking locations will be placed at a default location. &lt;br /&gt;
&lt;br /&gt;
If the FlightGear AI system can't find a valid route between startup location &lt;br /&gt;
and runway, it will list which nodes are not connected and exit. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Appendix: ==&lt;br /&gt;
&lt;br /&gt;
An below is an example section from data/Airports/AI/EHAM/parking.xml&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;groundnet&amp;gt;&lt;br /&gt;
  &amp;lt;parkinglist&amp;gt;&lt;br /&gt;
    &amp;lt;Parking index=&amp;quot;0&amp;quot;&lt;br /&gt;
         type=&amp;quot;cargo&amp;quot;&lt;br /&gt;
         name=&amp;quot;R02&amp;quot;&lt;br /&gt;
         number=&amp;quot;1&amp;quot;&lt;br /&gt;
         lat=&amp;quot;N52 17.664&amp;quot;&lt;br /&gt;
         lon=&amp;quot;E04 44.527&amp;quot;&lt;br /&gt;
         heading=&amp;quot;328.8&amp;quot;&lt;br /&gt;
         radius=&amp;quot;43&amp;quot;&lt;br /&gt;
         airlineCodes=&amp;quot;NONE&amp;quot;&lt;br /&gt;
         pushBack=&amp;quot;left&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Parking index=&amp;quot;1&amp;quot;&lt;br /&gt;
         type=&amp;quot;cargo&amp;quot;&lt;br /&gt;
         name=&amp;quot;R04&amp;quot;&lt;br /&gt;
         number=&amp;quot;1&amp;quot;&lt;br /&gt;
         lat=&amp;quot;N52 17.682&amp;quot;&lt;br /&gt;
         lon=&amp;quot;E04 44.572&amp;quot;&lt;br /&gt;
         heading=&amp;quot;328.8&amp;quot;&lt;br /&gt;
         radius=&amp;quot;43&amp;quot;&lt;br /&gt;
         airlineCodes=&amp;quot;NONE&amp;quot;&lt;br /&gt;
         pushBack=&amp;quot;left&amp;quot;/&amp;gt;&lt;br /&gt;
 [SNIP] &lt;br /&gt;
    &amp;lt;Parking index=&amp;quot;198&amp;quot;&lt;br /&gt;
         type=&amp;quot;gate&amp;quot;&lt;br /&gt;
         name=&amp;quot;J80&amp;quot;&lt;br /&gt;
         number=&amp;quot;1&amp;quot;&lt;br /&gt;
         lat=&amp;quot;N52 18.678&amp;quot;&lt;br /&gt;
         lon=&amp;quot;E04 44.659&amp;quot;&lt;br /&gt;
         heading=&amp;quot;0&amp;quot;&lt;br /&gt;
         radius=&amp;quot;15&amp;quot;&lt;br /&gt;
         airlineCodes=&amp;quot;NONE&amp;quot;&lt;br /&gt;
         pushBack=&amp;quot;left&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/parkinglist&amp;gt;&lt;br /&gt;
  &amp;lt;TaxiNodes&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;199&amp;quot; lat=&amp;quot;N52 20.778&amp;quot; lon=&amp;quot;E04 42.626&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;200&amp;quot; lat=&amp;quot;N52 20.622&amp;quot; lon=&amp;quot;E04 42.771&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;201&amp;quot; lat=&amp;quot;N52 20.478&amp;quot; lon=&amp;quot;E04 42.592&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;202&amp;quot; lat=&amp;quot;N52 20.394&amp;quot; lon=&amp;quot;E04 42.685&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;203&amp;quot; lat=&amp;quot;N52 20.406&amp;quot; lon=&amp;quot;E04 42.754&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;204&amp;quot; lat=&amp;quot;N52 20.310&amp;quot; lon=&amp;quot;E04 42.740&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;205&amp;quot; lat=&amp;quot;N52 20.148&amp;quot; lon=&amp;quot;E04 42.565&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
 [SNIP]...&lt;br /&gt;
    &amp;lt;node index=&amp;quot;597&amp;quot; lat=&amp;quot;N52 18.666&amp;quot; lon=&amp;quot;E04 45.372&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;598&amp;quot; lat=&amp;quot;N52 18.678&amp;quot; lon=&amp;quot;E04 45.358&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;599&amp;quot; lat=&amp;quot;N52 18.678&amp;quot; lon=&amp;quot;E04 45.377&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/TaxiNodes&amp;gt;&lt;br /&gt;
  &amp;lt;TaxiWaySegments&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;237&amp;quot; end=&amp;quot;234&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;234&amp;quot; end=&amp;quot;239&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;239&amp;quot; end=&amp;quot;242&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;242&amp;quot; end=&amp;quot;245&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;369&amp;quot; end=&amp;quot;374&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;374&amp;quot; end=&amp;quot;369&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;370&amp;quot; end=&amp;quot;373&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;373&amp;quot; end=&amp;quot;370&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/TaxiWaySegments&amp;gt;&lt;br /&gt;
 &amp;lt;/groundnet&amp;gt;&lt;/div&gt;</summary>
		<author><name>Deskin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=AI_Traffic&amp;diff=3523</id>
		<title>AI Traffic</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=AI_Traffic&amp;diff=3523"/>
		<updated>2007-05-28T01:26:29Z</updated>

		<summary type="html">&lt;p&gt;Deskin: /* Interactive Traffic in FlightGear */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Interactive Traffic in FlightGear ==&lt;br /&gt;
&lt;br /&gt;
Starting with version 0.9.5, FlightGear has an interactive traffic system that is based on the AIModels subsystem, and which is currently under active development. This page aims to provide the required documentation needed to set up some traffic.&lt;br /&gt;
&lt;br /&gt;
In essence, setting-up the AI controlled traffic system involves three steps: &lt;br /&gt;
1. Create Traffic files, 2) Download and install the required AI Aircraft, and 3)Build ground networks for the Airports containing traffic.&lt;br /&gt;
&lt;br /&gt;
== Building Traffic Files ==&lt;br /&gt;
&lt;br /&gt;
Traffic patterns are stored in data files in extended markup language (.xml) format. Depending on version, these files are either stored in a sudirectory called '''Traffic''' in FlightGear's main data directory, hereafter referred to with it's technical name:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
${FGROOT}/Traffic&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or in the AI Aircraft's directory. Current FlightGear CVS (as of late December 2007) has its traffic files in the aircraft directories (e.g., in data/AI/Aircraft/737/, and older versions as well as the current PLIB built version of FlightGear have this file in &amp;lt;nowiki&amp;gt;${FGROOT}/Traffic&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
Each traffic pattern is built around two entities: Aircraft and Flights. Before discussing the details, lets start by exploring these two concepts a little further.&lt;br /&gt;
&lt;br /&gt;
== Some Details: TrafficManager, Aircraft, and Flights ==&lt;br /&gt;
&lt;br /&gt;
As in real life, AI traffic in FlightGear is centered around aircraft. In real life, a commercial airliner is put to use by operating on a series of scheduled flights, on a daily or weekly basis. Take for example the long haul routes that are flown by McDonnel Douglas MD11 aircraft. For instance, the MD11's operated by KLM  fly regularly between Amsterdam and various distant destinations, such as San Fransisco or Minneapolis in the United States, Vancouver or Montreal in Canada, Accra and Lagos in Africa, or New Delhi in India. Some of these routes are too long to complete a return flight in one day, such as the trip between Amsterdam and San Fransisco, which is basically an 11-hour flight one-way. So it would take 22 hours of just the flying time, and at least an additional two hour turn-around time at each airport. Therefore, in real-life, it is necessary to operate this aircraft on a series of routes, because other routes are  considerably shorter than the trip to San Fransisco. Therefore, the time lost on one route can be gained on another, averaging out to approximately one round-trip a day. &lt;br /&gt;
&lt;br /&gt;
In FlightGear, we wouldn't have to be so strictly considerate about the turnaround times as a real-world airline would, but in the not-so distant future, we also want to be able to see realisticly crowded terminals at our simulated airports, so considering the turnaround time in the schedules is a good thing. Therefore, most of the long-haul aircraft will need to be scheduled to fly more than one route. Hence, each AI aircraft has one or more routes assigned to it, which repeat on a weekly, daily, or hourly basis. &lt;br /&gt;
&lt;br /&gt;
The FlightGear traffic manager system, periodically checks the approximate position of a each aircraft in its database. This database is constructed on the basis of a routing table assigned to each aircraft. As in the real-world, when a route ends at one airport the next one has to start from the same airport as well. An important difference between the real world and the FlightGear traffic patterns is that while in the real world aircraft schedules are frequently rotated the FlightGear routes remain the same, unless the database is updated. Real aircraft require mainanance, and are therefore taken out of service periodically, FlightGear aircraft have the advantage that they do not require maintanance in this respect.&lt;br /&gt;
&lt;br /&gt;
== An example of a traffic file ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;trafficlist&amp;gt;&lt;br /&gt;
    &amp;lt;aircraft&amp;gt;&lt;br /&gt;
        &amp;lt;model&amp;gt;Aircraft/MD11/Models/KLMmd11-ai.xml&amp;lt;/model&amp;gt;&lt;br /&gt;
        &amp;lt;livery&amp;gt;KLM&amp;lt;/livery&amp;gt;&lt;br /&gt;
        &amp;lt;airline&amp;gt;KLM&amp;lt;/airline&amp;gt;&lt;br /&gt;
        &amp;lt;actype&amp;gt;MD11&amp;lt;/actype&amp;gt;&lt;br /&gt;
        &amp;lt;offset&amp;gt;19&amp;lt;/offset&amp;gt;&lt;br /&gt;
        &amp;lt;radius&amp;gt;39&amp;lt;/radius&amp;gt;&lt;br /&gt;
        &amp;lt;flighttype&amp;gt;gate&amp;lt;/flighttype&amp;gt;&lt;br /&gt;
        &amp;lt;performance-class&amp;gt;jet_transport&amp;lt;/performance-class&amp;gt;&lt;br /&gt;
        &amp;lt;registration&amp;gt;PH-KCA&amp;lt;/registration&amp;gt;&lt;br /&gt;
        &amp;lt;heavy&amp;gt;true&amp;lt;/heavy&amp;gt;&lt;br /&gt;
        &amp;lt;!-- Day one: Amsterdam to San Fransisco, CA, USA --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0605&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;0/09:45:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;330&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;KSFO&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;0/20:55:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
        &amp;lt;!-- Return Flight: Arrive the next day --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0606&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;KSFO&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;0/23:00:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;1/09:35:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
        &amp;lt;!-- Day two: Amsterdam to Accra, Ghana --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0589&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;1/12:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;330&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;DGAA&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;1/19:00:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
        &amp;lt;!-- Day two Return Flight: Arrive the next Day --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0590&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;DGAA&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;1/21:15:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;2/04:10:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
         &amp;lt;!-- Day three: Amsterdam to Vancouver, BC, Canada --&amp;gt;&lt;br /&gt;
         &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0681&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;2/08:25:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;330&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;CYVR&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;2/18:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
         &amp;lt;!-- Day three: return Flight: Arrive the next day --&amp;gt;&lt;br /&gt;
         &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0682&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;CYVR&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;2/20:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;330&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;3/05:40:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
         &amp;lt;!-- Day four: Amsterdam to Delhi, India --&amp;gt;&lt;br /&gt;
         &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0871&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;3/09:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;VIDP&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;3/17:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;    &lt;br /&gt;
         &amp;lt;!-- Day four: Return Flight: Arrive the next day --&amp;gt;&lt;br /&gt;
         &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0872&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;VIDP&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;3/19:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;350&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;4/04:00:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
         &amp;lt;!-- Day five: Amsterdam to Lagos, Nigeria --&amp;gt;&lt;br /&gt;
         &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0587&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;4/10:30:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;DNMM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;4/16:55:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;  &lt;br /&gt;
        &amp;lt;!-- Day five: Return Flight, Arrive the next day --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0588&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;DNMM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;4/21:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;5/06:10:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;         &lt;br /&gt;
        &amp;lt;!-- Day Six: Amsterdam to Montreal, Quebec, Canada --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0671&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;5/12:20:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;CYUL&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;5/19:50:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;     &lt;br /&gt;
        &amp;lt;!-- Day Six: Return Flight. Arrive the next day --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0672&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;CYUL&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;5/22:00:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;6/04:45:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;    &lt;br /&gt;
       &amp;lt;!-- Day Seven: Minneapolis/St. Paul, MN, USA --&amp;gt;&lt;br /&gt;
       &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0667&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;6/12:05:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;330&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;KMSP&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;6/20:50:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
       &amp;lt;!-- Day Seven: Return Flight, Arrive the next day. --&amp;gt;&lt;br /&gt;
       &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0668&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;KMSP&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;6/23:00:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;0/07:15:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;                &lt;br /&gt;
    &amp;lt;/aircraft&amp;gt;&lt;br /&gt;
 &amp;lt;/trafficlist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disecting the traffic file ==&lt;br /&gt;
&lt;br /&gt;
Here I will discuss the general structure of a traffic file in more detail. As discussed in the introduction, the traffic patterns are centered around aircraft and flights. Therefore, a minimal traffic file will consist of two sections: the aircraft definition and the flights section. In the next two sections, I will discuss each of these sections. &lt;br /&gt;
&lt;br /&gt;
== General Layout ==&lt;br /&gt;
&lt;br /&gt;
The general layout of each file should look like the above example.&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;trafficlist&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
 &amp;lt;/trafficlist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The general layout of each file should look like the above example. The first line contains a generic xml header, which is followed on the second line with a '''&amp;lt;trafficlist&amp;gt;''' statement. Also, the last line in the file should close off the trafficlist section using the '''&amp;lt;/trafficlist&amp;gt;''' statement. As will be illustrated below, between these two statements can be one or more aircraft definitions.&lt;br /&gt;
&lt;br /&gt;
== Defining the aircraft ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;trafficlist&amp;gt;&lt;br /&gt;
    &amp;lt;aircraft&amp;gt;&lt;br /&gt;
       &amp;lt;model&amp;gt;Aircraft/MD11/Models/KLMmd11-ai.xml&amp;lt;/model&amp;gt;&lt;br /&gt;
       &amp;lt;livery&amp;gt;KLM&amp;lt;/livery&amp;gt;&lt;br /&gt;
       &amp;lt;airline&amp;gt;KLM&amp;lt;/airline&amp;gt;&lt;br /&gt;
       &amp;lt;actype&amp;gt;MD11&amp;lt;/actype&amp;gt;&lt;br /&gt;
       &amp;lt;offset&amp;gt;19&amp;lt;/offset&amp;gt;&lt;br /&gt;
       &amp;lt;radius&amp;gt;39&amp;lt;/radius&amp;gt;&lt;br /&gt;
       &amp;lt;flighttype&amp;gt;gate&amp;lt;/flighttype&amp;gt;&lt;br /&gt;
       &amp;lt;performance-class&amp;gt;jet_transport&amp;lt;/performance-class&amp;gt;&lt;br /&gt;
       &amp;lt;registration&amp;gt;PH-KCA&amp;lt;/registration&amp;gt;&lt;br /&gt;
       &amp;lt;flight&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;/aircraft&amp;gt;&lt;br /&gt;
 &amp;lt;/trafficlist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The first lines inside the '''&amp;lt;aircraft&amp;gt;''' clause define the aircraft's performance characteristics.&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;model&amp;gt;''' Here is a path specified to the 3D model that should be used in FlightGear.&lt;br /&gt;
* '''&amp;lt;livery&amp;gt;''' This line is currently unused, and will likely remain unused. The original idea was to combine this with the '''&amp;lt;model&amp;gt;''' line (see above) to load a specific combination of aircraftype and paint scheme, but I abandoned that idea, because it didn't turn out to be very combatible with the existing FlightGear model loading code. &lt;br /&gt;
* '''&amp;lt;airline&amp;gt;''' This line refers to the airline operating the aircraft. This information is currently used by FlightGear to handle gate/parking assignments. Use the official 3-letter ICAO airline code here, in case of commercial traffic. This keyword is unlikely to be used fore general aviation and military traffic. &lt;br /&gt;
* '''&amp;lt;actype&amp;gt;''' A description of the aircraft type reserved for future use in ATC.&lt;br /&gt;
* '''&amp;lt;offset&amp;gt;''' Ground offset of the 3D model. Not all aircraft 3D models are build using the same convention. Use this parameter to align the wheels with the ground. Notice that this parameter will probably become obsolete in the near future, because model view point references can also be done in the xml file that the '''&amp;lt;model&amp;gt;''' keyword refers to.&lt;br /&gt;
* '''&amp;lt;radius&amp;gt;''' An estimate of the aircraft's size. This is mainly used at airports for gate assignments.&lt;br /&gt;
* '''&amp;lt;flighttype&amp;gt;''' This line is also used for gate assignments and should be &lt;br /&gt;
    '''ga''' (general aviation), &lt;br /&gt;
    '''cargo''' (cargo)&lt;br /&gt;
    '''gate''' (commercial passenger traffic) &lt;br /&gt;
In addtion, it is expected that a '''mil''' value will be valid sometime soon. In the near future, this keyword will also be used for runway assignments, so that general aviation, commercial, and military traffic will use different runways if that is part of the airport's operational procedures.&lt;br /&gt;
* '''&amp;lt;performance-class&amp;gt;''' This line is used to determine the performance characteristics of AI aircraft. This should match one of the performance classes that are predefined in FlightGear. Currently, the following performance classes are supported:&lt;br /&gt;
 &lt;br /&gt;
 '''light_aircraft''' (prop driven single or twin),&lt;br /&gt;
 '''ww2_fighter'''    (world war two fighter),&lt;br /&gt;
 '''jet_transport'''  (modern commercial jet),&lt;br /&gt;
 '''jet_fighter'''    (modern fighter aircraft)&lt;br /&gt;
 '''tanker'''         (tanker aircraft), or.&lt;br /&gt;
 '''ufo'''            (allows extreme accel/decel capabilities).&lt;br /&gt;
*'''&amp;lt;registration&amp;gt;''' The aircraft's tail number. Future versions of FlightGear will use this registration in ATC for general aviation traffic. For commercial traffic the registration number will likely remain unused.&lt;br /&gt;
&lt;br /&gt;
== Defining a flight ==&lt;br /&gt;
&lt;br /&gt;
The next series of lines within the '''&amp;lt;aircraft&amp;gt;''' section define the flights. Again, each flight is defined between the '''&amp;lt;flight&amp;gt;''' and '''&amp;lt;/flight&amp;gt;''' statements. For example, let's have a look at the first two &lt;br /&gt;
flights specified in our PH-KCA example. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- Day one: Amsterdam to San Fransisco, CA, USA --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0605&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;0/09:45:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;330&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;KSFO&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;0/20:55:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt; &lt;br /&gt;
       &amp;lt;/flight&amp;gt; &lt;br /&gt;
        &amp;lt;!-- Return Flight: Arrive the next day --&amp;gt;&lt;br /&gt;
        &amp;lt;flight&amp;gt;&lt;br /&gt;
            &amp;lt;callsign&amp;gt;KLM0606&amp;lt;/callsign&amp;gt;&lt;br /&gt;
            &amp;lt;fltrules&amp;gt;IFR&amp;lt;/fltrules&amp;gt;&lt;br /&gt;
            &amp;lt;departure&amp;gt;&lt;br /&gt;
               &amp;lt;port&amp;gt;KSFO&amp;lt;/port&amp;gt;&lt;br /&gt;
               &amp;lt;time&amp;gt;0/23:00:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/departure&amp;gt;&lt;br /&gt;
            &amp;lt;cruise-alt&amp;gt;340&amp;lt;/cruise-alt&amp;gt;&lt;br /&gt;
            &amp;lt;arrival&amp;gt;&lt;br /&gt;
                &amp;lt;port&amp;gt;EHAM&amp;lt;/port&amp;gt;&lt;br /&gt;
                &amp;lt;time&amp;gt;1/09:35:00&amp;lt;/time&amp;gt;&lt;br /&gt;
            &amp;lt;/arrival&amp;gt;&lt;br /&gt;
        &amp;lt;repeat&amp;gt;WEEK&amp;lt;/repeat&amp;gt;&lt;br /&gt;
       &amp;lt;/flight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The '''&amp;lt;flights&amp;gt;''' section is slightly more complex than the aircraft definition itself, because it has a few nested levels. The following keywords should be specified:&lt;br /&gt;
* '''&amp;lt;flight&amp;gt;''' All the relevant parameter should be specified between the '''&amp;lt;flight&amp;gt;&amp;lt;/flight&amp;gt;''' keywords.&lt;br /&gt;
* '''&amp;lt;callsign&amp;gt;''' The airline callsign used for ATC. If this is an airline flight it should be combination of the airline callsign (e.g. '''KLM''' for KLM, or '''Springbok''' for South African Airways), and the flight number (e.g. '''KLM0605''', or '''Springbok0033''').&lt;br /&gt;
* '''&amp;lt;fltrules&amp;gt;''' Can be ''IFR'' or ''VFR''. This is required or use in ATC, but currently not used. This is likely to change, however.&lt;br /&gt;
* '''&amp;lt;departure&amp;gt;''' Definition of the departure airport. This section should contain the '''&amp;lt;port&amp;gt;''' and '''&amp;lt;time&amp;gt;''' keywords.&lt;br /&gt;
* '''&amp;lt;cruise-alt&amp;gt;''' Cruising altitude for this flight. This is a bit of a simplyfication from the real world, where aircraft usually don't stay at the same cruise altitude throughout the flight. This behavior will probably also change in future versions. &lt;br /&gt;
* '''&amp;lt;arrival&amp;gt;''' Same as '''&amp;lt;departure&amp;gt;''', but now defining the port of arrival.&lt;br /&gt;
* '''&amp;lt;repeat&amp;gt;''' Repeat period. This can be either the keyword ''WEEK'', or a number followed by ''Hr''. ''WEEK'' means that the whole schedule repeats itself on a weekly basis. ''Hr'' means that the whole schedule repeats after the number of hours specified directly before it (e.g. ''24Hr'' means that the schedule repeats after 24 hours).&lt;br /&gt;
* '''&amp;lt;port&amp;gt;''' This should be the international ICAO airport code. This keyword should be specified only within the '''&amp;lt;departure&amp;gt;''' or '''&amp;lt;arrival&amp;gt;''' sections. As far as I know, here it should still be in upper case, although the FlightGear command line currently also supports lower case ICAO codes. &lt;br /&gt;
* '''&amp;lt;time&amp;gt;''' Used to specify the '''&amp;lt;departure&amp;gt;''' or '''&amp;lt;arrival&amp;gt;''' time. The format of this string is ''hour:minute:second''. Notice that departure day is optional and is specifically intended to be used in combination with a weekly repeating schedule. When used in combination with other schedules, results may be unpredicatble. Times should be in UTC. Weekdays start at sunday (0) and end at saturday (6).&lt;br /&gt;
&lt;br /&gt;
== Putting it all together: Including a traffic file ==&lt;br /&gt;
&lt;br /&gt;
After creating a traffic file, all we need to do is make sure FlightGear knows how to use this. In the next few sections, I will explain how to do this. &lt;br /&gt;
&lt;br /&gt;
== fgtraffic.xml ==&lt;br /&gt;
&lt;br /&gt;
If you use a current version of FlightGear cvs HEAD/ OpenSceneGraph, activating traffic is easy: Just copy the traffic file into the same directory as where the AI aircraft file resides (for example: data/AI/Aircraft/737). If you use an older version, or if you use the PLIB based version of FlightGear, traffic can be activated according to the following instructions.&lt;br /&gt;
&lt;br /&gt;
At startup, FlightGear (older versions, or CVS PLIB) reads a file called '''fgtraffic.xml'''. In order to let FlightGear use our newly built traffic file, all we need to do is add a reference to the new file. Suppose we saved our file as PH-KCA.xml, all that would be required would be to add the following line: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;traffic include=&amp;quot;&amp;lt;path&amp;gt;/PH-KCA.xml&amp;quot;, &lt;br /&gt;
&lt;br /&gt;
where '''&amp;lt;path&amp;gt;''' is the directory where the file is located, relative to the main '''Traffic''' directory. For example, fgtraffic could look like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;trafficlist&amp;gt;&lt;br /&gt;
    &amp;lt;traffic include=&amp;quot;KLM/KLM.xml&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;traffic include=&amp;quot;UAL/UAL.xml&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;traffic include=&amp;quot;general/KSFO/c172.xml&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/trafficlist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Organizing by airline ==&lt;br /&gt;
&lt;br /&gt;
Although the example above works and is perfectly legal, I would prefer to see the individual files grouped together by airline and aircraft type. One way to do this is to organize files by airline and within each airline by aircraft type. For example, we could group all KLM flights together. Then we bundle these into a file called \verb|KLM.xml|, which would look like the following:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;trafficlist&amp;gt;&lt;br /&gt;
    &amp;lt;airline include=&amp;quot;KLM/MD11/MD11.xml&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/trafficlist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This file currently contains only one line, which includes the '''MD11.xml''' group, but more could be added easily.&lt;br /&gt;
&lt;br /&gt;
== Organizing by aircraft type ==&lt;br /&gt;
&lt;br /&gt;
Finally, the '''MD11.xml''' file could look like this. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;trafficlist&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCA.xml&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCB.xml&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCC.xml&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCD.xml&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCE.xml&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCF.xml&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;traffic include=&amp;quot;KLM/MD11/PH-KCG.xml&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/trafficlist&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
One final note on the organization of the schedules is that I'm consisdering changing the organization. In order to make the whole system more ''plug-and-play'' compatible, I'd like to add in the ability to drop traffic files right in a dedicated AI directory that FLightGear would automatically scan for new traffic files. Until those ideas are finally fleshed out, the current organisation is prbably likely to stay in place.&lt;br /&gt;
&lt;br /&gt;
== Ground networks: A technical perspective ==&lt;br /&gt;
&lt;br /&gt;
AI aircraft pickup taxiway information from an xml file that resides in &lt;br /&gt;
FlightGear's data directory. This is done on an airport by airport basis. the &lt;br /&gt;
precise location of this file is data/Airports/AI/[ICAO-id]/parking.xml. For &lt;br /&gt;
an example, see the groundnetwork for EHAM, which is found in &lt;br /&gt;
data/Airports/AI/EHAM/parking.xml. See the end of this message for a small &lt;br /&gt;
excerpt from this file.&lt;br /&gt;
&lt;br /&gt;
The first section of the file contains the parameters of the airport's parking &lt;br /&gt;
locations. This section is followed by a list of all the nodes in the ground &lt;br /&gt;
network, and the final section contains a list of segments or &amp;quot;arcs&amp;quot; as David &lt;br /&gt;
Luff called them initially, which basically describe which node is connected &lt;br /&gt;
to which other node. &lt;br /&gt;
&lt;br /&gt;
Each parking and ai node has a unique index number, which is used by the &lt;br /&gt;
segments to link the startup location and the taxiways together. Parkings and &lt;br /&gt;
AI nodes have the following parameters: &lt;br /&gt;
 - index (unique, consecutively numbered id)&lt;br /&gt;
 - lat (position in latitude)&lt;br /&gt;
 - lon (position in longitude)&lt;br /&gt;
 - name (name as found on airport charts: e.g. D23, or C1). &lt;br /&gt;
&lt;br /&gt;
Name is currently not used, Parking names will be used in future ATC, but AINode names will probably not be used except for some specific internal functions. &lt;br /&gt;
airlineCodes= list any (comma separated) ICAO airline codes here to specify &lt;br /&gt;
which airlines are allowed here. &lt;br /&gt;
-pushBack (used to determine whether departing aircraft can make left or right &lt;br /&gt;
turns after pushback&lt;br /&gt;
&lt;br /&gt;
In addition, each parking has a number of additional parameters:&lt;br /&gt;
* '''type:''' specifies what type of aircraft can use this parking bay: Valid values for this parameter are: ''cargo, gate'' (=usually intermediate to heavy airline traffic), ''ramp'' (=usually smaller regional jets and commuter aircraft), ''ga'' (=general aviation), and ''mil'' (=military). See the description of the '''&amp;lt;flighttype&amp;gt;''' parameter in the traffic pattern description above for a comparison.&lt;br /&gt;
* '''number:''' Currently unused, and likely to be removed.&lt;br /&gt;
* '''heading:''' the heading the aircraft parked in this bay.&lt;br /&gt;
*'''radius:''' a value used to determine whether the aircaft will fit in this bay: see also the description of the '''&amp;lt;radius&amp;gt;''' parameter in the traffic pattern description above. &lt;br /&gt;
*'''airlineCodes:''' a comma-separated list of ICAO airline codes used to indicate which airlines should park here. Leave this field blank if you want any aircraft to park here.&lt;br /&gt;
*'''pushBack:''' Currently Unused.&lt;br /&gt;
&lt;br /&gt;
Finally, the taxiway segments contain three parameters. &lt;br /&gt;
* '''begin''' (= the id of the parking or AINode this segment starts)&lt;br /&gt;
* '''end''' (= the id of the parking or AINode this segment ends)&lt;br /&gt;
* '''name''' (= name of the taxiway. Currently still unused)&lt;br /&gt;
&lt;br /&gt;
== Creating a ground network, a practical approach ==&lt;br /&gt;
&lt;br /&gt;
Okay that finishes the technical description of the parking file format. The &lt;br /&gt;
good news is that one probably doesn't need to know too much about the technical &lt;br /&gt;
side of the file structure to create a ground network. &lt;br /&gt;
&lt;br /&gt;
== TaxiDraw ==&lt;br /&gt;
&lt;br /&gt;
The CVS version of taxidraw (http://taxidraw.sourceforge.net/) has ground &lt;br /&gt;
network editing capabilities, and will in the short to intermediate term &lt;br /&gt;
probably be the best option to create a ground network for FlightGear.  &lt;br /&gt;
Notice that the ground editing facilities in TaxiDRaw are still rather new, and although the stability of this feature has increased dramatically over the last few weeks, there are still a few issues related to the undo function, so be prepared for a bit of frustration, and make regular backups. &lt;br /&gt;
&lt;br /&gt;
== Obtaining TaxiDraw ==&lt;br /&gt;
&lt;br /&gt;
I'm hoping that we can do a release of taxidraw fairly soon, so that the &lt;br /&gt;
groundnet editing capabilities will become easily accesible. Until that time, &lt;br /&gt;
linux users can try to check out a version of taxidraw from CVS by following &lt;br /&gt;
the instructions on http://taxidraw.sourceforge.net/#download&lt;br /&gt;
&lt;br /&gt;
Windows users can also do this either by using the free winCVS program or &lt;br /&gt;
using the free cygwin environment. &lt;br /&gt;
&lt;br /&gt;
== Getting good reference material ==&lt;br /&gt;
&lt;br /&gt;
The first step in preparation of creating a ground network consists of getting &lt;br /&gt;
some reference material. Ideally, You'd like to find a good satellite or arial image. If you can't find that, using a schematic diagram might also work. In most cases, using http://maps.google.com, and selecting the satellite imagery will work pretty well as reference. You can't save the google images, so importing them as a background image in taxidraw won't work. However, using these images as a reference and placing the parking notes at the approximate location indicated by the map will (at least for an initial version) give reasonable results.&lt;br /&gt;
&lt;br /&gt;
== Creating the network ==&lt;br /&gt;
&lt;br /&gt;
== Startup locations ==&lt;br /&gt;
&lt;br /&gt;
Once you have the reference material, it's time to start building the ground &lt;br /&gt;
network. I typically start by placing all the parkings first. There are two &lt;br /&gt;
ways to do this. 1) Using the mouse, choose [insert|Startup Location] from &lt;br /&gt;
the main menu. This will create a new startup location. Then left-click on it &lt;br /&gt;
and drag it to its desired location. 2) Move the mouse to the location where &lt;br /&gt;
you want to place the startup location and press the 's' key on the keyboard. &lt;br /&gt;
This places the startup location directly where the mouse is located. &lt;br /&gt;
&lt;br /&gt;
== AI Network Nodes ==&lt;br /&gt;
&lt;br /&gt;
Next you want to insert the AINodes, without connecting them yet. The &lt;br /&gt;
procedure is basically the same as placing the startup locations. Either &lt;br /&gt;
select [Insert| Add AI Network Node ] from the menu, or move the mouse to the &lt;br /&gt;
location where you want to place the node. Press the 'n' key to actually add &lt;br /&gt;
the node. &lt;br /&gt;
&lt;br /&gt;
== Connecting the nodes: Drawing the network ==&lt;br /&gt;
&lt;br /&gt;
Once you are finished adding all the nodes, and startup locations, it's time &lt;br /&gt;
to connect the nodes . This is the time to save your work and MAKE A BACKUP, &lt;br /&gt;
as the nodes connection code is not entirely stable yet. &lt;br /&gt;
&lt;br /&gt;
Connecting nodes can be done by switching the editor to arcing mode, by &lt;br /&gt;
pressing the 'm' key. The edit mode of taxidraw is indicated in the lower &lt;br /&gt;
right corner of the status bar. After pressing 'm' it should read ARC. If you &lt;br /&gt;
need to switch back to the standard edit mode press 'm' again. &lt;br /&gt;
&lt;br /&gt;
Making sure we are still in &amp;quot;ARC&amp;quot; mode, select the first node or parking  &lt;br /&gt;
you want to connect to the network by clicking on it. The node you have &lt;br /&gt;
clicked will be selected, and a red line with an arrow symbol will be drawn &lt;br /&gt;
between this node and the mouse cursor. Now, select the second node that you &lt;br /&gt;
wish to connect this node to. Click it with the mouse, and the red line will &lt;br /&gt;
now be drawn between the the two nodes. You have created a taxiroute. Now &lt;br /&gt;
repeat this process for all the nodes you want to connect.&lt;br /&gt;
&lt;br /&gt;
Note that taxi segments are unidirectional. If you want to create &lt;br /&gt;
bidirectional taxiways, make sure you not only connect node &amp;quot;1&amp;quot; to node &amp;quot;2&amp;quot; &lt;br /&gt;
but also to connect node &amp;quot;2&amp;quot; to node &amp;quot;1&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Second, notice also that once you have connected two nodes to each other, and &lt;br /&gt;
want to create a second taxiway that starts at the node that the previous &lt;br /&gt;
node ended, you have to select this node again, to become the first node in &lt;br /&gt;
the next taxiway.&lt;br /&gt;
&lt;br /&gt;
== Editing the startup location parameters ==&lt;br /&gt;
&lt;br /&gt;
Once you have created a ground network, you'll find that it probably won't &lt;br /&gt;
work yet in flightgear. The main reason for this is that the default gate &lt;br /&gt;
size is set to a fairly small size, and most aircraft won't fit into the &lt;br /&gt;
gate. Therefore, you'd need to edit the parking parameters. In addition, &lt;br /&gt;
you'd also need to give each parking a name, and a heading, and probably &lt;br /&gt;
airlines codes. Changing name, and heading can be done in taxidraw, by right &lt;br /&gt;
clicking on the startup location. This will bring up a dialog, in which you &lt;br /&gt;
can change latitude, longitude, heading, and name,  Once you're done editing, &lt;br /&gt;
click okay to accept the new values, or cancel to discard. &lt;br /&gt;
&lt;br /&gt;
Editing the starup location radius, type, airlineCodes, and pushBack &lt;br /&gt;
parameters is not yet possible in taxidraw. So changing these requires saving &lt;br /&gt;
the project and editing these using a texteditor. Once you save the project, this will be done in a file [filename].tpj (taxidraw project). The groundnetwork will be saved in a file named [filename]-groundnet.xml, which will be in the same folder as where you saved the project.&lt;br /&gt;
&lt;br /&gt;
You can edit the remaining parameters by loading this groundnet.xml file into &lt;br /&gt;
a text editor. Once you are done editing make sure you import these changes &lt;br /&gt;
into taxidraw immediately. Do this by going to [File| Import FlightGear AI &lt;br /&gt;
Network]. This will open a file selection dialog. Choose the file you just &lt;br /&gt;
edited and click okay. TaxiDraw will ask for confirmation to overwrite &lt;br /&gt;
existing ground network data and confirm this  by clicking on &amp;quot;yes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Copying the ground network into FlightGear's data directory ==&lt;br /&gt;
&lt;br /&gt;
Finally, once you have finished creating a groundnet work you can test it in &lt;br /&gt;
FlightGear. Create a directory in FlightGear's data/Airports/AI directory, &lt;br /&gt;
with the name of the ICAO code of your airport. For example &lt;br /&gt;
data/Airports/AI/EHAM. Next. locate the file [filename]-groundnetwork.xml and copy this to the directory you just created. Finally, rename the file you just copied to &amp;quot;parking.xml&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Testing the network ==&lt;br /&gt;
&lt;br /&gt;
Startup flightGear at the airport for wich you have just created the network, &lt;br /&gt;
and make sure you have traffic for that aircraft. FlightGear will check the &lt;br /&gt;
network and report errors on the console. Aircraft than can't be placed at &lt;br /&gt;
one of the parking locations will be placed at a default location. &lt;br /&gt;
&lt;br /&gt;
If the FlightGear AI system can't find a valid route between startup location &lt;br /&gt;
and runway, it will list which nodes are not connected and exit. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Appendix: ==&lt;br /&gt;
&lt;br /&gt;
An below is an example section from data/Airports/AI/EHAM/parking.xml&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;groundnet&amp;gt;&lt;br /&gt;
  &amp;lt;parkinglist&amp;gt;&lt;br /&gt;
    &amp;lt;Parking index=&amp;quot;0&amp;quot;&lt;br /&gt;
         type=&amp;quot;cargo&amp;quot;&lt;br /&gt;
         name=&amp;quot;R02&amp;quot;&lt;br /&gt;
         number=&amp;quot;1&amp;quot;&lt;br /&gt;
         lat=&amp;quot;N52 17.664&amp;quot;&lt;br /&gt;
         lon=&amp;quot;E04 44.527&amp;quot;&lt;br /&gt;
         heading=&amp;quot;328.8&amp;quot;&lt;br /&gt;
         radius=&amp;quot;43&amp;quot;&lt;br /&gt;
         airlineCodes=&amp;quot;NONE&amp;quot;&lt;br /&gt;
         pushBack=&amp;quot;left&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Parking index=&amp;quot;1&amp;quot;&lt;br /&gt;
         type=&amp;quot;cargo&amp;quot;&lt;br /&gt;
         name=&amp;quot;R04&amp;quot;&lt;br /&gt;
         number=&amp;quot;1&amp;quot;&lt;br /&gt;
         lat=&amp;quot;N52 17.682&amp;quot;&lt;br /&gt;
         lon=&amp;quot;E04 44.572&amp;quot;&lt;br /&gt;
         heading=&amp;quot;328.8&amp;quot;&lt;br /&gt;
         radius=&amp;quot;43&amp;quot;&lt;br /&gt;
         airlineCodes=&amp;quot;NONE&amp;quot;&lt;br /&gt;
         pushBack=&amp;quot;left&amp;quot;/&amp;gt;&lt;br /&gt;
 [SNIP] &lt;br /&gt;
    &amp;lt;Parking index=&amp;quot;198&amp;quot;&lt;br /&gt;
         type=&amp;quot;gate&amp;quot;&lt;br /&gt;
         name=&amp;quot;J80&amp;quot;&lt;br /&gt;
         number=&amp;quot;1&amp;quot;&lt;br /&gt;
         lat=&amp;quot;N52 18.678&amp;quot;&lt;br /&gt;
         lon=&amp;quot;E04 44.659&amp;quot;&lt;br /&gt;
         heading=&amp;quot;0&amp;quot;&lt;br /&gt;
         radius=&amp;quot;15&amp;quot;&lt;br /&gt;
         airlineCodes=&amp;quot;NONE&amp;quot;&lt;br /&gt;
         pushBack=&amp;quot;left&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/parkinglist&amp;gt;&lt;br /&gt;
  &amp;lt;TaxiNodes&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;199&amp;quot; lat=&amp;quot;N52 20.778&amp;quot; lon=&amp;quot;E04 42.626&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;200&amp;quot; lat=&amp;quot;N52 20.622&amp;quot; lon=&amp;quot;E04 42.771&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;201&amp;quot; lat=&amp;quot;N52 20.478&amp;quot; lon=&amp;quot;E04 42.592&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;202&amp;quot; lat=&amp;quot;N52 20.394&amp;quot; lon=&amp;quot;E04 42.685&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;203&amp;quot; lat=&amp;quot;N52 20.406&amp;quot; lon=&amp;quot;E04 42.754&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;204&amp;quot; lat=&amp;quot;N52 20.310&amp;quot; lon=&amp;quot;E04 42.740&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;205&amp;quot; lat=&amp;quot;N52 20.148&amp;quot; lon=&amp;quot;E04 42.565&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
 [SNIP]...&lt;br /&gt;
    &amp;lt;node index=&amp;quot;597&amp;quot; lat=&amp;quot;N52 18.666&amp;quot; lon=&amp;quot;E04 45.372&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;598&amp;quot; lat=&amp;quot;N52 18.678&amp;quot; lon=&amp;quot;E04 45.358&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;node index=&amp;quot;599&amp;quot; lat=&amp;quot;N52 18.678&amp;quot; lon=&amp;quot;E04 45.377&amp;quot; name=&amp;quot;AI waypointnode&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/TaxiNodes&amp;gt;&lt;br /&gt;
  &amp;lt;TaxiWaySegments&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;237&amp;quot; end=&amp;quot;234&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;234&amp;quot; end=&amp;quot;239&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;239&amp;quot; end=&amp;quot;242&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;242&amp;quot; end=&amp;quot;245&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;369&amp;quot; end=&amp;quot;374&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;374&amp;quot; end=&amp;quot;369&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;370&amp;quot; end=&amp;quot;373&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;arc begin=&amp;quot;373&amp;quot; end=&amp;quot;370&amp;quot; name=&amp;quot;Route&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/TaxiWaySegments&amp;gt;&lt;br /&gt;
 &amp;lt;/groundnet&amp;gt;&lt;/div&gt;</summary>
		<author><name>Deskin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=AI_Systems&amp;diff=3522</id>
		<title>AI Systems</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=AI_Systems&amp;diff=3522"/>
		<updated>2007-05-28T01:12:53Z</updated>

		<summary type="html">&lt;p&gt;Deskin: /* ATC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== ATC ==&lt;br /&gt;
&lt;br /&gt;
FlightGear has a simple Air Traffic Control system.&lt;br /&gt;
&lt;br /&gt;
For airports with a tower frequency, if that frequency is tuned in to your radio, you may contact ATC.&lt;br /&gt;
&lt;br /&gt;
To obtain the tower frequencies for an airport within range of ATC, go to the ATC/AI menu, choose Frequencies to display the dialog. If there are any airports within 40nm range, a button with the airport designation will appear. Click see the frequencies. Tune the tower frequency in on the COM1 radio and then hit the single quote key to open the ATC window.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Points:&lt;br /&gt;
&lt;br /&gt;
* Untowered airports are not supported in any way by ATC.&lt;br /&gt;
* You must be within 40 nautical miles of an ATC facility (towered airport with tower frequencies) to contact ATC.&lt;br /&gt;
&lt;br /&gt;
== AI Air Traffic ==&lt;br /&gt;
&lt;br /&gt;
Todo&lt;br /&gt;
&lt;br /&gt;
Add a space in the wiki to mak a AI repository to cut and paste new AI sceneries.&lt;br /&gt;
&lt;br /&gt;
== AI Models ==&lt;br /&gt;
&lt;br /&gt;
Starting with FlightGear version 0.9.4 you can place AI objects in the &amp;quot;FlightGear world&amp;quot;. In version 0.9.4 the AI objects can be defined in the preferences.xml file, or in an airplane's *-set.xml file. In later versions they are defined in a &amp;quot;scenario file&amp;quot; only. The types of AI objects you can have are airplanes, ships, thunderstorms, thermals and ballistic objects. AI objects have some things in common: The have a location in the &amp;quot;FlightGear world&amp;quot;, they can have an associated exterior 3D model, and they can move according to an internal FDM (flight dynamics model). As of now, these objects are created at simulator start-up by adding some XML code to a scenario file. The scenario file must be in the data/AI directory. You select which scenario files you want to use by naming it in the preferences.xml file. The preferences.xml file has an entry that looks like this (FlightGear versions newer than 0.9.4, including CVS): &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;AI&amp;gt;&lt;br /&gt;
  &amp;lt;ENABLED type=&amp;quot;bool&amp;quot;&amp;gt;true&amp;lt;/ENABLED&amp;gt;&lt;br /&gt;
  &amp;lt;SCENARIO&amp;gt;aircraft_demo&amp;lt;/SCENARIO&amp;gt;&lt;br /&gt;
 &amp;lt;/AI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above bit of XML enables the AI system and selects a scenario file called aircraft_demo.xml.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
The scenario file contains one entry for each AI object. The entry specifies what kind of object to create, what its initial conditions will be, and optionally (for aircraft and ships) a flight plan. The entry for a sailboat could look like this:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ENTRY&amp;gt;&lt;br /&gt;
  &amp;lt;TYPE&amp;gt;ship&amp;lt;/TYPE&amp;gt;&lt;br /&gt;
  &amp;lt;MODEL&amp;gt;Models/Geometry/sailboat.xml&amp;lt;/MODEL&amp;gt; &lt;br /&gt;
  &amp;lt;SPEED-KTAS type=&amp;quot;double&amp;quot;&amp;gt;12.0&amp;lt;/SPEED-KTAS&amp;gt; &lt;br /&gt;
  &amp;lt;ALTITUDE-FT type=&amp;quot;double&amp;quot;&amp;gt;0.0&amp;lt;/ALTITUDE-FT&amp;gt;    &lt;br /&gt;
  &amp;lt;LONGITUDE type=&amp;quot;double&amp;quot;&amp;gt;-122.33333&amp;lt;/LONGITUDE&amp;gt; &lt;br /&gt;
  &amp;lt;LATITUDE type=&amp;quot;double&amp;quot;&amp;gt;37.61667&amp;lt;/LATITUDE&amp;gt;&lt;br /&gt;
  &amp;lt;HEADING type=&amp;quot;double&amp;quot;&amp;gt;20.0&amp;lt;/HEADING&amp;gt;&lt;br /&gt;
 &amp;lt;/ENTRY&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Most of the parameters are self-explanitory. The &amp;quot;type&amp;quot; of object can be one of &amp;quot;aircraft&amp;quot;, &amp;quot;ship&amp;quot;, &amp;quot;storm&amp;quot;, &amp;quot;thermal&amp;quot;, &amp;quot;ballistic&amp;quot; or &amp;quot;static&amp;quot;. The rest of the items give the AI object a model, a starting location, and a starting speed and direction. You use the &amp;lt;MODEL&amp;gt; item to give the object any valid exterior model. You can even make the ship look like an airplane if you want! The &amp;quot;ship&amp;quot; type can also have a &amp;lt;RUDDER&amp;gt; value specified, which will cause the ship to move in a circle (HINT: use small values, five degrees or less, and right rudder is positive). Here is an example of how to create an aircraft AI object:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!-- puts an A-4 north of KSFO, orbiting at 7000 ft --&amp;gt;  &lt;br /&gt;
 &amp;lt;ENTRY&amp;gt;&lt;br /&gt;
  &amp;lt;TYPE&amp;gt;aircraft&amp;lt;/TYPE&amp;gt;&lt;br /&gt;
  &amp;lt;CLASS&amp;gt;light&amp;lt;/CLASS&amp;gt; &lt;br /&gt;
  &amp;lt;MODEL&amp;gt;Aircraft/a4/Models/a4-blue.xml&amp;lt;/MODEL&amp;gt; &lt;br /&gt;
  &amp;lt;SPEED-KTAStype=&amp;quot;double&amp;quot;&amp;gt;320.0&amp;lt;/SPEED-KTAS&amp;gt; &lt;br /&gt;
  &amp;lt;ALTITUDE-FT type=&amp;quot;double&amp;quot;&amp;gt;7000.0&amp;lt;/ALTITUDE-FT&amp;gt; &lt;br /&gt;
  &amp;lt;LONGITUDE type=&amp;quot;double&amp;quot;&amp;gt;-122.6&amp;lt;/LONGITUDE&amp;gt; &lt;br /&gt;
  &amp;lt;LATITUDE type=&amp;quot;double&amp;quot;&amp;gt;37.9&amp;lt;/LATITUDE&amp;gt;&lt;br /&gt;
  &amp;lt;HEADING type=&amp;quot;double&amp;quot;&amp;gt;210.0&amp;lt;/HEADING&amp;gt; &lt;br /&gt;
  &amp;lt;BANK type=&amp;quot;double&amp;quot;&amp;gt;-15.0&amp;lt;/BANK&amp;gt;&lt;br /&gt;
 &amp;lt;/ENTRY&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
It looks much the same as the ship AI code. There are two differences, the &amp;lt;CLASS&amp;gt; item and the &amp;lt;BANK&amp;gt; item. If the class is set to &amp;quot;tanker&amp;quot; the airplane will allow you to refuel if you can get close behind it.  The bank is of course similar to the ship's rudder. In the above example the A-4 will be orbiting to the left at 15 degrees of bank. You can also create a ship or airplane with a flight plan. In this case the object will follow the flight plan, and then delete itself when it reaches the end. The flight plans are kept in data/Data/AI/FlightPlans. To create an airplane with a flightplan do this:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ENTRY&amp;gt;&lt;br /&gt;
  &amp;lt;TYPE&amp;gt;aircraft&amp;lt;/TYPE&amp;gt; &lt;br /&gt;
  &amp;lt;CLASS&amp;gt;jet-transport&amp;lt;/CLASS&amp;gt;&lt;br /&gt;
  &amp;lt;MODEL&amp;gt;Aircraft/737/Models/737.xml&amp;lt;/MODEL&amp;gt;&lt;br /&gt;
  &amp;lt;FLIGHTPLAN&amp;gt;KSFO_ILS28L.xml&amp;lt;/FLIGHTPLAN&amp;gt; &lt;br /&gt;
 &amp;lt;/ENTRY&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To make a thunderstorm, use this:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!-- puts a thunderstorm overhead OSI (Woodside VOR) --&amp;gt;&lt;br /&gt;
 &amp;lt;ENTRY&amp;gt;&lt;br /&gt;
   &amp;lt;TYPE&amp;gt;storm&amp;lt;/TYPE&amp;gt;&lt;br /&gt;
   &amp;lt;MODEL&amp;gt;Models/Geometry/thunderstorm.xml&amp;lt;/MODEL&amp;gt; &lt;br /&gt;
   &amp;lt;SPEED-KTAS type=&amp;quot;double&amp;quot;&amp;gt;20.0&amp;lt;/SPEED-KTAS&amp;gt; &lt;br /&gt;
   &amp;lt;ALTITUDE-FT type=&amp;quot;double&amp;quot;&amp;gt;4000.0&amp;lt;/ALTITUDE-FT&amp;gt;&lt;br /&gt;
   &amp;lt;LATITUDE type=&amp;quot;double&amp;quot;&amp;gt;37.3917&amp;lt;/LATITUDE&amp;gt; &lt;br /&gt;
   &amp;lt;LONGITUDE type=&amp;quot;double&amp;quot;&amp;gt;-122.2817&amp;lt;/LONGITUDE&amp;gt; &lt;br /&gt;
   &amp;lt;HEADING type=&amp;quot;double&amp;quot;&amp;gt;90&amp;lt;/HEADING&amp;gt;&lt;br /&gt;
 &amp;lt;/ENTRY&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There's not much to it. No, they don't turn :) To create a thermal, use this:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ENTRY&amp;gt;&lt;br /&gt;
  &amp;lt;TYPE&amp;gt;thermal&amp;lt;/TYPE&amp;gt;&lt;br /&gt;
  &amp;lt;LATITUDE type=&amp;quot;double&amp;quot;&amp;gt;37.61633&amp;lt;/LATITUDE&amp;gt; &lt;br /&gt;
  &amp;lt;LONGITUDE type=&amp;quot;double&amp;quot;&amp;gt;-122.38334&amp;lt;/LONGITUDE&amp;gt; &lt;br /&gt;
  &amp;lt;STRENGTH-FPS type=&amp;quot;double&amp;quot;&amp;gt;8.33&amp;lt;/STRENGTH-FPS&amp;gt; &lt;br /&gt;
  &amp;lt;DIAMETER-FT type=&amp;quot;double&amp;quot;&amp;gt;4000&amp;lt;/DIAMETER-FT&amp;gt; &lt;br /&gt;
  &amp;lt;HEIGHT-MSL&amp;gt;6000&amp;lt;/HEIGHT-MSL&amp;gt;&lt;br /&gt;
  &amp;lt;MODEL&amp;gt;Models/Geometry/thermalcap.xml&amp;lt;/MODEL&amp;gt;&lt;br /&gt;
 &amp;lt;/ENTRY&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The AI thermals don't move, they are invisible, and they don't &amp;quot;lean&amp;quot; downwind. The &amp;lt;STRENGTH-FPS&amp;gt; defines the maximum vertical velocity of the airmass at the center of the thermal. The strength decreases to zero at the thermal's edge.  A&lt;br /&gt;
model can be assigned to the thermal, and usually this will be a small cloud to mark the thermal's location.  To create a sink, just give a &amp;quot;thermal&amp;quot; a negative strength, and give it a null model.  Please see the demo scenario (thermal_demo.xml) for examples.  &lt;br /&gt;
&lt;br /&gt;
A ballistic AI object starts with an initial azimuth, elevation and speed, then follows a ballistic path from there (with air resistance included). Try this:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ENTRY&amp;gt;&lt;br /&gt;
  &amp;lt;TYPE&amp;gt;ballistic&amp;lt;/TYPE&amp;gt; &lt;br /&gt;
  &amp;lt;MODEL&amp;gt;Models/Geometry/rocket.xml&amp;lt;/MODEL&amp;gt;&lt;br /&gt;
  &amp;lt;SPEED-FPS type=&amp;quot;double&amp;quot;&amp;gt;500.0&amp;lt;/SPEED-FPS&amp;gt; &lt;br /&gt;
  &amp;lt;ALTITUDE-FT type=&amp;quot;double&amp;quot;&amp;gt;50.0&amp;lt;/ALTITUDE-FT&amp;gt; &lt;br /&gt;
  &amp;lt;LONGITUDE type=&amp;quot;double&amp;quot;&amp;gt;-122.39&amp;lt;/LONGITUDE&amp;gt; &lt;br /&gt;
  &amp;lt;LATITUDE type=&amp;quot;double&amp;quot;&amp;gt;37.62&amp;lt;/LATITUDE&amp;gt; &lt;br /&gt;
  &amp;lt;HEADING type=&amp;quot;double&amp;quot;&amp;gt;200.0&amp;lt;/HEADING&amp;gt;&lt;br /&gt;
  &amp;lt;AZIMUTH type=&amp;quot;double&amp;quot;&amp;gt;70.0&amp;lt;/AZIMUTH&amp;gt; &lt;br /&gt;
  &amp;lt;ELEVATION type=&amp;quot;double&amp;quot;&amp;gt;45.0&amp;lt;/ELEVATION&amp;gt; &lt;br /&gt;
 &amp;lt;/ENTRY&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The AI storm objects can be displayed on weather radar. See the Aircraft/Instruments/wxradar.xml file for details. The AI aircraft objects can be displayed on radar. See the Aircraft/Instruments/radar.xml file for details, or fly the T-38 for a demo.&lt;br /&gt;
&lt;br /&gt;
=== Using Interpolation Tables ===&lt;br /&gt;
&lt;br /&gt;
Interpolation tables are very handy for effecting animations that are non-linear in relation to the property they are referenced to.&lt;br /&gt;
&lt;br /&gt;
They save the use of factors, offsets and min/max values.&lt;br /&gt;
&lt;br /&gt;
For example; relating flap extension to airspeed of an AI model. Typically an aircraft will extend flaps on final approach to control Indicated Airspeed (IAS) and stall speed to affect a low speed controlled landing. Upon touchdown the extra lift efficiency introduced by the flaps is no longer required or desirable, hence the flaps will be retracted ASAP after touch down. &lt;br /&gt;
&lt;br /&gt;
This is relatively simple in a sim aircraft as the /surface-positions/flap-pos-norm property is a normalised indicator of the flap setting chosen by the pilot.&lt;br /&gt;
&lt;br /&gt;
AI aircraft have no pilots to control flaps nor does the flight plan &amp;lt;flaps-down&amp;gt;true/false&amp;lt;/flaps-down&amp;gt; parameter effect the /AI property tree parameter, a relationship to the IAS is the next best choice.&lt;br /&gt;
&lt;br /&gt;
To effect this relationship (IAS/flap-position) using factors/offsets and min/max would be quite difficult and non-intuitive. Using interpolation tables allows the following scenario to be setup very easily and intuitively:&lt;br /&gt;
&lt;br /&gt;
: '''C172P'''&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Max&lt;br /&gt;
| 123 KIAS&lt;br /&gt;
|-&lt;br /&gt;
| Cruise&lt;br /&gt;
| 90 KIAS&lt;br /&gt;
|-&lt;br /&gt;
| Stall (no flaps)&lt;br /&gt;
| 50 KIAS&lt;br /&gt;
|-&lt;br /&gt;
| Flaps&lt;br /&gt;
| 0, 10, 20, 30 deg.&lt;br /&gt;
|-&lt;br /&gt;
| Approach&lt;br /&gt;
| 90 KIAS&lt;br /&gt;
|-&lt;br /&gt;
| 10° flaps&lt;br /&gt;
| 90 KIAS&lt;br /&gt;
|-&lt;br /&gt;
| 20° flaps&lt;br /&gt;
| 70 KIAS&lt;br /&gt;
|-&lt;br /&gt;
| 30° flaps&lt;br /&gt;
| 60 KIAS&lt;br /&gt;
|-&lt;br /&gt;
| Flare &amp;amp; touch down&lt;br /&gt;
| 50 KIAS&lt;br /&gt;
|-&lt;br /&gt;
| Brake&lt;br /&gt;
| 45 KIAS&lt;br /&gt;
|-&lt;br /&gt;
| Retract flaps&lt;br /&gt;
| 45 KIAS&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Table IAS/flap extension'''&lt;br /&gt;
{| border=&amp;quot;2&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
| IAS (kt) || Flaps&lt;br /&gt;
|-&lt;br /&gt;
| 90&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| 70 - 89&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
| 60-69&lt;br /&gt;
| 20&lt;br /&gt;
|-&lt;br /&gt;
| 45-59&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt; 45&lt;br /&gt;
| 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When the pilot extends the flaps &amp;quot;one notch&amp;quot; they will extend to &amp;quot;10°&amp;quot; etc. In the property tree, these 4 steps will typically be normalised to 0.00, 0.33, 0.66, 1.00.  This will differ from aircraft to aircraft. If the aircraft does not have equal extensions for each &amp;quot;notch&amp;quot; of flaps, the values observed may be; 0.00, 0.10, 0.30, 0.66, 1.00. Modeling this non-linear extension using &amp;quot;factor, offset, min/max&amp;quot; would be extremely difficult if not impossible. Modeling it using interpolation tables is very easy, as you shall see.&lt;br /&gt;
&lt;br /&gt;
For sim animations, the actual physical rotation of the control surface in the real world needs to be researched; this may reveal a linear or non-linear relationship between &amp;quot;nominal flap extension indicator&amp;quot; and physical rotation of the surface. That is, &amp;quot;10 degrees of flap&amp;quot; might only involve rotating the flap surface 5 degrees around its axis in the wing structure. In our 0,10,20,30 scenarios, assuming a linear relationship, 30 degrees of flap would result in the flap being rotated 15 degrees around its wing axis. Therefore the normalised /surface-positions/flap-pos-norm property would have a factor of 15 applied to the rotate animation&lt;br /&gt;
&lt;br /&gt;
The way to change a linear relationship that uses &amp;quot;factor, offset, min/max&amp;quot; in the sim animation to a interpolation table in the AI animation is best understood by examining how &amp;quot;factor, offset, min/max&amp;quot; approach works:&lt;br /&gt;
&lt;br /&gt;
# Take normalised value of the flaps (0=retracted, 1=extended)&lt;br /&gt;
# Apply the factor.&lt;br /&gt;
# Apply the offset&lt;br /&gt;
# Apply the min/max values&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
 factor=60&lt;br /&gt;
 offset= -30&lt;br /&gt;
 min=-10&lt;br /&gt;
 max+10&lt;br /&gt;
&lt;br /&gt;
these figures are nonsense but are used to illustrate a point:&lt;br /&gt;
&lt;br /&gt;
 flaps retracted(0°) = 0 x 60 = 0, (offset=-30) = -30, (min= -10) = -10&lt;br /&gt;
 flaps extended(10°) = 0.33 x 60 = 20, (offset=-30) = -10, (min= -10) = -10&lt;br /&gt;
 flaps extended(20°) = 0.66 x 60 = 40, (offset=-30) = 10, (min= -10/max=10) = 10&lt;br /&gt;
 flaps extended(30°) = 1.00 x 60 = 60, (offset=-30) = 30, (max=10) = 10&lt;br /&gt;
&lt;br /&gt;
more realistically, offset and min max are not used for flaps, only a factor.&lt;br /&gt;
&lt;br /&gt;
say 27°, this represents the maximum rotation of the 3-D component in the model around its defined axis.&lt;br /&gt;
&lt;br /&gt;
 flaps retracted(0°) = 0 x 27 = 0&lt;br /&gt;
 flaps extended(10°) = 0.33 x 27 = 9&lt;br /&gt;
 flaps extended(20°) = 0.66 x 27 = 18&lt;br /&gt;
 flaps extended(30°) = 1.00 x 27 = 27&lt;br /&gt;
&lt;br /&gt;
from this it can be seen that the 3-D object will be rotated 0°, 9°, 18° &amp;amp; 27° to represent the 0°, 10°, 20° &amp;amp; 30° deployment of the flaps.&lt;br /&gt;
&lt;br /&gt;
Relating this back to the speeds above:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
| IAS (kt)&lt;br /&gt;
| &amp;lt;rotate&amp;gt; value&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| 44&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| 45&lt;br /&gt;
| 27&lt;br /&gt;
|-&lt;br /&gt;
| 59&lt;br /&gt;
| 27&lt;br /&gt;
|-&lt;br /&gt;
| 60&lt;br /&gt;
| 18&lt;br /&gt;
|-&lt;br /&gt;
| 69&lt;br /&gt;
| 18&lt;br /&gt;
|-&lt;br /&gt;
| 70&lt;br /&gt;
| 9&lt;br /&gt;
|-&lt;br /&gt;
| 89&lt;br /&gt;
| 9&lt;br /&gt;
|-&lt;br /&gt;
| 90&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| 100&lt;br /&gt;
| 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
this gives a stepped effect, where the movement is limited to 1knt of airspeed. That is the 3-D object will linearly move from 9° to 18° while the aircraft looses speed from 70 knots to 69 knots. This behaviour will make the need for an upper and lower limit of a stepped value obvious.&lt;br /&gt;
&lt;br /&gt;
a simplified table of:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
| IAS (kt)&lt;br /&gt;
| &amp;lt;rotate&amp;gt; value&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| 45&lt;br /&gt;
| 27&lt;br /&gt;
|-&lt;br /&gt;
| 60&lt;br /&gt;
| 18&lt;br /&gt;
|-&lt;br /&gt;
| 70&lt;br /&gt;
| 9&lt;br /&gt;
|-&lt;br /&gt;
| 90&lt;br /&gt;
| 9&lt;br /&gt;
|-&lt;br /&gt;
| 100&lt;br /&gt;
| 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
will cause the flaps to start extending at the rate of 1/45 x 27 degrees per knot of airspeed gained until 45 knots when the rate of change will adjust to the new gradient. This is not how flaps behave, but can be used to good effect with &amp;quot;tail dragger&amp;quot; animations where at a certain IAS the tail starts rising, maybe at an increasing rate, until flying attitude is reached when it stops rising any further. The tail rising is not a stepped function of IAS.&lt;br /&gt;
&lt;br /&gt;
Now we have the basic ideas behind interpolation tables, the question is how are they implemented…answer;…easy ….an example of the stepped flaps animation  above&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;interpolation&amp;gt;&lt;br /&gt;
   &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;0.000&amp;gt;&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;0.000&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;44.00&amp;gt;&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;0.000&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;45.00&amp;gt;&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;27.00&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;59.00&amp;gt;&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;27.00&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;59.00&amp;gt;&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;27.00&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;60.00&amp;gt;&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;18.00&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;69.00&amp;gt;&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;18.00&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;70.00&amp;gt;&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;9.000&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;89.00&amp;gt;&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;9.000&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;90.00&amp;gt;&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;0.000&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;100.0&amp;gt;&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;0.000&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
 &amp;lt;/interpolation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here endth Interpolation tables 101&lt;br /&gt;
:-Dene&lt;br /&gt;
&lt;br /&gt;
== Submodels ==&lt;br /&gt;
&lt;br /&gt;
Submodels are AI ballistic objects that emanate from, fall from, or launch from the user aircraft.  They are presently used to model smoke, contrails, flares, tracers, bombs, drop tanks and flight path markers. &lt;br /&gt;
&lt;br /&gt;
Submodels are controlled by the submodel manager.  The manager reads a submodel configuration file at the start of the sim session.  This configuration file is written by the aircraft author and defines all the submodels for that particular aircraft.&lt;br /&gt;
&lt;br /&gt;
As an example examine the submodels file in the Aircraft/737-300 directory.  This file creates two submodels which will become the airplane's left and right engine contrails.  Each contrail needs its own submodel definition because the contrails begin at different locations.  Each contrail consists of a train of individual &amp;quot;puff&amp;quot; models that are released in rapid succession as long as the &amp;quot;trigger&amp;quot; property is true.  We ensure an unlimited supply of puffs by setting the &amp;quot;count&amp;quot; parameter to -1. The individual puffs, being AIBallistic objects, will follow their own ballistic paths once released.  In this case we have used the &amp;quot;bouyancy&amp;quot; parameter to negate gravity in the ballistic path.  The puffs have been given a life span of eight seconds.  At cruising speed the 737 will thus have about 400 puffs behind it at any moment.&lt;/div&gt;</summary>
		<author><name>Deskin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Property_tree&amp;diff=3520</id>
		<title>Property tree</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Property_tree&amp;diff=3520"/>
		<updated>2007-05-27T19:21:54Z</updated>

		<summary type="html">&lt;p&gt;Deskin: /* consumables/ */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Property Server == &lt;br /&gt;
&lt;br /&gt;
For instance, start FlightGear with the following option:&lt;br /&gt;
&lt;br /&gt;
--httpd=5400&lt;br /&gt;
&lt;br /&gt;
You can pick any port number, but 5400 will probably work just fine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now on the same machine, fire up a web browser and open up the following url:&lt;br /&gt;
&lt;br /&gt;
http://localhost:5400/&lt;br /&gt;
&lt;br /&gt;
Now you can browse the entire FG property tree &amp;quot;live&amp;quot; and even change values if you like. You can configure autopilot modes and even set control inputs so you can literally fly the airplane from your web browser, although it's not the most convenient interface for doing that. ;-)&lt;br /&gt;
&lt;br /&gt;
There is a similar interface minus the html wrappings that you can enable with the following option:&lt;br /&gt;
&lt;br /&gt;
--props=5401&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that you can setup as many of these as you want ... for instance, just to be obscene you could do:&lt;br /&gt;
&lt;br /&gt;
--httpd=5400&lt;br /&gt;
--httpd=5401&lt;br /&gt;
--httpd=5402&lt;br /&gt;
--props=5403&lt;br /&gt;
--props=5404&lt;br /&gt;
--props=5405&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now you have 6 different network interfaces running that you can access from anywhere. We can't find a wiki named Note.&lt;br /&gt;
&lt;br /&gt;
If you have a 'props' inteface configured you can now &amp;quot;telnet localhost 5401&amp;quot; and interact with the property system (again live) and set and examine values using a 'command line' style interface.&lt;br /&gt;
&lt;br /&gt;
The cool thing is that you can easily write scripts to access this --props=&amp;lt;port#&amp;gt; interface.&lt;br /&gt;
&lt;br /&gt;
Take a look at:&lt;br /&gt;
&lt;br /&gt;
FlightGear/source/scripts/perl/examples/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that there is no requirement that you do this with perl. You could just as easily interact with FlightGear this way using perl, C, C++, java, probably even &amp;lt;ack&amp;gt; visual basic or anything else that can do tcpip network communication ... matlab? netcat?&lt;br /&gt;
&lt;br /&gt;
Also note that the downside to this interface is that you can't blast a lot of data across it. It's fine if you want to monitor location and speed every second or 1/4 second and occasionally set some values (such as dump in a new weather configuration, reset the aircraft location, or read a set of values, etc.)&lt;br /&gt;
&lt;br /&gt;
But if you need to track 100 different variables at 60hz, this isn't the interface for you.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Property Tree ==&lt;br /&gt;
A detailed list of all nodes within the property tree and their purpose, as well as possible values&lt;br /&gt;
&lt;br /&gt;
==== accelerations/ ====&lt;br /&gt;
==== ai/ ====&lt;br /&gt;
==== autopilot/ ====&lt;br /&gt;
==== command/ ====&lt;br /&gt;
==== consumables/ ====&lt;br /&gt;
&lt;br /&gt;
* fuel/&lt;br /&gt;
** tank/&lt;br /&gt;
** tank[1]/&lt;br /&gt;
** tank[2]/&lt;br /&gt;
** tank[3]/&lt;br /&gt;
** total-fuel-gals&lt;br /&gt;
** total-fuel-lbs&lt;br /&gt;
** total-fuel-norm&lt;br /&gt;
&lt;br /&gt;
Note: The number of tanks will vary between aircraft. Please take this into account when you are designing your script&lt;br /&gt;
&lt;br /&gt;
==== controls/ ====&lt;br /&gt;
==== devices/ ====&lt;br /&gt;
==== engines/ ====&lt;br /&gt;
==== environment/ ====&lt;br /&gt;
==== fdm/ ====&lt;br /&gt;
==== gear/ ====&lt;br /&gt;
==== input/ ====&lt;br /&gt;
==== instrumentation/ ====&lt;br /&gt;
==== logging/ ====&lt;br /&gt;
==== models/ ====&lt;br /&gt;
==== nasal/ ====&lt;br /&gt;
==== orientation/ ====&lt;br /&gt;
The set of properties in orientation/ detail the orientation of the aircraft (pitch, yaw and roll).&lt;br /&gt;
&lt;br /&gt;
* alpha-deg&lt;br /&gt;
* heading-deg&lt;br /&gt;
* heading-magnetic-deg&lt;br /&gt;
* pitch-deg&lt;br /&gt;
* pitch-rate-degps&lt;br /&gt;
* roll-deg&lt;br /&gt;
* roll-rate-degps&lt;br /&gt;
* side-slip-deg&lt;br /&gt;
* side-slip-rad&lt;br /&gt;
* yaw-deg&lt;br /&gt;
* yaw-rate-degps&lt;br /&gt;
&lt;br /&gt;
==== position/ ==== &lt;br /&gt;
The set of properties in position/ track the lat/lon location of the user's aircraft, as well as altitude and ground elevation immediately below the aircraft.&lt;br /&gt;
&lt;br /&gt;
* longitude-deg -- Current longitude of the aircraft in degrees.&lt;br /&gt;
* latitude-deg -- Current latitude of the aircraft in degrees.&lt;br /&gt;
* altitude-ft -- Current altitude of the aircraft above mean sea level.&lt;br /&gt;
* ground-elev-m -- elevation of the ground below the aircraft, in meters.  Note that for this property,  ground structures are considered part of the ground.  Thus, flying over any ground structure (a building, a sign, a radio tower, whatever) will raise the value of this property for as long as the aircraft is over the structure. &lt;br /&gt;
* altitude-agl-ft -- Current altitude of the aircraft above ground/ground structures below.&lt;br /&gt;
&lt;br /&gt;
==== sim/ ====&lt;br /&gt;
* aero --&lt;br /&gt;
* ai&lt;br /&gt;
* ai-traffic&lt;br /&gt;
* aircraft --&lt;br /&gt;
* aircraft-dir --&lt;br /&gt;
* aircraft-min-status --&lt;br /&gt;
* alarms --&lt;br /&gt;
* allow-toggle-cockpit --&lt;br /&gt;
* ATC&lt;br /&gt;
* atc&lt;br /&gt;
* author --&lt;br /&gt;
* auto-coordination -- boolean (true/false) flag indicating whether auto-coordination is on or off.&lt;br /&gt;
* chase-distance-m --&lt;br /&gt;
* control-mode --&lt;br /&gt;
* current-view&lt;br /&gt;
* description --&lt;br /&gt;
* flight-model --&lt;br /&gt;
* frame-rate --&lt;br /&gt;
* freeze&lt;br /&gt;
* hud&lt;br /&gt;
* input&lt;br /&gt;
* instrumentation&lt;br /&gt;
* instrument-options&lt;br /&gt;
* intl&lt;br /&gt;
* logging&lt;br /&gt;
* model-hz --&lt;br /&gt;
* multiplay&lt;br /&gt;
* panel&lt;br /&gt;
* presets&lt;br /&gt;
* rendering&lt;br /&gt;
* sound&lt;br /&gt;
* speed-up --&lt;br /&gt;
* startup&lt;br /&gt;
* status --&lt;br /&gt;
* time&lt;br /&gt;
* view-mode --&lt;br /&gt;
* menubar/&lt;br /&gt;
* model/&lt;br /&gt;
* mouse/&lt;br /&gt;
* navdb/&lt;br /&gt;
* number-views =  '6'     (int)&lt;br /&gt;
* replay/&lt;br /&gt;
* sceneryloaded = 'true'  (bool)&lt;br /&gt;
* submodels/&lt;br /&gt;
* systems/&lt;br /&gt;
* temp/&lt;br /&gt;
* tower/&lt;br /&gt;
* traffic-manager/&lt;br /&gt;
* user/&lt;br /&gt;
* view/&lt;br /&gt;
* view[1]/&lt;br /&gt;
* view[2]/&lt;br /&gt;
* view[3]/&lt;br /&gt;
* view[4]/&lt;br /&gt;
* view[5]/&lt;br /&gt;
* virtual-cockpit =       'false' (bool)&lt;br /&gt;
&lt;br /&gt;
==== surface-positions/ ====&lt;br /&gt;
==== systems/ ====&lt;br /&gt;
==== velocities/ ====&lt;br /&gt;
&amp;lt;nowiki&amp;gt;    &lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[http://www.beispiel.de Link-Text]&lt;br /&gt;
[[Media:Beispiel.mp3]]&lt;br /&gt;
[[Image:Beispiel.jpg]]&lt;br /&gt;
fgfs --aircraft=(beispiel-737)&lt;/div&gt;</summary>
		<author><name>Deskin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Realism&amp;diff=3519</id>
		<title>Realism</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Realism&amp;diff=3519"/>
		<updated>2007-05-27T19:16:02Z</updated>

		<summary type="html">&lt;p&gt;Deskin: /* Visuals */ Removed duplicate --enable-real-weather-fetch from list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;How realistic is FlightGear aircraft and environment? How can I get the most realism out of the FlightGear environment?&lt;br /&gt;
&lt;br /&gt;
== Aircraft ==&lt;br /&gt;
&lt;br /&gt;
Todo: instruments&lt;br /&gt;
&lt;br /&gt;
== Flight ==&lt;br /&gt;
&lt;br /&gt;
Todo: qualities of flight models&lt;br /&gt;
&lt;br /&gt;
== Environment ==&lt;br /&gt;
&lt;br /&gt;
=== Extensive and Accurate World Scenery Data Base ===&lt;br /&gt;
&lt;br /&gt;
* Over 20,000 real world airports included in the full scenery set.&lt;br /&gt;
* Correct runway markings and placement, correct runway and approach lighting.&lt;br /&gt;
* Taxiways available for many larger airports (even including the green center line lights when appropriate.)&lt;br /&gt;
* Sloping runways (runways change elevation like they usually do in real life.)&lt;br /&gt;
* Directional airport lighting that smoothly changes intensity as your relative view direction changes.&lt;br /&gt;
* World scenery fits on 3 DVD's. (I'm not sure that's a feature or a problem!) But it means we have pretty detailed coverage of the entire world.&lt;br /&gt;
* Accurate terrain worldwide, based on the most recently released SRTM terrain data.) 3 arc second resolution (about 90m post spacing) for North and South America, Europe, Asia, Africa, and Australia.&lt;br /&gt;
* Scenery includes all vmap0 lakes, rivers, roads, railroads, cities, towns, land cover, etc.&lt;br /&gt;
* Nice scenery night lighting with ground lighting concentrated in urban areas (based on real maps) and headlights visible on major highways. This allows for realistic night VFR flying with the ability to spot towns and cities and follow roads.&lt;br /&gt;
* Scenery tiles are paged (loaded/unloaded) in a separate thread to minimize the frame rate hit when you need to load new areas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Real world tower registration data was used to locate towers in the United States. The data was sourced from the United States Federal Communications Commission tower registration database.&lt;br /&gt;
&lt;br /&gt;
Thousands of objects have been added through the [FlightGear Scenery Database http://fgfsdb.stockill.org/].&lt;br /&gt;
&lt;br /&gt;
* 2700+ obstructions added for France (not sure of the source for this obstruction data)&lt;br /&gt;
&lt;br /&gt;
Todo: what are the sources for scenery database? The FAA obstructions data may have been used to populate the scenery database, but I am not sure.&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
Todo: weather&lt;br /&gt;
&lt;br /&gt;
FlightGear can periodically download weather (METAR) data. This information is used to influence the environment.  This can be most easily enabled with &amp;lt;tt&amp;gt;--enable-real-weather-fetch&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As of FG 0.9.10, for the current METAR station, FG models:&lt;br /&gt;
&lt;br /&gt;
* Visibility for the rendered visual environment is set equal to the current METAR visibility. If the current METAR reports 10 statute mile visibility, the rendered visibility is 10 statute miles.&lt;br /&gt;
&lt;br /&gt;
* If the METAR reports rain, FlightGear renders rain (precipitation).&lt;br /&gt;
&lt;br /&gt;
* If METAR reports a thunderstorm, lightning is rendered and thunder produced through the audio system.&lt;br /&gt;
&lt;br /&gt;
* FG appears to honor METAR dewpoint, &amp;quot;altimeter&amp;quot; or air pressure and reported sea level air pressure. It honors wind direction, speed and gust speed.&lt;br /&gt;
&lt;br /&gt;
'''Notes'''&lt;br /&gt;
&lt;br /&gt;
* Precipitation is modeled, but the graphics require improvement. Sufficient only to indicate rain.&lt;br /&gt;
&lt;br /&gt;
* Lightning is present when a thunderstorm is near, the graphics are a fair representation, but also require improvement.&lt;br /&gt;
&lt;br /&gt;
* The METAR weather fetch, parsing and rendering process causes momentary reductions in the simulator's frame rates.&lt;br /&gt;
&lt;br /&gt;
* The METAR wind updates are applied without any smoothing, which can cause an aircraft yaw response, sometimes described as a &amp;quot;rudder kick&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
References&lt;br /&gt;
&lt;br /&gt;
If you want to prove the relationship between FG and METAR, you can open the property browser. Monitor &lt;br /&gt;
&lt;br /&gt;
 /environment/metar/max-visibility-m == 9656m&lt;br /&gt;
 &lt;br /&gt;
 and&lt;br /&gt;
 &lt;br /&gt;
 /environment/visibility-m == 9656m&lt;br /&gt;
&lt;br /&gt;
The values should be the same. When you press Z/z on the keyboard, you should see the second value change, showing this value controls the rendered visibility.&lt;br /&gt;
&lt;br /&gt;
You can do the same for cloud layers. For example METAR code SCT 10 translates to coverage: scattered, elevation: 10039 and FG automatically sets thickness and transition for the layer.&lt;br /&gt;
&lt;br /&gt;
== Visuals ==&lt;br /&gt;
&lt;br /&gt;
Settings for maximum visual experience and rendering quality.&lt;br /&gt;
&lt;br /&gt;
FlightGear command options:&lt;br /&gt;
&lt;br /&gt;
 --enable-horizon-effect&lt;br /&gt;
 --enable-clouds3d&lt;br /&gt;
 --enable-specular-highlight (enabled by default)&lt;br /&gt;
 --enable-real-weather-fetch&lt;br /&gt;
 --shading-smooth (default)&lt;br /&gt;
 --enable-skyblend (default)&lt;br /&gt;
 --enable-textures (default)&lt;br /&gt;
&lt;br /&gt;
Sky Blend&lt;br /&gt;
&lt;br /&gt;
This rendering option enables &amp;quot;fog&amp;quot; and haze in the distance. &amp;quot;sky and terrain look realistic&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Smooth Shading&lt;br /&gt;
&lt;br /&gt;
Smooths shading.&lt;br /&gt;
&lt;br /&gt;
Textures&lt;br /&gt;
&lt;br /&gt;
Terrain texturing.&lt;br /&gt;
&lt;br /&gt;
Volumetric (3D) Clouds&lt;br /&gt;
&lt;br /&gt;
''This renders clouds with three-dimensional realism.''&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[Image:Clouds1_2006-06-23.jpg]]&lt;br /&gt;
''Default Clouds''&lt;br /&gt;
| [[Image:Clouds2_2006-06-23.jpg]]&lt;br /&gt;
''Volumetric (3D) Clouds''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Geometry/Resolution&lt;br /&gt;
&lt;br /&gt;
This is the resolution the FlightGear window is rendered in. The higher the resolution, the greater the detail.&lt;br /&gt;
&lt;br /&gt;
 640x480 blocky and lacking in detail&lt;br /&gt;
 800x600&lt;br /&gt;
 1024x768&lt;br /&gt;
 ...&lt;br /&gt;
 1600 x 1200 very fine detail&lt;br /&gt;
 and up&lt;br /&gt;
&lt;br /&gt;
Use anti-aliasing if you video card supports and your system can handle the extra load.&lt;br /&gt;
&lt;br /&gt;
Real Weather (METAR)&lt;br /&gt;
&lt;br /&gt;
This downloads current real world weather data into FlightGear from the nearest weather station (METAR report). The data is used to influence the environment. The cloud cover specified in the METAR report will be rendered.&lt;br /&gt;
&lt;br /&gt;
Time&lt;br /&gt;
&lt;br /&gt;
Set the current time for your location. If it's dark in San Francisco, it will be dark in the sim.&lt;br /&gt;
&lt;br /&gt;
Yoke and Rudder Pedals&lt;br /&gt;
&lt;br /&gt;
Rudder pedals add to realistic operation and make it much easier to accurately use the rudder over a twist stick. The yoke is less necessary, but can add to realism.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Accurate and Detailed Sky Model ===&lt;br /&gt;
&lt;br /&gt;
FlightGear implements extremely accurate time of day modeling with correctly placed sun, moon, stars, and planets for the specified time and date. FlightGear can track the current computer clock time in order to correctly place the sun, moon, stars, etc. in their current and proper place relative to the earth. If it's dawn in Sydney right now, it's dawn in the sim right now when you locate yourself in virtual Sydney. The sun, moon, stars, and planets all follow their correct courses through the sky. This modeling also correctly takes into account seasonal effects so you have 24 hour days north of the arctic circle in the summer, etc. We also illuminate the correctly placed moon with the correctly placed sun to get the correct phase of the moon for the current time/date, just like in real life.&lt;/div&gt;</summary>
		<author><name>Deskin</name></author>
	</entry>
</feed>