Route Sources
The flight routes that VRS uses have been compiled from two sources: an automated extraction of routes from from ACARS logs compiled by http://www.acarsd.org/ and routes manually entered by users.
Route Statistics
The routes were last compiled on 24 Apr 2018 and contain 289,022 entries. 129,776 routes (44.9%) were collated from ACARS records over the period 01 Dec 2009 to 24 Apr 2018 and 159,246 routes (55.1%) were entered over the period 20 Feb 2013 to the present day by the following users:
User | Routes |
---|---|
Slavi | 20,617 |
Pascal Ensinck | 13,267 |
Jon Fear | 12,792 |
bigrossco | 7,127 |
Bernie | 6,135 |
elljay | 4,584 |
MartinC | 4,444 |
HE9JSD, Georges | 4,162 |
EDDT Manu | 3,569 |
CharlieAlpha | 3,335 |
CSV Files
Older versions of Virtual Radar Server loaded route data from CSV files that were downloaded every day. The CSV files are no longer in use (with the exception of the FlightNumberCoverage file) but they continue to be compiled and made available for users who are still running the older versions of VRS.
- FlightNumberCoverage.csv
-
This is a comma-separated list with one row containing information about the current
flight route files. The fields are:
- StartDate
- The date of the first ACARS report in yyyy-mm-dd format.
- EndDate
- The date of the last ACARS report in yyyy-mm-dd format.
- Count
- The number of flight routes gleaned from the ACARS reports and entered by users.
- AirlinesMD5
- The MD5 checksum of the latest Airlines.csv file (no longer used by VRS).
- AirportsMD5
- The MD5 checksum of the latest Airports.csv file (no longer used by VRS).
- TypesMD5
- The MD5 checksum of the latest AircraftTypes.csv file (no longer used by VRS).
- CodeBlocksMD5
- The MD5 checksum of the latest Countries.dat file (no longer used by VRS).
- StandingDataZipMD5
- The MD5 checksum of the latest StandingData.sqb.gz file available for download.
- BasicLookupZipMD5
- The MD5 checksum of the latest BasicAircraftLookup.sqb.gz file (no longer used by VRS).
- FlightNumbers.csv
-
This is a comma-separated list of each route. The fields are:
- AirlineCode
- Usually the IATA code of the airline, occasionally the ICAO code.
- FlightNumber
- The flight number with leading zeros stripped off. Usually a simple number but can contain text as well.
- Route
- the airports that constitute the route, separated by hyphens. Usually the ICAO codes of the airports but occasionally the IATA code is used.
- FlightNumberVotes.csv
-
This is a comma-separated list recording the history of all flights and routes seen
across all of the ACARS reports. ACARS transmissions occasionally contain mistakes
or ommissions in the flight number or route. What the code does is keep a history
(in this file) of the routes seen for every flight number, recording against each
one the number of times it was seen and the date it was last seen. From this it
chooses the most popular route for a flight number for inclusion in the FlightNumbers.csv
file.
This does not contain any flights that have been entered by users. Some flights may appear in here even though they are not included in the compiled routes. The fields in the history file are:- AirlineCode
- usually the IATA code of the airline, occasionally the ICAO code.
- FlightNumber
- the flight number with leading 0s stripped off.
- Route
- the route seen against this airline code / flight number.
- Votes
- the number of times this route was seen for this airline code / flight number.
- LastSeen
- the date, in yyyy-mm-dd format, that this route was last seen for this airline code / flight number.
- Winner
- Y if the route is used in the FlightNumbers.csv file, N if it is considered to be a mistake and has been ignored.
Database Files
From version 1.2 Virtual Radar Server switched over from using the CSV files to using an SQLite database of standing data, which includes flight routes.
A GZIP archive of the current database can be downloaded from here: StandingData.sqb.gz
The schema diagram for the database is here. Note that some indexes which you would usually expect to see on the tables are omitted to keep the file size down. Only indexes that support Virtual Radar Server's usage are present. The tables are:
- DatabaseVersion
- One record holding the schema version and creation date of the database file.
- Route
- One record per flight route.
- RouteStop
- One record per stopover in a route. The order of stopovers is indicated by SequenceNo. A route with no stopovers will have no RouteStop record.
- Operator
- One record per airline.
- Airport
- One record per airport.
- Country
- One record per country. As two different sources are used to build this table some countries may be in there twice if the two sources refer to it with different names.
- CodeBlock
- One record per ICAO24 allocation block for a country. See notes below.
- AircraftType
- One record per ICAO8643 aircraft type.
- Model
- One record per aircraft model. Every aircraft type has at least one model.
- Manufacturer
- One record per manufacturer of an aircraft model. Generic models (e.g. "Balloon") do not have a manufacturer.
- AircraftTypeModel
- One record per combination of AircraftType and Model. Many Models can be referred to by the same AircraftType ICAO code.
- EngineType
- One record per ICAO8643 engine type.
- EnginePlacement
- One record per engine placement enum value. Introduced in version 5 of the schema.
- Species
- One record per ICAO8643 species.
- WakeTurbulence
- One record per ICAO8643 wake turbulence category.
Using the route tables directly is not recommended as they are subject to change without notice. The views are less likely to be changed. They are:
- RouteView
- A join between Route, Operator, Airport and Country. Does not include stopovers.
- RouteStopView
- A join between RouteStop, Airport and Country.
- AircraftTypeView
- A join between AircraftTypeModel, AircraftType, Model, Manufacturer, EngineType, Species and WakeTurbulence.
- AircraftTypeNoEnumsView
- A join between AircraftTypeModel, AircraftType, Model and Manufacturer.
- CodeBlockView
- A join between CodeBlock and Country.
CodeBlock Lookup
The CodeBlock records tell you which country an ICAO24 was allocated to and give an indication as to whether the ICAO24 is used by that country's military. They are compiled from the latest countries.dat file as maintained by Kinetic forum user 'SabreJV' and hosted by Kinetic forum user 'Bones'.
The steps to find the correct CodeBlock (or CodeBlockView) record for an ICAO24 are:
- Sort the CodeBlocks into descending order of
SignificantBitMask
. - Find the first CodeBlock record where the result of anding
SignificantBitMask
and the ICAO24 equals theBitMask
.
This C# function shows the procedure:
CodeBlockView FindCodeBlockView(IEnumerable<CodeBlockView> codeBlocks, int icao24) { CodeBlockView result = null; foreach(var codeBlock in codeBlocks.OrderByDescending(r => r.SignificantBitMask)) { if((icao24 & codeBlock.SignificantBitMask) == codeBlock.BitMask) { result = codeBlock; break; } } return result; }
CodeBlock Overrides
The code block records in the standing data database indicate which country's register an aircraft's ICAO belongs to, and whether that aircraft is military or civilian.
There are some disagreements over what constitutes a military agency - for example, in some countries the police are a civil agency whereas in others they are a military agency, so some people might consider their helicopters to be military while others might consider them to be civilian.
Starting with version 2 of Virtual Radar Server you can override the IsMilitary flag in the standing data database for individual ICAOs.
To do this you have to create a file called LocalAircraft.txt in Virtual Radar Server's
configuration folder (to get to the configuration folder go to Help | About
and click the
link to the configuration folder there).
An example of the file's content is as follows:
# The hash symbol denotes the start of a comment. All text after the hash, # up to the end of the line, is ignored. # Blank lines are also ignored. # You need to tell VRS which country an overridden ICAO belongs to. # To do this put the country's name in square brackets. # All ICAOs following a country's name will be shown as being in that country's register. [United Kingdom] # Each aircraft override must be on a line of its own. # An aircraft override consists of the ICAO, in hex, followed by either CIV or MIL to # indicate that it is civilian or military. # Neither the ICAO nor the civ/mil indicator are case sensitive. # The number of spaces or tabs between the ICAO and civ/mil indicator are not important. 3986e8 mil # An Air France Regional E170 40612c mil # An easyJet A319 [Made-up Country] 484397 civ # An Arkefly B767
In the example above the Air France and easyJet aircraft will be shown as military jets on the United Kingdom's register while the Arkefly B767 will be a civilian jet on Made-Up Country's register.
Loading the File
Virtual Radar Server will read your LocalAircraft.txt file every time it caches data from the standing data database. This happens when the server first starts and after a new standing data database is downloaded from the server, which generally happens once every 24 hours.
Error Logging
If the server finds a mistake in the syntax of your LocalAircraft.txt file then it will write
messages to the VirtualRadarLog.txt file. You can get to this via the Tools | Open VirtualRadarLog.txt
menu entry.
Custom Routes
Virtual Radar Server no longer supports custom routes. If you have existing custom route files for routes that are not known to VRS then please submit them here.