Skip to content

6 September 2026

A gain figure without its smoothing window means nothing

The Berlin course reads 197 m of climb on a raw global elevation model, 115 m on a bare-earth one, 68 m smoothed over 200 m and 35.9 m smoothed over a kilometre. Same course, same day. We filed one of those figures under the wrong window ourselves, and a schema caught it before a film did.

Berlin Marathon elevationdataberlin

Here is the elevation gain of the Berlin Marathon course, measured four ways.

On Copernicus GLO-30, the global elevation model almost everybody uses: 197 m. On Berlin’s own one-metre bare-earth model, sampled every 50 m and not smoothed at all: 115 m. Smoothed over 200 m: 68 m. Smoothed over a kilometre: 35.9 m.

Same course, same day, same arithmetic. A factor of nearly six between the ends of that list, and not one of those numbers is a mistake. They are four different questions, and only one of them is the question a course profile is supposed to answer.

There are two traps here. The first is well known and easy to explain. The second is the one that actually got us, and it got us in public.

The first trap: a global DEM contains the buildings

Copernicus GLO-30 is a digital surface model. It records the height of whatever the radar hit first. Over a field that is the field. Over a forest it is the canopy. Over Potsdamer Platz it is the roof of the Kollhoff Tower, and the model does not label which is which.

So when a course profile crosses a city block, the sampled height steps up by however tall the buildings are, holds for a few pixels, and steps back down at the far side. In Berlin that step is routinely ten metres, and it happens hundreds of times over 42 km.

Elevation gain is a sum of positive differences, which means it has no cancellation. A step up followed by an equal step down does not net to zero the way an average would: it adds the step to the total and then adds nothing back. Noise cannot reduce gain. It can only inflate it. That is why the error is so one-directional and so large.

The tell in Berlin is an apparent climb at km 38. On the raw profile it is the biggest feature of the whole race, a convincing ramp arriving exactly where a marathon story wants one, at the point where a runner is emptiest. Sample the bare-earth model at the same place and the ground reads 34.8 m, which is 1.2 m above the start line. There is no hill there. There are towers.

Put a vertical exaggeration of eight on that profile, as any flat-course flyover must, and you have asserted a mountain that does not exist, at the most dramatically convenient point on the course, on camera. That is not a rendering bug. It is a film making a confident factual claim about a race and being wrong.

The second trap: the window is part of the number

Swapping the surface model for a bare-earth one fixes the buildings and does not fix this. Berlin’s ATKIS DGM1 is one-metre, bare earth by definition, and sampled raw it still reports 115 m of gain over the course, because kerbs, ramps, camber and bridge decks are all real ground and all noise at the scale of a marathon. You have to smooth. And the moment you smooth, the width of the window you smoothed over is part of the number you produced.

A kilometre is the honest window for a city. It is long enough to swallow a block and short enough to keep any real landform, because real landforms are hundreds of metres across at minimum. Under 200 m you are still measuring street furniture; over 2 km you are flattening things a runner would feel.

We knew all of that, wrote it down, and then filed a figure against the wrong window anyway. This note used to say the real gain in Berlin was about 68 m. It also said to smooth over at least a kilometre. Both halves were fine on their own. Together they were wrong, because 68 m is what you get from a roughly 200 m window - the figure had been carried over from an earlier pass and never relabelled. At one kilometre the answer is 35.9 m.

What caught it was not a re-read. It was the data model: our course schema requires smoothingWindowKm on any elevation series, so when the series was finally sampled, the window had to be written down next to the gain, and the two did not agree. A number that had looked settled for a day turned out to have been unlabelled rather than incorrect, which is a distinction that only exists once you are forced to state the label.

That is the reason the requirement exists, and it is worth being blunt about how little discipline achieves here by comparison. The rule did not survive because we were careful. It survived because it cost something to break.

What we publish, and how it is marked

The Berlin course profile ships as 35.9 m of gain at a one-kilometre smoothing window and 200 m sample spacing, and that window is printed in the chart’s own axis label, in the same line as the vertical exaggeration. Not as a footnote under the graphic. A gain figure and its window are one statement, so they travel together or the figure should not be shown.

The spacing belongs in that statement for the same reason the window does, and we learned it the same way. Gain is a sum of positive differences, so adding samples can only add to it: the identical one-kilometre series reads 35.9 m at the 200 m spacing we publish and 37.4 m at the 50 m spacing the file is sampled at. Two numbers, one course, no error.

The rest of the profile is just as small. Total relief over the whole race is 18.4 m: the low point is 33.1 m at km 4.5, the high point 51.5 m at km 28.1. The course sits flat between 33 and 36 m for its first 22 km, lifts to about 49 m by km 27.5, comes back to 34 m by km 35 and stays there to the line.

One caveat belongs in that series rather than beside it: a bare-earth model reads the ground under a bridge, not the deck a runner crosses, so the Spree and canal crossings sit up to 5 m low in the raw samples. The kilometre window absorbs most of that, and it is another reason an unsmoothed figure from this data is not a figure at all.

Why the small number is the better story

Strip the buildings out, name the window, and what is left of Berlin is very nearly a plane with exactly one feature on it - a rise of about seventeen metres peaking at km 28.1.

That feature happens to sit inside the stretch between km 25 and km 30 where the crowd thins, the buildings drop to four storeys and the noise that has carried the field since the Siegessäule stops. The only climb on the fastest marathon course in the world is one you do with nobody watching.

You cannot tell that story with the 197 m profile, because on that profile it is not visible: it is buried under a hundred and sixty metres of architecture and a fake mountain at km 38. The measurement did not cost us a hill. It handed us the one thing on the course that was actually there.

The Berlin Marathon course, in full →

← All notes