02truesize — Map Truth Lab

Every flat map lies. Interactive map-comparison and geodetic education tools • v0.3.3

1. Overview

02truesize brings the true-size map comparison concept into QGIS and extends it with geodetic education tools. The core premise: Web Mercator (EPSG:3857), used by virtually all online maps, grossly inflates areas away from the equator. Greenland appears continent-sized but Africa is roughly 14 times larger. The plugin lets users experientially see this by dragging country outlines that are re-projected through an equal-area projection in real time.

The plugin is organised as a four-tab dock: True Size (drag-and-drop country comparison), Duel (size-comparison quiz game), Truth (antipode, great circle, and fun-unit measurement tools), and Distort (projection report cards, Tissot indicatrices, and live distortion HUD).

2. True Size Comparison Tool

Lambert Azimuthal Equal-Area Double Transform

The core re-projection trick preserves true area during dragging:

  1. Pick-up: The tool records the click point as a "source anchor" in WGS84.
  2. Project to LAEA plane: The country's WGS84 geometry is transformed into a Lambert azimuthal equal-area (LAEA) CRS centred on the source anchor.
  3. Apply rotation: Optional rotation (R/E keys for ±10°) is applied in the LAEA plane.
  4. Re-centre: A new LAEA CRS centred on the cursor position (destination anchor) is created, and the geometry is inverse-projected back to WGS84 from this destination-centred plane.
  5. Render: The resulting WGS84 polygon is drawn on the canvas. Since LAEA preserves area, the true area of the country is maintained—the only distortion comes from how the current project CRS renders it, which is exactly what the user needs to see.

Drag updates are throttled to ~60 Hz. A live floating info label follows the cursor showing the country name, true area in km2, the area in Belgiums, and how many times larger or smaller the current map draws it. Three source modes: Built-in world countries (238 countries from Natural Earth), Active polygon layer, or Downloaded administrative boundaries (ADM0 from bundled data or ADM1 from Natural Earth 10m states/provinces).

3. Size Duel Quiz

Mercator-Deception Quiz Game

Two countries are shown as Mercator-projected silhouette cards drawn at the same true scale (computed via mercator_xy(), then centred and scaled to a common metres-per-pixel factor). The player guesses which country is truly larger. The question engine has a strong taste for deceptive pairs where Mercator draws the actually-smaller country as visually larger. Falls back to close-call pairs, then to any valid pair. Max true ratio between pair countries: 8.0×. Tracks current round, score, streak, and best streak (persisted across sessions).

4. Truth Tools

Geodetic Exploration on the Canvas

Antipode Tunnel: Click anywhere; the plugin computes the antipode (the point reached by digging straight through Earth), places a blue circle at the click and a red X at the antipode, reports the origin country and target country/ocean, and provides a "Fly to the antipode" button to re-centre the canvas.

Great Circle vs Straight Line: Click-start, click-end. Draws the geodesic line in blue (computed via QgsDistanceArea.geodesicLine() with 25 km segments, antimeridian-safe via multi-polyline) and the straight map segment in red dashed. Reports both ground lengths in km and the wasted distance and percentage difference.

Fun Units: Distance measurer (click-path) and area measurer (click a visible polygon). Reports in both standard units (km / km2) and playful-but-accurate equivalences: Olympic swimming pools, football pitches, Vaticans, Belgiums (the official unit of area), Eiffel Towers, marathons, Great Walls of China, and more. Exact matches (within ±7%) trigger spot-on celebration text. Antipode results include witty one-liners for land and ocean destinations.

5. Distortion Diagnostics

Projection Report Cards and Tissot Indicatrices

Report Card: Numerically analyses the current project CRS by sampling Tissot indicatrix parameters at latitudes 0°, 20°, 40°, 60°, and 75° along a meridian (default = 15°E). Reports per-latitude areal inflation factor relative to the equator and maximum angular deformation in degrees. Assigns letter grades (A+ through F) for area fidelity and shape fidelity, and generates a plain-language verdict (distinguishing conformal, equal-area, both, or compromise projections). Grading bands: Area [(1.02, A+), (1.10, A), (1.5, B), (2.5, C), (5.0, D), (12.0, E)]; Shape [(0.5, A+), (2.0, A), (10.0, B), (25.0, C), (45.0, D), (60.0, E)].

Tissot Circles: Generates a memory layer of constant ground-radius circles (configurable radius and grid spacing) on a lon/lat grid. When rendered in the project CRS, they deform into the classic Tissot indicatrices—ellipses that reveal local area and shape distortion.

Live HUD: A semi-transparent overlay pinned to the top-right of the QGIS canvas showing: "Map truth @ lat X°: areas xY the equator . shapes bent Z°". Updates on pan/zoom/CRS change (debounced at 180 ms).

