Noob questions, part 1


#1

Hi,

My name is Martijn Rammeloo, and as a hobby I am a ‘virtual air traffic controller’ with Dutchvacc (www.dutchvacc.nl), within the global VATSIM network. Our aim is to control the virtual air traffic above the Netherlands as safely and realistically as possible. One of the aspects we pay attention to, is assigning gates to inbound flights that resemble the actual gate assignement as closely as possible. In order to do so, we take the airline, aircraft type and the origin of the flight into account. We pay extra attention to so-called ‘real-life flights’: virtual flights that use a real-life callsign. We try to assign these flights the exact same gate that the actual flight received on that day.

In order to make life for our ground controllers a bit easier, I have been developing the ‘EHAM Gate Planner’ (ehamgateplanner.rammeloo.com). However, the website that provides me the real world gates uses flightnumbers, while the VATSIM network uses callsigns. Hence, I need a tool to translate callsigns into flightnumbers. To make matters worse, airlines like KLM use so-called alphanumeric callsigns: KLM18S is actually flight KL1662, KLM86 is flight KL692 etc. So, just changing the ICAO airline code (KLM) into the IATA airline code (KL) will not always suffice. Besides the flightnumber, I am also interested in the origin of the real world flight, in order to exclude ‘false positives’: pilots that use a real world callsign only by accident.

Flight Aware seems to fit my needs well, but (to me as a very inexperienced developer) it is VERY overwhelming, both from a technical perspective (SOAP, REST: never heard of…) as the sheer number of API’s/options to choose from. To eat the proverbial elephant spoon-by-spoon, my first questions are:

  • What would be the best API to translate a given callsign into an actual flightnumber, and give me the origin airport as well (preferably ICAO, IATA otherwise)? The Flight Aware frontpage recognizes alphanumeric callsigns just fine, so I guess Flight Aware is capable of linking callsigns and flightnumbers. For example: entering KLM54W (callsign) is perfectly recognized as flightnumber (KLM) 1364.
  • What ‘class‘ would this query be? Even though I guess we would only make 50-100 queries a day, we are a non-commercial community, working with volunteers only. Hence it is obvious that we are looking for a cheap (yet durable) solution.

If I am satisfied that Flight Aware can offer me a fitting and affordable solution, I ‘might have’ some technical questions :slight_smile:

Kind regards,

Martijn Rammeloo


#2

Update:

I received an API key, and did some succesful tests. However… entering an alphanumerical callsign as “ident” in FlightInfoEx gives no results:

array(3) { “faultstring”]=> string(17) “no data available” “faultcode”]=> string(6) “CLIENT” “detail”]=> array(1) { “errorInfo”]=> array(1) { “errorCode”]=> string(4) “NONE” } } }

(I expected flight KL1364, EPWA - EHAM)

What is the magic trick to make this conversion work? The flightaware webpage can do it, so there must somehow be a way.

Martijn


#3

Hey Martijn,
I tried that call to FlightInfoEx with what you call alphanumeric callsigns, and it did work for me:
https://flightxml.flightaware.com/json/FlightXML2/FlightInfoEx?ident=KL1364&howMany=3

result:



{"FlightInfoExResult":{"next_offset":3,"flights":{"faFlightID":"KLM1364-1461734987-airline-0052","ident":"KLM1364","aircrafttype":"B739","filed_ete":"01:45:00","filed_time":1461734987,"filed_departuretime":1461925500,"filed_airspeed_kts":341,"filed_airspeed_mach":"","filed_altitude":0,"route":"","actualdeparturetime":0,"estimatedarrivaltime":1461932400,"actualarrivaltime":0,"diverted":"","origin":"EPWA","destination":"EHAM","originName":"Warsaw Frederic Chopin","originCity":"Warsaw","destinationName":"Amsterdam Schiphol","destinationCity":"Amsterdam"},{"faFlightID":"KLM1364-1461648657-airline-0218","ident":"KLM1364","aircrafttype":"B738","filed_ete":"01:45:00","filed_time":1461648657,"filed_departuretime":1461839100,"filed_airspeed_kts":341,"filed_airspeed_mach":"","filed_altitude":0,"route":"","actualdeparturetime":0,"estimatedarrivaltime":1461846000,"actualarrivaltime":0,"diverted":"","origin":"EPWA","destination":"EHAM","originName":"Warsaw Frederic Chopin","originCity":"Warsaw","destinationName":"Amsterdam Schiphol","destinationCity":"Amsterdam"},{"faFlightID":"KLM1364-1461562117-airline-0266:0","ident":"KLM1364","aircrafttype":"B739","filed_ete":"01:45:00","filed_time":1461562117,"filed_departuretime":1461752700,"filed_airspeed_kts":341,"filed_airspeed_mach":"","filed_altitude":0,"route":"","actualdeparturetime":1461753240,"estimatedarrivaltime":1461758880,"actualarrivaltime":1461758895,"diverted":"","origin":"EPWA","destination":"EHAM","originName":"Warsaw Frederic Chopin","originCity":"Warsaw","destinationName":"Amsterdam Schiphol","destinationCity":"Amsterdam"}]}}

Could you show us the part where you call FlightInfoEx?


#4

My goal is to use the callsign as ident, and translate it into a flightnumber. In this case that would be KLM54W. If I enter that on your frontpage, it (correctly) gives me flight KL(M)1364 as a result, as expected.

However, I am looking for a way to reach the same result via the API.

Kind regards,

Martijn


#5

Martijn,

FlightInfoEx does not currently make the KLM54W -> KL(M)1364 translation, but the team is trying to add it for you. It may take a few days, would that be ok?
The result of the call probably has everything you need as you see in the example.
This page will give you an idea of the costs, it is Class 3
flightaware.com/commercial/flig … _class.rvt


#6

Martijn,
You should be able to call FlightInfoEx with callsigns such as KLM18S starting this coming Friday.


#7

That is wonderful news!

I’ll be busy with another project next week, but after that I’ll be a regular (yet small…) customer!

Kind regards,

Martijn


#8

I hope it works well for you. It’s a new feature so let us know if you see any issues and someone here might look into that.


#9

Wilco, thanks again!


#10

Christmas comes early this year: the conversion seems to work just fine!

Thanks once more. In a week or so, I will implement this feature in my application.

Kind regards!

Martijn Rammeloo


#11

As planned, I implemented this feature in my ‘EHAM gate planner’, and it works very well!

However… (callsign) KLM86 is not recognised as (flightnumber) KL(M)692.

Edit: I checked all alphanumerical callsigns currently in use with KLM. FA returns the proper flightnumbers of all of them, EXCEPT the callsigns with numbers only (KLM214, KLM24, KLM256, KLM282, KLM394, KLM48 and KLM86. Although it is easy for me to put these ‘exceptions’ in a seperate database table, it would be more convenient to retrieve them automatically.

Any idea what is going wrong?

Martijn


#12

Our callsign mapping technology does not currently match pure numeric flight abbreviations very reliably at the moment (it varies by airline and flight number), but we are always making incremental improvements so this may not always be the case.


#13

Hi, there! Today noticed three callsigns that were not recognized by FlighAware: TRA64F, TRA1C and TRA74N. All of them Transavia flights, all of them alphanumerical callsigns. Is there an issue with this specific airline?

Kind regards,

Martijn


#14

I don’t know anything specifically about that airlines, but our matching technology is an area of constant improvement so it may get better in the future. I’ve submitted an internal ticket about that airline to investigate, however.


#15

You should be able to see some gradual improvement to Transavia flights over the next two days because we have imported some new flight mapping data. It may or may not be completely exhaustive of all of their flights though.


#16

Thanks!


#17

The recognition of Transavia flights is still far from ideal. Examples: TRA3C and TRA8A, the latter being a daily flight. It seems that flightradar24 has no problems matching the alphanumerical callsign with a flightnumber, so there must be a way.

I really hope you can resolve this issue!

Martijn


#18

I’ve conveyed your feedback to the developer for more consideration.