Skip to content

TopoJSON maps

Geometry ships with this package (generated at publish time from country-borders). Use it two ways — fetch it from the CDN at runtime, or import files directly for a tree-shakeable local bundle. Every fetcher takes an optional detail level — 'low', 'medium' (default) or 'high'.

Polygons

Land-fill polygons per country, UN region, UN subregion and the world.

await client.fetchCountryTopojson('germany', 'high');
await client.fetchRegionTopojson('Africa');
await client.fetchSubregionTopojson('Western Europe');
await client.fetchGlobalTopojson('low');

Each result is a TopoJSON Topology with a countries object.

Border lines

Border lines carry a disputed flag (0 / 1) for conditional styling. Published at the world and UN-region level.

await client.fetchGlobalLines();
await client.fetchRegionLines('Europe', 'high');

The result’s lines object holds the segments; style disputed === 1 differently (e.g. dashed).

Local import (tree-shakeable)

When the geography is known at build time, import the file directly — your bundler includes only that file, tree-shaking the rest of the geometry away:

import de from '@reuters-graphics/graphics-atlas-client/topojson/polygons/high/DE.json';
// raw Node ESM: add an import attribute → ...high/DE.json' with { type: 'json' };

Unlike a fetch* call (which is resolved at runtime and can’t be tree-shaken), a static import with a literal path bundles only what you reference.

Layout

topojson/polygons/{low,medium,high}/{world,<region>,<subregion>,<ISO2>}.json
topojson/lines/{low,medium,high}/{world,<un-region>}.json

Try it on the Explorer.