What a machine does with it

The road is drawn two pixels wide

Seven rungs measure what a screen map does to position. Nothing on a map is a point: every mark has a width, the width is chosen in pixels, and a two-pixel road covers 9.78 kilometres of ground at the equator and 1.70 at 80° north. That is a generalisation applied at a strength varying by a factor of six across one sheet, by a stylesheet with no latitude in it.

Assumes The pixel is a place with a size.

Every measurement on this ladder so far is about position. The pixel is a place with a size prices what a screen map’s own resolution means on the ground; a scale bar is right in one place prices what the varying scale does to a printed rule; a vector tile has an integer grid prices the lattice a coordinate is quantised onto. All of them ask where a thing is drawn.

Nothing on a map is a point. Every mark drawn on one has a width, and the width is a number in a stylesheet: a minor road is two pixels, an administrative boundary is one, a trunk road is four, a point symbol is eight across, a label’s capitals are eleven high. Those numbers are constants. They are the same at zoom 3 and at zoom 17, and the same in Ecuador and in Norway.

What they mean is not constant at all.

The same 2-pixel road at three latitudes, zoom 5. The dark bar is the mark as drawn — 2 pixels, identical in all three panels, because that is what the stylesheet says. The pale band behind it is the ground that mark covers, drawn to one common ground scale: 9.78 kilometres at the equator, 6.92 at 45° and 1.70 at 80°. The reader sees the dark bar and is being told about the pale one.
Fig. 1 The dark bar is a two-pixel road as drawn, identical in all three panels because that is what the stylesheet says. The pale band behind it is the ground that mark covers, drawn to one common ground scale: 9.78 kilometres at the equator, 6.92 at 45° and 1.70 at 80°. The reader sees the dark bar and is being told about the pale one.

A drawn mark is a generalisation tolerance

Two features closer together than the width of the mark drawn over them are drawn as one thing. That is a generalisation — the same operation the simplification ladder prices in ground metres — and it is applied by the renderer, after the data has been simplified, with no reference to anything the data says about itself.

So every stroke width in a stylesheet is a tolerance in ground metres wearing a disguise.

What a stylesheet's pixel widths mean on the ground at zoom 12. Five widths taken from an ordinary web style, at zoom 12 and 0° of latitude. A one-pixel administrative boundary is 38.2 metres of ground and an eleven-pixel label is 420. Two features closer together than the width of the mark drawn over them are drawn as one thing, so each of these numbers is a generalisation tolerance — chosen in a stylesheet, by someone thinking about legibility, and never written down in metres anywhere.
Fig. 2 Five widths from an ordinary web style, converted to ground metres at zoom 12 on the equator. A one-pixel boundary is 38 metres of ground; an eleven-pixel label is 420. Each of these is a generalisation tolerance chosen by somebody thinking about legibility and never written down in metres anywhere.

The ratios between them are the only thing the stylesheet actually fixed. The absolute values are decided by the zoom and by the latitude, neither of which the author of the style was thinking about.

And it falls exactly as the cosine

On Web Mercator the ground a pixel covers is resolution(z) × cos φ, so the ground a mark covers is that times its pixel width. The cosine is exact rather than approximate — it comes from the projection’s own scale factor — and the measurement confirms it to a part in 10¹².

What 2 pixels of stroke cover on the ground. A 2-pixel line — a minor road on almost every web style — and how much ground it covers, at every zoom and at four latitudes. The stroke width is a constant in a stylesheet. What it means is 313 kilometres at zoom 0 on the equator and 1.19 metres at zoom 18, and at any one zoom it varies by a factor of 11.5 between the equator and 85°. Nothing in a style language expresses either dependence.
Fig. 3 A two-pixel line and how much ground it covers, at every zoom and at four latitudes. The stroke width is a constant. What it means is 313 kilometres at zoom 0 on the equator and 1.19 metres at zoom 18, and at any one zoom it varies by a factor of 11.5 between the equator and 85°.

The factor across latitude is the part with no equivalent anywhere else on the ladder. The zoom dependence is at least declared: a resolution table is published with every tile scheme, everybody knows a deeper zoom means finer ground, and the scale bar on the map states it. The latitude dependence appears in no table, is stated by nothing on the page, and is a factor of two by 60° and a factor of six by 80°.

What holding it constant would cost

The compensation is easy to write down and nobody applies it.

