All thirty days

Day 12: Power

Canada's 159,139 km of transmission lines, and the 207 communities off the North American grid: 143 of them burn diesel or other fuel for their power.

grid.json
Loading 159,139 km of lines and 207 communities
Show or hide
Line width is voltage. Click a dot or a line.

The pale lines are Canada's transmission lines as OpenStreetMap maps them, 159,139 km in all, wider for higher voltage: from the 735 kV lines out of James Bay down to the 25 kV lines between villages. The dots are the 207 communities Natural Resources Canada counts as remote: permanent settlements on neither the North American grid nor a piped gas network, home to 172,571 people where the database gives a population. Only 2,054 km of the lines, 1.3%, are north of 60.

143 of these communities make most of their power by burning fuel: 138 with diesel, 3 with heavy fuel oil and 2 with natural gas, for 96,723 people. 123 have no year-round road, so the fuel comes in by sea, by air or on a winter road. All 25 communities in Nunavut run on diesel and none has a year-round road; the largest is Iqaluit, the capital, with 7,429 people. 82 communities are more than 100 km from the nearest transmission line, and Resolute Bay is 1,282 km from one.

The two largest dots are capitals. Whitehorse, with 28,201 people, and Yellowknife, with 20,340, are on grids of their own, built on hydro dams, with diesel behind them and, in Yukon, liquefied natural gas. They draw the bright knots of line in Yukon and around Great Slave Lake. 32 communities are on a separate grid like these, 63,448 people in all. Another 32 have hydro plants of their own, 16 in British Columbia and 16 in Quebec. Inukjuak, in Nunavik, is the one Inuit community whose main source is hydro.

Near a line is not on the grid. The Labrador-Island Link, a direct-current line that carries power from Muskrat Falls to the island of Newfoundland, passes less than 3 km from Forteau on its way under the Strait of Belle Isle. The database puts Forteau and five of its neighbours on a separate grid, supplied by Hydro-Québec. Les Îles-de-la-Madeleine, 12,190 people in the Gulf of St. Lawrence, burn heavy fuel oil for 217,186 MWh a year, the most of any community on the map that burns fuel. Click a dot for its sources, or a line for its voltage.

How it's made

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

import { createMap } from '@unmap/sdk'

// Transmission lines: every power=line and power=cable way in the Canada extract.
//   osmium tags-filter canada-latest.osm.pbf w/power=line,cable -o power.osm.pbf
//   osmium export power.osm.pbf -f geojson -o power.geojson
const lines = await fetch('/power.geojson').then((r) => r.json())

// Remote communities: NRCan's Remote Communities Energy Database, 2025.
const rced = 'https://maps-cartes.services.geo.ca/server_serveur/rest/services/NRCan/' +
  'remote_communities_2025_en/MapServer/0/query?where=1%3D1&outFields=*&f=geojson'
const towns = await fetch(rced).then((r) => r.json())

const map = createMap({ key: 'um_pk_live_...', container: '#map', style: 'muted', mode: 'dark' })

map.on('load', () => {
  const labels = map.getStyle().layers.find((l) => l.type === 'symbol').id
  map.addSource('lines', { type: 'geojson', data: lines })
  map.addLayer({ id: 'lines', type: 'line', source: 'lines',
    paint: { 'line-color': '#DCE6E4', // width is voltage, in volts as OSM tags it
      'line-width': ['step', ['to-number', ['get', 'voltage'], 0], 0.4, 100000, 0.6, 200000, 0.9, 450000, 1.4] } },
    labels) // under the place names
  map.addSource('towns', { type: 'geojson', data: towns })
  map.addLayer({ id: 'towns', type: 'circle', source: 'towns',
    paint: {
      'circle-radius': ['max', 3, ['*', 0.09, ['sqrt', ['coalesce', ['get', 'Population'], 0]]]],
      'circle-color': ['match', ['get', 'Primary_Electricity_Source'],
        'Hydro', '#4FB3E8', 'Prov./terr. grid', '#F2B84B', '#FF3E9A'], // fuel in magenta
    } }) // on top: they are the story
})

The lines are every OpenStreetMap way tagged power=line or power=cable, 21,930 of them, in the Canada extract unmap's routing graph is built from, dated 17 September 2026. A script cuts them out with osmium and simplifies them to about 100 m. Distribution wires (power=minor_line) are left out because OpenStreetMap maps them only in patches, so a village's own wires mostly do not show. A line's voltage is the highest one it is tagged with, and 4,531 ways have none; they draw thinnest. OpenStreetMap does not say which grid a line belongs to, so the map does not colour lines by grid: a community's colour is the main source the database gives it. The communities are the 2025 Remote Communities Energy Database, read from Natural Resources Canada's map service, with names from its English layer and one corrected, Les Îles-de-la-Madeleine. The database is compiled from Statistics Canada, governments, utilities and communities, and Natural Resources Canada warns it may be incomplete or out of date: 23 communities have no population and 96 no generation figure. The distance to the nearest line is measured on the simplified lines, and it is not the distance to a connection. The script is scripts/build-challenge-grid.mjs in the unmap repository.

Data

  • Remote communities: Remote Communities Energy Database (2025), Natural Resources Canada. Contains information licensed under the Open Government Licence - Canada.
  • Transmission lines: © OpenStreetMap contributors (ODbL), Canada extract of 17 September 2026.
  • Basemap: unmap, © OpenStreetMap contributors.

Share this map

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