Stefan Koch
Stefan Koch
Live Flight Data Step by Step - Part 8 - How much CO₂ is flying over Switzerland?

Live Flight Data Step by Step - Part 8 - How much CO₂ is flying over Switzerland?

Stefan Koch Stefan Koch
· · 8 min read

Part 7 measured detours in kilometres and compared them with the flat allowances of CO₂ calculators. Kilometres are what I can see. CO₂ is what matters – and that’s a step further away from the data, because a transponder sends position, altitude and speed, but not how much fuel the engines burn.

This post makes that step with an open model, on the same day as the last three parts: 266,832 positions over Switzerland from 20 October, 14:00 to 21 October, 11:59. The headline number is easy to compute. Saying how much it can be trusted takes most of the post.

Step 1: which aircraft is it?

Fuel depends on the aircraft type, and the positions don’t contain it. They contain the transponder address, icao24 – a unique code per airframe. The OpenSky Network’s aircraft database maps those addresses to registration, model and ICAO type code: A320, B738, B77W. It’s crowdsourced – almost 590,000 airframes in my copy – licensed for non-profit research and education – and not to be redistributed, so it stays in my local database and only aggregates appear here.

Of the 2,654 aircraft in my day, 2,269 (85 %) have a type code in the database – 171 different types.

Step 2: a model that turns flight data into fuel

OpenAP is an open aircraft performance model from TU Delft (source on GitHub, LGPL licence). For a given type, it estimates the fuel flow from mass, true airspeed, altitude and vertical speed:

import openap

ff = openap.FuelFlow("A320")
kg_per_s = ff.enroute(mass=65_000, tas=450, alt=36_000, vs=0)   # kg, knots, feet, ft/min
kg_per_h = kg_per_s * 3600                                      # 2,660 kg/h
co2_per_h = kg_per_h * 3.16                                     # 8,406 kg CO₂/h

An A320 at 65 tonnes, 450 knots and 36,000 feet, flying level: 2,660 kg of fuel per hour, which is about 8.4 tonnes of CO₂. The factor 3.16 – kilograms of CO₂ per kilogram of jet fuel – is the one the ICAO calculator methodology uses: “3.16 = constant representing the number of tonnes of CO2 produced by burning a tonne of” fuel.

Three of the four inputs come from silver: altitude, vertical rate, and speed – ground speed, strictly, because ADS-B doesn’t know the wind; OpenAP wants the speed through the air. The fourth input is the problem.

The unknown that matters most: mass

ADS-B doesn’t say how heavy an aircraft is: how many passengers, how much cargo, how much fuel is still on board. The course module makes an assumption – halfway between the type’s empty weight and its maximum take-off weight, from OpenAP’s own aircraft data. For an A320 that’s about 60 tonnes.

How much that assumption moves the result is easy to measure: run everything three times.

Assumed massCO₂ over Switzerland, 22 hours
empty weight7,201 t
halfway (the assumption)8,781 t
maximum take-off weight10,879 t

−18 % to +24 % from this one unknown, before wind, engine variant or the model’s own error. Real aircraft are never empty and rarely at maximum take-off weight, so the true value is somewhere inside – but where, the data can’t tell.

Adding it up over time

A fuel flow is per hour; I need kilograms. Every position stands for the time until the same aircraft’s next position, capped at twice the typical interval (32 seconds here, so at most 64 seconds) – an aircraft that disappears for ten minutes isn’t assumed to keep burning.

That rule also takes care of the problem from part 5: in the evening, two collectors were running, and silver has twice as many positions. Each of them stands for half as long, so the CO₂ doesn’t double.

What the model can’t see

OpenAP has models for the common airliners, and it maps some more types to similar ones – in my data, 5 % of the estimated positions use such a substitute. Everything else gets no estimate: aircraft on the ground or slower than 100 knots, and types without a model.

The result: 70 % of the positions of aircraft flying faster than 100 knots get a fuel estimate – 1,751 aircraft. 514 aircraft have a type OpenAP doesn’t model. Business jets and turboprops are the expected gaps (PC12, E55P, CL35, GLEX), helicopters and light aircraft too. The surprise was the biggest one: the Airbus A220-300 (BCS3), 59 aircraft that day, 23 of them flown by Swiss and 23 by Air France. Together with the Embraer E2 (E290, E295), that leaves Swiss with an estimate for only 53 % of its flying positions.