What holding the ground width constant would cost. The stroke width a renderer would have to use to make a 2-pixel road cover the same ground at every latitude: 2 divided by cos φ, which is 4.0 pixels at 60° and 22.9 at 85°. No renderer does this, no style language makes it convenient, and a map drawn that way would look wrong — the roads at the top of the sheet would be visibly fatter than the ones at the bottom. The choice everybody makes is legibility, and the price is a generalisation strength that varies across the sheet.
Fig. 4 The stroke width a renderer would need to make a two-pixel road cover the same ground at every latitude: two divided by cos φ, which is 4 pixels at 60° and 23 at 85°. No renderer does this, and a map drawn that way would look wrong — the roads at the top of the sheet visibly fatter than the ones at the bottom.

The choice everybody makes is legibility, and it is the right choice. A mark has to be visible, a hairline is a hairline at every latitude, and a map whose linework thickened towards the top of the screen would be read as a mistake. That is not the finding.

The finding is that the choice has a consequence in ground metres which is never stated, and that the consequence runs the opposite way from the one people expect. Web Mercator is famous for making high latitudes look bigger; what it does to the drawn marks on them is make each one mean less ground, so a high-latitude sheet at a given zoom is generalised less by its own symbology than an equatorial one at the same zoom. The projection inflates the area and deflates the symbol, and those are two different effects with opposite signs that nobody puts in the same sentence.

The separation two things need

The clearest way to state the cost is as a distance.

The ground separation two roads need to be drawn as two, at zoom 12. Two two-pixel roads with a one-pixel gap between them need three pixels of ground separation to be distinguishable. At zoom 12 that is 115 metres at the equator and 10 at 85°. The same pair of roads, the same stylesheet, the same zoom: drawn as two things in one place and as one thing in another, because of where they are.
Fig. 5 Two two-pixel roads with a one-pixel gap between them need three pixels of ground separation to be drawn as two things. At zoom 12 that is 115 metres at the equator and 10 metres at 85°. The same pair of roads, the same stylesheet, the same zoom: two things in one place and one thing in another.

That is a hard, checkable statement about what a map can and cannot show, and it is not in any specification. A dataset that guarantees features are separated by at least fifty metres is drawable as separate features at zoom 12 north of about 60° and not south of it.

The tolerance a tile actually needs

The practical consequence is a rule, and the rule is simple enough to be surprising that it is not standard.

A vector tile carries geometry simplified at some tolerance in ground metres. While the mark drawn over that geometry is wider than the tolerance, the simplification is invisible: the discarded detail would have been covered by the stroke even if it had been kept. Past that point it shows.

When a simplification starts to show. While the mark drawn over a line is wider than the tolerance the line was simplified at, the simplification is invisible: the reader could not see the discarded detail even if it were there. The zoom at which that stops being true is where these curves sit, and it depends on the latitude as well as on the tolerance — a hundred-metre tolerance shows at zoom 12 on the equator and zoom 11 at 70°. Which gives a rule nobody states: the tolerance a tile should be simplified at is the ground width of the thinnest mark that will be drawn on it.
Fig. 6 The zoom at which a simplification tolerance starts to show, against the tolerance, at three latitudes. A hundred-metre tolerance shows at zoom 12 on the equator and zoom 11 at 70°. So the tolerance a tile should be simplified at is the ground width of the thinnest mark that will be drawn on it — which is a function of the latitude as well as of the zoom.

Every tiling pipeline in use simplifies per zoom level, with a tolerance table that has one column. The correct table has two, and the second column is a cosine. The cost of getting it wrong is in both directions: simplify too hard and detail vanishes that the symbology would have shown; simplify too gently and every tile carries vertices that no stroke width can reveal, which is bytes spent on nothing. The integer lattice inside a vector tile already imposes a floor from below; this is the ceiling from above, and between them they bracket what a tile can usefully carry.

Three places this already showed and was not read

The effect is not new to this site; what is new is measuring it. Three earlier essays walked past it.

The pyramid did not have to be Mercator lists “symbol size” twice, in a paragraph about what an equal-area tile scheme would have cost, and both times as an item in a list of things that would need a direction attached. It is right, and the reason it reads as a minor consequence rather than as a finding is that the Mercator case was assumed to be the simple one — it needs a cosine rather than a direction, and a cosine looked like nothing.

The square costs the poles derives the 85.05° cut and prices the 1.9 million square kilometres it discards. Everything drawn near that cut is drawn with marks covering a twelfth of the ground they cover at the equator, so the band the scheme keeps hardest is also the band it generalises least — which is a second, opposite-signed statement about the same latitudes.

