All thirty days

Day 6: Vintage

Every official place name in Canada, 365,649 of them, inked by the date a naming board made it official, told in seven chapters from 1850 to 2026.

names.pmtiles
Loading 365,649 names
1 of 7 · 1850 to 2026

Every name has a date

Each dot is one of Canada's 365,649 official place names, inked by the date a naming board approved it. The legend under the map runs from the oldest ink to the newest. Step through the chapters, or skip to the last and drive the years yourself.

Made official18502026
Click a dot for its name and date.

This is a map of Canada's place names by age, though not the age you might expect. Each dot is one of the 365,649 official names in the Canadian Geographical Names Database, inked by its decision date: the day the naming board of a province, a territory or the federal government approved it. The card on the map steps through seven chapters, from the 81 names approved before 1897 to the 919 approved so far this year, and the last one hands you the years to drive yourself.

The dates come in bursts. Boards approve names in lists, sometimes thousands at a sitting, so half of all the names were approved on just 190 days. The largest day, 5 December 1968, inked 26,269 names at once, all but one in Quebec, and Manitoba's First World War names arrived together on 30 September 2020. Look for whole regions that light up in one colour: that is a list, not a century of slow naming.

A decision date is not a name's age. Ernestown, an Ontario township settled in the 1780s, carries the date 1850, and names in Indigenous languages, many far older than any board, carry dates from the last few decades. A date of 1 January or 31 December often stands for a year with no day recorded. 586 names have no decision date and are not on the map, and a dot marks where the database puts a name, rounded to about 100 m. Click any dot for its name, its kind and its date.

How it's made

One basemap and one layer. This is the whole map, minus the legend.

import { createMap } from '@unmap/sdk'

// names.pmtiles (tippecanoe, 44 MB) is a hosted overlay: upload it once with your server key.
//   curl -X POST 'https://api.unmap.dev/byod?name=names' -H 'X-API-Key: um_sk_live_...' \
//     -H 'Content-Type: application/vnd.pmtiles' --data-binary @names.pmtiles
// Then any key on the account reads it a tile at a time.
const tiles = 'https://api.unmap.dev/byod/ovl_.../{z}/{x}/{y}?key=um_pk_live_...'

const map = createMap({
  key: 'um_pk_live_...',
  container: '#map',
  style: 'atlas',
  theme: 'ut1.eJyF...', // generateTheme('atlas', { land: '#B08D5E', water: '#7F9A93', nature: '#8F8F5C' })
})

map.on('load', () => {
  map.addSource('names', { type: 'vector', tiles: [tiles], maxzoom: 9 }) // d = days since 1850
  const labels = map.getStyle().layers.find((l) => l.type === 'symbol').id
  const layer = { type: 'circle', source: 'names', 'source-layer': 'names' }
  map.addLayer({ ...layer, id: 'pencil',
    paint: { 'circle-color': '#8A7A66', 'circle-opacity': 0.2 } }, labels)
  map.addLayer({ ...layer, id: 'ink',
    paint: { 'circle-color': ['interpolate', ['linear'], ['get', 'd'],
      0, '#2B1408', 18262, '#5C2410', 36524, '#8E3B17', 64283, '#C9A548'] } }, labels)
})

// A chapter is a span of dates and a frame: Quebec's one day is from '1968-12-05' to '1968-12-06'.
function show({ from, to, frame }) {
  const inside = ['all', ['>=', ['get', 'd'], day(from)], ['<', ['get', 'd'], day(to)]]
  map.setFilter('ink', inside)
  map.setFilter('pencil', ['!', inside])
  map.fitBounds(frame, { duration: 1600 })
}

The data is the national CSV from the Canadian Geographical Names Database. A short script in the unmap repository keeps every name with a decision date, with its point, its generic term and its province, and stores the date as days from 1 January 1850. The French page takes each generic term from the database's own table of terms in both languages. The names reach the map as vector tiles from an unmap hosted overlay, bring your own data, read a tile at a time, so no browser has to load all of them at once. The map draws them from one source in two layers: the chapter's names in ink, coloured by date, and every other name as a faint pencil dot, so the country keeps its shape. A chapter is a span of dates and a frame for the camera, and the last chapter's span ends at the slider's year. The basemap is unmap's atlas style, recoloured to old paper with a theme code from unmap's theme generator: sepia land, verdigris water and olive woods. The link between the 2020 Manitoba names and the First World War comes from the province's announcement, not from the database, which records no reason for a name.

Data

  • Canadian Geographical Names Database, Natural Resources Canada. Contains information licensed under the Open Government Licence - Canada. File published 3 November 2026.
  • Manitoba's First World War names: Government of Manitoba announcement of 10 November 2020, as reported by Global News.
  • Basemap: unmap, © OpenStreetMap contributors.

Share this map

Post it, or make your own and tag it #30DayMapChallenge.