6. Mathematical Background

Mercator Distortion

In the spherical Web Mercator projection, a point at latitude \(\phi\) maps to coordinates:

\( x = R \lambda, \quad y = R \ln\left(\tan\left(\frac{\pi}{4} + \frac{\phi}{2}\right)\right) \)

where \(R = 6\,371\,008.8\) m (authalic mean Earth radius). The linear inflation factor—how many times longer a metre is drawn at latitude \(\phi\) compared to the equator—is:

\( k(\phi) = \sec(\phi) \)

The areal inflation factor—how many times larger an area is drawn—is the square of the linear factor:

\( a(\phi) = \sec^2(\phi) \)

At latitude 60°, \(k = 2.00\) and \(a = 4.00\)—Greenland appears four times larger than its true size relative to equatorial regions. At 75°, \(a \approx 14.93\), meaning Antarctica and Greenland are grossly exaggerated.

Tissot Indicatrix

For any map projection with forward transform \((x, y) = f(\lambda, \phi)\), the local distortion is characterised by the 2×2 Jacobian matrix:

\( \mathbf{J} = \begin{bmatrix} \partial x / \partial \lambda & \partial x / \partial \phi \\ \partial y / \partial \lambda & \partial y / \partial \phi \end{bmatrix} \)

The singular values \(a \ge b\) of \(\mathbf{J}\) are the Tissot semi-axes: they describe how a unit circle on the globe deforms into an ellipse on the map. The areal factor is \(ab\) and the maximum angular deformation is \(\omega = 2\arcsin((a-b)/(a+b))\) in degrees.

Relative Areal Distortion

To compare how a location is drawn relative to a reference point, the plugin computes:

\( \mathrm{rel} = \dfrac{ab\vert_{(\lambda,\phi)}}{ab\vert_{(\lambda_{\mathrm{ref}},\phi_{\mathrm{ref}})}} \)

This tells the user, for the current project CRS (not just Mercator), how many times larger or smaller a country appears at its dragged-to location compared to its home latitude.

7. Controls Summary

True Size Tab

ControlDescription
Show built-in world layerToggles the 238-country Natural Earth layer
Grab fromBuilt-in world / Active polygon layer / Admin boundaries
Country / Boundary setCountry selector + ADM0/ADM1 level for downloads
Pick up & dragPrimary action button (checkable); activates drag tool
Ghost listDropped countries with coloured icons, area, and map-look factor
Remove / Clear all / Save as layerGhost management buttons

Duel Tab

ControlDescription
ShapePanel cardsTwo clickable Mercator silhouette cards at same true scale
Result / Stats / Next roundFeedback text, score/streak/round, and action button

Truth Tab

ControlDescription
Antipode tunnelCheckable tool button, result card, "Fly to the antipode" button
Great circleCheckable tool button, result card with both lengths + wasted km/%
Fun distance / areaTwo tool buttons, result card with fun-unit breakdown, copy button

Distort Tab

ControlDescription
Grade my CRSButton generating area/shape grades + verdict for current project CRS
Tissot radius / spacing / AddCircle size (250/500/1000 km), grid spacing (15/30/45°), add button
Live HUD checkboxToggles the semi-transparent canvas overlay

8. Workflow Guide

  1. Click the 02truesize toolbar icon. The dock opens on the right.
  2. True Size: Check "Show built-in world layer" to see the world. Press "Pick up & drag", click a country (e.g., Greenland), drag towards the equator, watch it shrink. Drop with left-click. Drag multiple countries to compare. Use R / E to rotate. Export all ghosts as a new layer.
  3. Size Duel: Switch to the Duel tab. Click the country card you think is truly larger. See the result and Mercator's deception exposed.
  4. Truth Tools: Use antipode, great circle, or fun-unit tools interactively on the canvas.
  5. Distortion: Grade your CRS, add Tissot circles, enable the live HUD, switch project CRS, and re-grade to compare projections.

9. Technical Notes

10. Literature

  1. Snyder, J. P. (1987). Map Projections—A Working Manual. USGS Professional Paper 1395. DOI: 10.3133/pp1395
  2. Monmonier, M. (1996). How to Lie with Maps (2nd ed.). University of Chicago Press.
  3. Tissot, A. (1881). Mémoire sur la représentation des surfaces et les projections des cartes géographiques. Gauthier-Villars.
  4. Canters, F. & Decleir, H. (1989). The World in Perspective: A Directory of World Map Projections. John Wiley & Sons.
  5. Battersby, S. E., Finn, M. P., Usery, E. L., & Yamamoto, K. H. (2014). Implications of Web Mercator and its use in online mapping. Cartographica, 49(2), 85–101. DOI: 10.3138/carto.49.2.2313