A tile is drawn without its neighbours shows what happens when a feature is generalised tile by tile and the pieces do not rejoin. The stroke width is the reason such a mismatch is usually invisible: a discontinuity smaller than the mark drawn over it is covered by the mark. That is a genuine defence and it has a latitude in it, so the same pipeline hides its seams at the equator and shows them at 70°.

What 11 pixels of stroke cover on the ground. A 11-pixel line — a minor road on almost every web style — and how much ground it covers, at every zoom and at four latitudes. The stroke width is a constant in a stylesheet. What it means is 1722 kilometres at zoom 0 on the equator and 6.57 metres at zoom 18, and at any one zoom it varies by a factor of 11.5 between the equator and 85°. Nothing in a style language expresses either dependence.
Fig. 7 The same measurement for an eleven-pixel label rather than a two-pixel road. Nothing changes but the multiplier: at zoom 12 a label’s cap height is 420 metres of ground at the equator and 37 at 85°. Text is the mark whose ground footprint is largest and the one whose placement is decided furthest from any thought about the ground.

What paper did instead

Paper cartography solved this and the solution is invisible because it never had to be stated.

A printed sheet has one scale. A 0.2-millimetre line on a 1:50,000 map is ten metres of ground, everywhere on the sheet, at every latitude, forever. So a national mapping agency can publish a specification saying that features under twenty metres apart are combined, that a road symbol represents a corridor of a stated width, and that anything narrower than a stated ground size is either omitted or exaggerated to the minimum legible size — and every one of those statements is true of the whole sheet.

That is the specification of generalisation that paper mapping has and screen mapping does not. It exists because the conversion between page units and ground units is a constant, and the moment that conversion acquires a latitude the specification stops being writable in the same form.

Exaggeration is the half that has no screen equivalent at all. A paper map draws a twelve-metre road as a fifty-metre symbol deliberately, records that it has done so, and accepts that the road’s drawn edges are not its real edges. The practice is old, honest and documented. A screen map does the same thing accidentally, at a strength that varies with the zoom and the latitude, and documents nothing — so a reader who measures a feature’s width off a screen map is making an error whose size nobody has published.

The gap is not a failure of care. It is the same gap the scale bar essay finds: a paper convention is inherited by a medium whose scale varies, the convention keeps working well enough to be kept, and the statement that used to accompany it quietly stops being true. A scale bar on paper is exact and a scale bar on a screen is exact in one place; a minimum legible size on paper is a ground size and on a screen it is a ground size divided by a cosine.

This is Web Mercator’s cosine. On the equal-area pyramid the ladder considered and rejected, a pixel’s ground footprint is a rectangle whose east–west to north–south ratio is (cos φ / cos φ₀)², so a mark would have a direction as well as a latitude: a road running east–west and one running north–south would generalise at different strengths at the same place. That scheme’s own essay lists this as one of the reasons it was never adopted, and this rung is the measurement behind that line.

The pixel is treated as square and the display as ideal. Device pixel ratios, sub-pixel rendering, anti-aliasing and hairline snapping all move the effective width of a one-pixel stroke, sometimes by a factor of two. Every number here is in CSS pixels at a device ratio of one, which is the number the stylesheet contains and not the number the screen shows.

Only the width is considered, not the whole mark. A label occupies a box, not a line, and its ground footprint is two-dimensional and orientation-dependent — a horizontal label at 80° covers a ground rectangle six times narrower east–west than the same label at the equator. Label placement is where this effect bites hardest in practice and it is not measured here.

And the merging is geometric rather than perceptual. Two marks whose footprints touch are treated as merged. In practice two lines become indistinguishable somewhat before they touch and remain distinguishable somewhat after, depending on contrast, colour and what else is nearby. The geometric threshold is a stated proxy and is the only part of this that could be called a model.

The number a style author needs

Everything above reduces to one conversion and it is worth writing out, because it is the line missing from every style specification.

A mark of w pixels covers w × 156543.034 × cos φ / 2^z metres of ground.

The constant is the equatorial resolution of a Web Mercator tile scheme at zoom 0 with 256-pixel tiles, which is the number every tile-scheme table starts from. The cosine is the projection’s own scale factor. The 2^z is the pyramid. There is nothing in it that is not already published; what is not published is the product.

Two uses follow immediately. Given a style and a zoom, it says what the map cannot show — features closer than that separation will merge, whatever the data does. Given a required ground detail, it says what zoom is needed to show it, and the answer depends on where.

