Which aircraft fly in which year, at El Prat and Ibiza
Move the timeline in Chronotopia and the aircraft change with the buildings. At El Prat in 1960 the apron is mostly Iberia DC-3s and DC-4s, with Air France’s first Caravelles and BEA Viscounts among them. In 1995 it’s MD-80s, DC-9s and the first A320s. In 2025 Vueling’s A320neos are a fifth of what lands, and an Emirates A380 is in the mix, at about one aircraft in 200.
None of that is a recording of real flights. Each airport has a table of which aircraft types flew there, for which airlines, in which years and roughly how often, and the app draws from it. This article is about that table, how the app turns it into traffic for any year, and which parts come from sources and which are our estimates. It follows the introduction to the project and the articles on the terrain, dating from aerial photos and runways.
One row per type and airline
Each site has a fleet.json file. A row is an aircraft type, an airline, a first year, a last year and a weight, which is roughly that row’s share of the airport’s flights. Two rows from the files:
["bristol170", "aviaco", 1958, 1966, 4],
["a380", "emirates", 2019, 2040, 0.4],
The first is Aviaco’s Bristol 170 freighters, which carried passengers to Ibiza from Palma and Barcelona in its first years of scheduled flights. The second is the A380, which the model has Emirates flying to El Prat from 2019. Rows run on to 2040 so that the planned future still has traffic.
Strings in the same file are comments that divide the history into periods: “First jets”, “DC-9s, 727s and the charter boom”, “Airbus and 737NG era: Vueling hub, low-cost carriers, long-haul”. El Prat has 118 rows with 37 types and 39 airlines; Ibiza has 99 rows with 33 types and 38 airlines.
The types are 39 shapes built from a few numbers each: the fuselage’s length and diameter, the wings’ span and sweep, the tail, and where the engines go. Some stand for a family. “dc4” covers the DC-4, DC-6 and DC-7, “dc8” the DC-8 and the Boeing 707, and three business-jet sizes cover everything from a Phenom 300 to a Global 6000. Only one type isn’t used at El Prat: the Bristol 170, with its high wing, two radial engines and boxy nose, which flew to Ibiza and Palma.
Picking an aircraft
For a given year, every row whose years include it takes part, and overlapping rows simply compete by weight. Each weight ramps in and out over about two years, so a row counts for half in its first and last year. Then the app draws one row, with a probability proportional to its weight. From src/engine/fleetMix.ts:
/** Weights ramp in and out over a couple of years around each entry's dates. */
private at(year: number) {
const ramp = (x: number) => Math.min(1, Math.max(0, x / 2 + 0.5));
return this.rows.map(([t, a, from, to, w]) => [t, a, w * ramp(year - from) * ramp(to - year)] as const).filter(([, , w]) => w > 0);
}
pick(year: number, r: number, ga?: boolean, cargo = false, airline?: (a: string, t: TypeId) => boolean, boost?: Record<string, number>): Variant | null {
const m = this.at(year)
.filter(([t, a]) => (ga === undefined || isGa(t) === ga) && CARGO.has(a) === cargo && (!airline || airline(a, t)))
.map(([t, a, w]) => [t, a, w * (boost?.[a] ?? 1)] as const);
if (!m.length) return null;
const total = m.reduce((s, [, , w]) => s + w, 0);
let x = r * total;
for (const [t, a, w] of m) if ((x -= w) <= 0) return variant(t, a, year);
const [t, a] = m[m.length - 1];
return variant(t, a, year);
}
The extra arguments keep freighters, business jets and airlines tied to one terminal in their own pools, and let a home-based airline weigh more on the stands. The random number r isn’t really random. It comes from a hash of the flight’s number, or of the stand’s position, so the same year always shows the same aircraft in the same places. A link to El Prat in 1972 looks the same for everyone who opens it.
With the weights as they are, the mix for a few years works out like this:
| Year | Airport | Largest shares by type | Largest shares by airline |
|---|---|---|---|
| 1960 | El Prat | DC-3 37%, DC-4 25%, Convair 13% | Iberia 44%, Aviaco 16%, Air France 14% |
| 1995 | El Prat | MD-80 25%, A320 18%, DC-9 18% | Iberia 42%, Aviaco 11%, Spanair 10% |
| 2025 | El Prat | 737-800 24%, A320neo 21%, A320 16% | Vueling 30%, Ryanair 14%, Iberia 14% |
| 1960 | Ibiza | DC-3 60%, Bristol 170 40% | Iberia 40%, Aviaco 60% |
| 1970 | Ibiza | DC-9 34%, DC-3 11%, Caravelle 11% | Iberia 26%, Aviaco 25%, Dan-Air 11% |
| 2025 | Ibiza | 737-800 30%, A320 18%, A320neo 15% | Ryanair 16%, Vueling 15%, easyJet 10% |
Long-haul aircraft are rare at El Prat: the A380 is 0.5% of the 2025 airliner weight. At Ibiza in 2025, business jets add up to 16.7% of the mix, close to the 16% the file’s comment cites from the European Business Aviation Association.
How many are flying
The number of flights comes from each airport’s yearly movement figures. 2025 is the “real-time” year at El Prat and Ibiza alike: at El Prat that is about 490 arrivals a day, spread over 18 hours, one landing every 130 seconds or so, with about 40 minutes on the stand. Ibiza is shown on a summer day, with its yearly average multiplied by 1.8: August 2025 had about 420 movements a day, against 86 a day in January.
Earlier years are shown busier than they were, on purpose. From src/engine/aircraft.ts:
const refI = every(ref);
const interval = Math.min(420, refI * (every(mv) / refI) ** 0.25);
The landing interval grows only with the fourth root of the real one, and never goes past seven minutes. El Prat in 1960 had about 38 arrivals a day, one every 28 minutes over 18 hours; the model lands one every four minutes, because an empty airport for half an hour tells you nothing. The app also caps the flights in the air at 30 on a computer and 12 on a phone.
Parked aircraft follow their own curve over the years: at El Prat, about 17 on the stands in 1960 and 91 in 2025. Each stand draws its own type from the same mix, and a draw that doesn’t fit the stand is skipped, so an A380 never ends up on a stand built for a regional jet. Business jets have their own stands, airliners waiting for the maintenance hangar have theirs, and at El Prat DHL and FedEx freighters park only on the cargo aprons. Since T1 opened, El Prat’s main airlines also keep to their own terminal: Vueling, Iberia and their partners at T1, the low-cost carriers at T2.
Getting on board
Passengers are small figures, and how they reach the aircraft depends on the year:
- Walking across the apron to the steps: until 1965 at El Prat and 1973 at Ibiza.
- Jet bridges, from 1991 at El Prat and 2012 at Ibiza, for large aircraft parked with the front door within 55 m of a terminal.
- Buses for everything else.
- Cars for business jets: one to four passengers driven from the business-aviation terminal to the aircraft’s own airstair.
Stair trucks appear from 1958, and the number of baggage carts per aircraft grows over the decades.
Liveries at airport scale
There are no textures. Each livery is a handful of colour rules: the top and belly colours and where they meet, cheatlines, a band of titles, the nose, and a tail design built from simple shapes such as discs, stripes or the Swiss cross. That’s enough to recognise an airline from the distance you usually view an airport from, and not much more. The comment in fleetMix.ts describes them as simplified to what reads at airport scale.
There are 85 liveries for 75 airlines. Seven change livery with the year: Iberia in 1977 and 2013, British Airways from BEA colours in 1974 and again in 1984 and 1997, Air France, Lufthansa, Swissair to Swiss, Thomson to TUI, and the Spanish Air Force, from Italian camouflage to natural metal in 1940. Private jets get invented schemes, white with a pair of stripes in a few owners’ colours.
A few aircraft are not rows at all. Two retired MD-80s, in plain white, stand on El Prat’s fire-training pad from 2019, and Ibiza’s heliport has two helicopters and a firefighting Air Tractor. The Antonov An-225, the only one ever built, destroyed in 2022, is a “visitor” at El Prat: between 1989 and 2021 it has its own stand and turns up in about 30% of its 19-minute cycles. That frequency is ours; the model doesn’t claim the real aircraft visited that often.
What’s sourced and what’s estimated
- The types and airlines of each period are researched; the weights are estimates. For Ibiza, the research behind the file confirms types such as the Aviaco Bristol 170, Iberia’s DC-3s and Caravelles, the Fokker F27, the charter airlines of the 1960s and 70s, Air Nostrum and Turkish Airlines’ A330, but most of the weights are estimated shares, not counted ones. El Prat’s rows have no sources beyond their comments.
- Some aircraft are stand-ins. Types we haven’t modelled are drawn as the nearest one: Court Line’s TriStar at Ibiza appears as a DC-10, and a BAC One-Eleven as a DC-9.
- The years are fleet years. A row’s first and last year say when that airline flew that type, not necessarily when it served this airport.
- Liveries change overnight. When an airline changes its colours in the model, its whole fleet repaints on 1 January.
- Past traffic is overstated, as described above, and the movement figures behind it are estimates: at El Prat the whole series is worked out from passenger numbers, and at Ibiza before 1999.
- Rare aircraft may never show. Because the same year always gives the same draws, a type with a small weight may simply not appear in a particular year, even though it’s eligible.
If you flew from one of these airports and remember what was on the apron, and it isn’t what the model shows, tell us. A timetable, a photo with a date, or an airline’s fleet history is enough to fix a row.