I recently updated my FlightRadar24 subscription and realized you can download a .kml containing the flight track of any flight. .kml files can be visualized in Google Earth, and since they also contain the altitude information, allow you to see a flight's progress in 3D.

I found this user interface much easier to manipulate than FlightRadar24's web interface. The only thing I missed was the NAVAids and airways that you can now add as an overlay on FlightRadar24. Since .kml is an open standard, and I have worldwide NAVAids data from my Navigraph subscription for my X-Plane Flight Sim, I decided to convert the Flight Sim navaid data into .kml format.

I wrote a simple Perl script to parse the data and generate .kml files. Now .kml is just another XML layout, and the documentation here was helpful, as was studying other examples. I only needed to create Points (with icons) and Lines, so it was a relatively straightforward affair. You can associate Styles with Icons and Lines so that you can define the look-and-feel in one place.

As for the NAVAids data, I used the dataset from the GNS430 GPS in X-Plane. This is located under Resources/GNS430/navdata for default data shipped with X-Plane. If you have a Navigraph Flight Data subscription, then you'll find a current dataset in Custom Data/GNS430/navdata.

The files here appears to follow some pre-existing standard, as I found a .PDF online which details the file format (attached in case I lose the link).

I managed to find some icons on the internet for VOR, VOR-DME, and also NDB. The navdata contains Glideslope positions also (but no localiser it seems) so I made my own symbol for that.

Running my script on a i6700k CPU takes 13 seconds to process all the data:

shahada@pc-shahada:/usr/local/bin$ time perl convert_NAVaids_to_KML.pl

real 0m13.299s
user 0m13.148s
sys 0m0.144s

and it spews out a whole load of .kml files:

shahada@pc-shahada:/usr/local/myKMLs$ ls
Airways.kml fixes_FV.kml fixes_LP.kml fixes_PK.kml fixes_UM.kml
fixes_A1.kml fixes_FW.kml fixes_LQ.kml fixes_ P.kml fixes_UN.kml
fixes_AG.kml fixes_FX.kml fixes_LR.kml fixes_PL.kml fixes_UO.kml
fixes_AN.kml fixes_FY.kml fixes_LS.kml fixes_PM.kml fixes_UR.kml
fixes_AY.kml fixes_FZ.kml fixes_LT.kml fixes_PT.kml fixes_US.kml
fixes_BG.kml fixes_GA.kml fixes_LU.kml fixes_PW.kml fixes_UT.kml
fixes_BI.kml fixes_GB.kml fixes_LW.kml fixes_RC.kml fixes_UU.kml
fixes_CF.kml fixes_GC.kml fixes_LY.kml fixes_RJ.kml fixes_UW.kml
fixes_CY.kml fixes_GE.kml fixes_LZ.kml fixes_RK.kml fixes_VA.kml
fixes_DA.kml fixes_GF.kml fixes_MB.kml fixes_RO.kml fixes_VC.kml
fixes_DB.kml fixes_GG.kml fixes_MD.kml fixes_RP.kml fixes_VD.kml
fixes_DF.kml fixes_GL.kml fixes_MG.kml fixes_S1.kml fixes_VE.kml
fixes_DG.kml fixes_GM.kml fixes_MH.kml fixes_SA.kml fixes_VG.kml
fixes_DI.kml fixes_GO.kml fixes_MK.kml fixes_SB.kml fixes_VH.kml
fixes_DN.kml fixes_GQ.kml fixes_MM.kml fixes_SC.kml fixes_VI.kml
fixes_DR.kml fixes_GU.kml fixes_MN.kml fixes_SE.kml fixes_VL.kml
fixes_DT.kml fixes_GV.kml fixes_MP.kml fixes_SF.kml fixes_VM.kml
fixes_DX.kml fixes_HA.kml fixes_MR.kml fixes_SG.kml fixes_VN.kml
fixes_EB.kml fixes_HB.kml fixes_MS.kml fixes_SK.kml fixes_VO.kml
fixes_ED.kml fixes_HC.kml fixes_MT.kml fixes_SL.kml fixes_VQ.kml
fixes_EE.kml fixes_HD.kml fixes_MU.kml fixes_SM.kml fixes_VR.kml
fixes_EF.kml fixes_HE.kml fixes_MW.kml fixes_SO.kml fixes_VT.kml
fixes_EG.kml fixes_HH.kml fixes_MY.kml fixes_SP.kml fixes_VV.kml
fixes_EH.kml fixes_HK.kml fixes_MZ.kml fixes_SU.kml fixes_VY.kml
fixes_EI.kml fixes_HL.kml fixes_NC.kml fixes_SV.kml fixes_WA.kml
fixes_EK.kml fixes_HR.kml fixes_NF.kml fixes_SY.kml fixes_WB.kml
fixes_EL.kml fixes_HS.kml fixes_NG.kml fixes_TA.kml fixes_WI.kml
fixes_EN.kml fixes_HT.kml fixes_NI.kml fixes_TB.kml fixes_WM.kml
fixes_EP.kml fixes_HU.kml fixes_NL.kml fixes_TD.kml fixes_WP.kml
fixes_ES.kml fixes_K1.kml fixes_NS.kml fixes_TF.kml fixes_WS.kml
fixes_ET.kml fixes_K2.kml fixes_NT.kml fixes_TG.kml fixes_YB.kml
fixes_EV.kml fixes_K3.kml fixes_NV.kml fixes_TI.kml fixes_YM.kml
fixes_EY.kml fixes_K4.kml fixes_NW.kml fixes_TJ.kml fixes_ZB.kml
fixes_FA.kml fixes_K5.kml fixes_NZ.kml fixes_TK.kml fixes_ZG.kml
fixes_FB.kml fixes_K6.kml fixes_OA.kml fixes_TL.kml fixes_ZH.kml
fixes_FC.kml fixes_K7.kml fixes_OB.kml fixes_TN.kml fixes_ZJ.kml
fixes_FD.kml fixes_ .kml fixes_OE.kml fixes_TQ.kml fixes_ZK.kml
fixes_FE.kml fixes_LA.kml fixes_OI.kml fixes_TT.kml fixes_ZL.kml
fixes_FG.kml fixes_LB.kml fixes_OJ.kml fixes_TU.kml fixes_ZM.kml
fixes_FH.kml fixes_LC.kml fixes_OK.kml fixes_TV.kml fixes_ZP.kml
fixes_FI.kml fixes_LD.kml fixes_OL.kml fixes_TX.kml fixes_ZS.kml
fixes_FJ.kml fixes_LE.kml fixes_OM.kml fixes_UA.kml fixes_ZU.kml
fixes_FK.kml fixes_LF.kml fixes_OO.kml fixes_UB.kml fixes_ZW.kml
fixes_FL.kml fixes_LG.kml fixes_OP.kml fixes_UC.kml fixes_ZY.kml
fixes_FM.kml fixes_LH.kml fixes_OR.kml fixes_UD.kml NAVAids.kml
fixes_FN.kml fixes_LI.kml fixes_OS.kml fixes_UE.kml Pictogram_GS.png
fixes_FO.kml fixes_LJ.kml fixes_OT.kml fixes_UG.kml Pictogram_NDB.png
fixes_FP.kml fixes_LK.kml fixes_OY.kml fixes_UH.kml Pictogram_VOR-DME.png
fixes_FQ.kml fixes_LL.kml fixes_PA.kml fixes_UI.kml Pictogram_VOR.png
fixes_FS.kml fixes_LM.kml fixes_PG.kml fixes_UK.kml
fixes_FT.kml fixes_LO.kml fixes_PH.kml fixes_UL.kml

I organized the fixes by country so that don't need to load all of them if you have a slow machine. Once generated you just drag the .kml files into Google Earth, and them cut-and-paste them from "Temporary Places" into somewhere under "My Places", so they will always be available. You can toggle them on and off using the tickbox as per any other Google Earth layer.

Google Earth's clutter control makes the view manageable, although it can still look crowded:

and here's what it looks like with flightradar24's .kml overlaid. With this it is much easier to study SID and STAR procedures and flight route being flown.

As the navdata is copyrighted and the license forbids redistribution, I can't distribute the .kml files I've generated. However, you can download the latest version of my script from here. You can either use it with the stock X-Plane GNS430 dataset (even off a free trial-version of X-Plane, obtainable from here) or if you want the latest NAVData you can buy a one-off dataset from Navigraph for EUR6.50 from here (you don't even need X-Plane this way).

Two things I would like to improve (if I ever figure them out) are:

  • To add labels on the airways, similar to how road names are labeled.
  • To incorporate SIDS and STARs procedures. These are in the Proc folder in the NavData, and there's a description of how to parse them, but they are a lot more complicated than plotting Points and simple Lines, so will need further studying.

It would also be nice if Google Earth's Search facility would some day search the .kml files under "My Places", so you could just type in the name of a NAVAid and be taken there straight away.

Download PDF