What a stylesheet's pixel widths mean on the ground at zoom 16. Five widths taken from an ordinary web style, at zoom 16 and 55° of latitude. A one-pixel administrative boundary is 1.4 metres of ground and an eleven-pixel label is 15. Two features closer together than the width of the mark drawn over them are drawn as one thing, so each of these numbers is a generalisation tolerance — chosen in a stylesheet, by someone thinking about legibility, and never written down in metres anywhere.
Fig. 8 The same five widths at zoom 16 and 55° north, which is roughly the largest scale a general web map is used at in northern Europe. The one-pixel boundary is 1.4 metres of ground and the label’s cap height is 15. Those are the tolerances that map is generalising at, and no part of the pipeline that produced it knows them.

Who found it, and when

Nobody appears to have written this down, which is odd, because every part of it is a line of arithmetic.

The two halves exist separately and in different literatures. Minimum legible size is a century-old topic in cartography — the smallest mark a reader can resolve, measured in millimetres on paper, tabulated by generations of national mapping agencies and turned into rules about what a scale can show. Ground resolution is a web-mapping topic, published as a table by every tile scheme, with the cos φ in it since the day Web Mercator was adopted.

The product of the two is what a stroke width means, and it falls between the two literatures. Paper cartography has minimum legible sizes and a fixed scale, so the ground meaning of a mark is a constant and nobody needs to say it. Web cartography has a varying scale and inherited the millimetre rules as pixel rules, which quietly changed them from statements about a reader’s eye into statements about a projection.

What it does to the generalisation threshold

The rung establishes that a mark’s ground width falls as the cosine of the latitude, and there is a consequence for the data rather than the drawing that follows immediately and that no tile scheme applies.

A minimum legible size is a rule about what can be shown. On paper it says a feature narrower than a fraction of a millimetre cannot be drawn distinguishably, so the generalisation must remove or exaggerate it. That is a statement about the reader’s eye and the sheet’s scale together, and on a fixed-scale sheet it converts once into a ground distance and stays there.

On a varying-scale sheet it converts differently at every latitude. The same two-pixel stroke covers half the ground at 60° that it covers at the equator, so the ground distance below which two features cannot be told apart is half as large there. The threshold that decides which features survive generalisation is therefore a function of latitude, by the same cosine.

And every vector tile scheme uses one tolerance per zoom level, worldwide. The simplification applied when a tile is built is chosen for the zoom, in the projection’s own units, and applied identically at every latitude. So the data is generalised uniformly and drawn non-uniformly, and the two thresholds — what was kept, and what can be seen — separate by a factor of two by 60° and nearly six by 80°.

The direction of the mismatch is the awkward part. High latitudes are drawn at a finer effective ground resolution and generalised at a coarser one, so a tile there carries detail the marks are too wide to distinguish while having discarded detail that would now be visible. Both errors occur at once and in the same place.

The remedy is the same conversion the essay already computes, applied one step earlier: choose the simplification tolerance per tile from the tile’s own ground resolution rather than from its zoom. The cosine is available, the tolerance is a parameter, and the change is to a build step rather than to a format.

It is also worth noting which way a producer would err if they did nothing. Generalising uniformly at the tolerance the equator needs is the conservative choice — it keeps detail everywhere that any latitude could show — and it is what most schemes do, so the current practice is safe in one direction and wasteful in the other rather than plainly wrong.

What it would cost is that a tile’s contents stop being a function of its zoom alone, so two tiles at the same level hold data generalised differently. That is a genuine complication for anything that assumes uniformity across a level, and it is the reason to state the option rather than to recommend it without qualification.

Where the ladder goes next

The rung establishes that a drawn mark is a tolerance and computes it. Two things it leaves open are worth naming.

A style could be written in ground metres. Nothing prevents a renderer from taking a width in metres and converting it, per tile, into pixels — the conversion is one cosine and the tile knows its own latitude. What such a map would look like is the compensation figure above, and whether a reader would accept it is a question this site cannot answer by computing anything.

And the whole argument applies to time as much as to space. A mark’s width is constant across a zoom transition, so during an animated zoom the ground it covers changes continuously by a factor of two per level while the data underneath it changes in steps at tile boundaries. What that does to a feature that appears and disappears as the two thresholds cross is a measurable thing, and it is the ladder’s next natural question.

Named alongside this one

Essays reaching for the same objects. Nobody chose these; they are what the concept index makes visible.

What links here

Every essay whose body links to this one.

The objects this essay names

Each one links to every other essay that touches it.

AggregationError budgetGeneralisationLegibilityPurposeResolutionScaleSymbolToleranceVector tileWeb MercatorZoom level