So any ranking by airline is a ranking of what the model knows. The estimated top four – Ryanair 1,191 t, Swiss 569 t, Lufthansa 499 t, easyJet Europe 499 t – look like a result, but Swiss’s number is missing almost half its flying. I wouldn’t publish that ranking as a finding, and here it’s only an example of why.

The day in tonnes

Stacked bars of estimated CO₂ per hour over Switzerland: around 450 to 680 tonnes per hour during the day, falling to 37 tonnes at 2 a.m.; wide-body types make up a large share at 4 and 5 a.m.

Between 37 tonnes at 2 a.m. and 675 tonnes at 10 a.m. The orange part is wide-body types – B777, B787, A330, A350. They are 257 of the 1,751 modelled aircraft, 15 %, and emit 26 % of the estimated CO₂. At 4 and 5 a.m., when there’s little short-haul traffic, they’re 61 % of it.

The cover image shows the same in a single moment: 21 October, 10:04:18, the 90 aircraft over Switzerland with an estimate, each a circle whose area is its CO₂ per hour. The eight orange ones are wide-body types – 9 % of the aircraft, 30 % of the 819 tonnes per hour they emitted together at that moment.

Per aircraft type, the cruise fuel flows look like this:

Horizontal bars of median fuel flow in cruise above 30,000 ft per type: from 1,456 kg/h for the A320neo to 10,995 kg/h for the Boeing 777-300ER

From 1,456 kg per hour for the A320neo to almost 11,000 for the Boeing 777-300ER. One comparison in that chart made me check the model directly: the A320neo at 1,456 kg/h against 2,500 for the classic A320. With identical inputs – 60 tonnes, 450 knots, 36,000 feet – OpenAP gives 1,441 kg/h for the A320neo and 2,520 for the A320: 43 % less. That’s a property of the engine data in the model, not something my positions show, and it’s larger than I’d claim for the real aircraft without a second source. Comparisons between types are where a model like this is weakest.

Back to the calculators

Part 7 compared detours with myclimate’s flat 95 km per flight. With the model, that allowance gets a weight. An A320 in cruise at 450 knots covers 833 km per hour and burns 2,660 kg in that time – about 3.2 kg of fuel per kilometre. 95 km is then about 300 kg of fuel, roughly 960 kg of CO₂. The median detour I could see over Switzerland, 35 km, is about 350 kg of CO₂ for the same aircraft.

That’s an illustration with one aircraft at one assumed mass, not a verdict on the calculators. But it shows the order of magnitude: the allowances aren’t a rounding detail, they’re tonnes per flight.

What I take from this

The model turns three columns from silver into a number with a unit everyone understands, in half a second for a whole day. That’s exactly what makes it dangerous: 8,781 tonnes looks precise. Written honestly, it’s “roughly 7,000 to 11,000 tonnes from the aircraft the model knows, which is 70 % of the flying traffic” – a different sentence, and the one I’d put on a slide.

What’s next

CO₂ isn’t the whole climate effect of flying. For 2018, Lee et al. (2021) estimate the effective radiative forcing of contrail cirrus at 57.4 mW m⁻² and that of aviation’s CO₂ at 34.3 mW m⁻² – and whether an aircraft leaves a lasting contrail depends on the weather at its altitude. Next part: weather at flight level.

Data source

Flight data: The OpenSky Network – Matthias Schäfer, Martin Strohmeier, Vincent Lenders, Ivan Martinovic and Matthias Wilhelm. “Bringing Up OpenSky: A Large-scale ADS-B Sensor Network for Research”. In Proceedings of the 13th IEEE/ACM International Symposium on Information Processing in Sensor Networks (IPSN), pages 83–94, April 2014. doi:10.1109/IPSN.2014.6846743

Aircraft types: OpenSky Network aircraft database. Fuel model: OpenAP, TU Delft.

Model and data

CO₂ calculators

Related posts

Related Articles

Comments

Comments are powered by giscus. You need a GitHub account to comment.