OpenStreetMap-derived data: method and offer

CEAtlas draws several map layers from OpenStreetMap, which is © OpenStreetMap contributors and licensed under the Open Database Licence. The OpenStreetMap-derived data in those layers is under the ODbL. Where a layer also carries other sources, we credit those under their own licences and supply the OpenStreetMap-derived part on request. Whether such a layer is one database or a collection of databases under the ODbL is not settled. This page is our notice under ODbL s.4.6: for every such layer it gives the exact queries and the processing rules that produce it from OpenStreetMap — enough to recreate it — and it offers a machine-readable copy of the layer's OpenStreetMap-derived data free of charge on request.

Version 1.11 · dated 2026-11-07 · generated from the ETL source by etl/build_osm_offer_page.py: the queries, the region tables and the GB rules are read from the code, and a test fails when they change without this page; the other rule prose is written against the module named beside it

The offer. A machine-readable copy of any layer's OpenStreetMap-derived data (GeoJSON, or the raw Overpass answer) is available free on request: hello@compoundingenergy.com. Name the layer; you will get the file for the current release and the date of the OpenStreetMap extract it was built from. The copy is under the ODbL, which also lets you redistribute it; CEAtlas's Terms of Service carve ODbL data out of their own restrictions.

How to read the queries

Each block is the Overpass QL text the ETL sends to the public Overpass API, copied from the source. Sections 1–3 go through etl/download_global.py::overpass_query; the other sections' downloaders each carry their own copy of the retry loop. The server list and the user agent of each are read from its source:

SectionsDownloader (the retry loop that sends the query)Overpass servers, in orderUser agent
1a, 1b, 1d, 1e, 2a, 2c, 2d, 2e, 3a, 3betl/download_global.py::overpass_query — 1c (etl/download_eu_33kv.py) and 2b (etl/download_us_substations.py) call the same functionoverpass-api.deATLAS-ETL/1.0 (+https://atlas.compoundingenergy.com; hello@compoundingenergy.com)
4etl/download_planned.py::overpass_queryoverpass-api.deATLAS-ETL/1.0 (+https://atlas.compoundingenergy.com; hello@compoundingenergy.com)
5etl/download_gas.py::overpass_queryoverpass-api.deATLAS-ETL/1.0 (+https://atlas.compoundingenergy.com; hello@compoundingenergy.com)
6a, 6cetl/_gas_geo.py::overpass — called by etl/build_gas_facilities.py and etl/build_gas_pipeline_projects.pyoverpass-api.de, then maps.mail.ruCEAtlas-ETL/1.0 (Compounding Energy; gas fuel-supply layers; hello@compoundingenergy.com)
7a–7c, 9aetl/download_water_fiber.py::overpass_queryoverpass-api.deATLAS-ETL/1.0 (+https://atlas.compoundingenergy.com; hello@compoundingenergy.com)
7detl/fetch_water_pipelines.py::overpass_queryoverpass-api.deATLAS-ETL/1.0 (+https://atlas.compoundingenergy.com; hello@compoundingenergy.com)
8etl/download_telecom.py::overpass_queryoverpass-api.deATLAS-ETL/1.0 (+https://atlas.compoundingenergy.com; hello@compoundingenergy.com)
9b, 9cetl/download_fiber_routes.py::_overpassoverpass-api.de, then maps.mail.ruATLAS-ETL/1.0 (+https://atlas.compoundingenergy.com; hello@compoundingenergy.com)
9detl/download_us_fiber.py::_overpass_queryoverpass-api.de, then maps.mail.ruATLAS-ETL/1.0 (+https://atlas.compoundingenergy.com; hello@compoundingenergy.com)
10etl/download_offshore_cables.py::overpass_queryoverpass-api.deATLAS-ETL/1.0 (+https://atlas.compoundingenergy.com; hello@compoundingenergy.com)
11aetl/download_suitability.py::overpass_queryoverpass-api.deATLAS-ETL/1.0 (+https://atlas.compoundingenergy.com; hello@compoundingenergy.com)
11betl/build_wecc_exclusions.py::layer_airports — one request, no retry loopoverpass-api.deATLAS-ETL/1.0 (+https://atlas.compoundingenergy.com; hello@compoundingenergy.com)

Every list starts with overpass-api.de; a list that names a second server moves to it only after a failed attempt. A query that runs once per region is shown once, with its {s},{w},{n},{e} placeholders (south, west, north, east, decimal degrees) and the region table it runs over. Raw answers are cached under data/raw/; each section's refresh line says how its files are renewed — a rolling refresh in the nightly (the lines, substations and GB groups: the stalest files of a group each night, a full cycle in about 30 days), a fetch only when the cached file is missing (planned upgrades, gas pipelines, data centres), or a static release that is re-fetched by hand (the EU 33 kV cells, gas facilities and projects, water, fibre, offshore cables, the WECC rasters). The rules describe the current ETL code; the served tiles are rebuilt by the nightly, so the map can lag a rule change by one build and a new extract by one refresh. Processing rules are given in plain words with the module and function that implements them; the properties listed are the ones the served tile carries.

1. Transmission lines

served layer: Transmission lines (lines.pmtiles, free) · raw files: osm_<region>_hv_lines.json, osm_<region>_all_lines.json, osm_gb_lines_cables.json, osm_<region>_hv_cables.json · modules: etl/download_global.py, etl/download_eu_33kv.py, etl/process_global.py, etl/_hifld_gapfill.py · refresh: 1a, 1b, 1d, 1e rolling: each nightly re-fetches the stalest files of the group, a full cycle in about 30 days (etl/_osm_refresh.py); 1c a static release — the downloader is not in any workflow; re-fetched by hand

Four kinds of extract feed one layer, which also carries PyPSA-Eur gridkit lines (220 kV and up in the PyPSA-Eur countries; not OpenStreetMap-derived) and, in the United States, HIFLD lines where no served line has the line (the gap-fill rule below) in the same tile.

1a. World HV lines — download_global_lines (one query per region)

[out:json][timeout:240];
(
  way["power"="line"]["voltage"~"{V_REGEX_HV}"]({s},{w},{n},{e});
);
out geom;

{V_REGEX_HV} = ([3-9][0-9]{4}|[1-9][0-9]{5,}) (a voltage tag of 30,000 V or more, as text). {s},{w},{n},{e} is the region's bounding box from this table (south, west, north, east; regions overlap a little and the processor dedupes):

keydescriptionsouthwestnortheast
eu_westW Europe (FR/BE/NL/LU)42-5528
eu_centralCentral Europe (DE/AT/CH/CZ/PL)4655525
eu_iberiaIberia (ES/PT)35-10444
eu_italyItaly + Balkans3664822
eu_nordicsNordics + Baltics5447232
eu_eastE Europe (RO/HU/BG/GR/UA)35195242
eu_gb_ieGB + Ireland49-11623
eu_icelandIceland62-2667-12
na_eastN America East24-10050-60
na_westN America West24-13050-100
na_centralN America Central24-10550-85
na_canadaCanada48-14070-52
na_alaskaAlaska West51-18072-130
na_hawaiiHawaii18-16123-154
na_mexicoMexico + C America14-11833-86
na_caribbeanCaribbean + C America South7-9027-59
sa_brazil_seBrazil SE-30-55-15-35
sa_brazil_neBrazil NE + N-15-755-35
sa_southArgentina/Chile/Uruguay-56-76-20-50
sa_andeanColombia/Peru/Ecuador/Bolivia-20-8212-58
as_india_nIndia North20683690
as_india_sIndia South + Sri Lanka5722288
as_china_eChina East2010442125
as_china_wChina West257548110
as_japanJapan + Korea3012446146
as_se_mainlandSE Asia Mainland59024110
as_se_islandsSE Asia Islands-10958142
as_philippinesPhilippines (Luzon+Visayas)411522128
as_middle_eastMiddle East12324560
as_centralCentral Asia35505588
af_northNorth Africa20-183835
af_westWest Africa0-182218
af_eastEast Africa-12281852
af_southSouthern Africa-3610042
af_madagascarMadagascar + Mauritius-2742-1060
oc_australiaAustralia-44112-10154
oc_nzNew Zealand-48165-34179
oc_pacificPNG + SI + Vanuatu + NC + Fiji-23142-1180
ru_westRussia West45287060
ru_siberiaRussia Siberia455572110
ru_eastRussia Far East4210572180

1b. Sparse-region fill — download_sparse_region_fill (no voltage filter)

[out:json][timeout:240];
(
  way["power"="line"]({s},{w},{n},{e});
  way["power"="cable"]["location"="underground"]({s},{w},{n},{e});
);
out geom;

Run over the bounding boxes of these regions only: af_madagascar, eu_iceland, na_alaska, na_hawaii, oc_pacific.

1c. European 33 kV supplement — etl/download_eu_33kv.py::_fetch_region (the same HV query, cell by cell)

[out:json][timeout:170];
(way["power"="line"]["voltage"~"{dg.V_REGEX_HV}"]({cs},{cw},{cn},{ce}););
out geom;

{dg.V_REGEX_HV} is the regex of 1a. Each region below is cut into 2.0° × 2.0° cells ({cs},{cw},{cn},{ce}); the cells are merged and deduplicated by element id into osm_<region>_hv_lines.json, replacing the one-shot regional file of 1a for that region.

keydescriptionsouthwestnortheast
eu_west42-5528
eu_central4655525
eu_iberia35-10444
eu_italy3664822
eu_nordics5447232
eu_east35195242
eu_gb_ie49-11623

1d. Great Britain lines and cables — download_global.py::gb_lines_cables_query, the gb_full group

[out:json][timeout:300];
area["ISO3166-1"="GB"]["admin_level"="2"]->.uk;
(
  way["power"="line"](area.uk);
  way["power"="cable"](area.uk);
);
out geom;

Every power=line and every power=cable way (any location, any voltage) in the United Kingdom area (the country relation: land and the 12-nautical-mile territorial sea). Written to osm_gb_lines_cables.json; it replaces the earlier osm_gb_all_lines.json, which was fetched but never processed. It serves Great Britain's sub-220 kV supplement from the first nightly build after this change (dated 2026-10-03); until that build, and whenever the file is absent, the GB supplement comes from the GB + Ireland extract of 1c as before. From the first nightly build after the GB backbone switch of 2026-10-04 it also serves Great Britain's 220 kV-and-up backbone (the rules below).

1e. United States underground HV cables — download_us_hv_cables (the us_cables group)

[out:json][timeout:240];
(
  way["power"="cable"]["voltage"~"{V_REGEX_HV100}"]["location"!~"^(underwater|submarine|sea|offshore)"]["submarine"!="yes"]({s},{w},{n},{e});
);
out geom;

{V_REGEX_HV100} = ([1-9][0-9]{5,}) (a voltage tag of 100,000 V or more). Run over the 1a bounding boxes of these regions (the contiguous United States; the boxes also reach southern Canada and northern Mexico, whose cables are served like their overhead lines): na_east, na_west, na_central. Written to osm_<region>_hv_cables.json and read with the HV line files under the same rules, plus the cable floor of the PyPSA-Eur countries: a cable below 100 kV is not served (collector and distribution cabling — wind-farm array cables are often tagged location=underground even on the seabed). Served as power_kind=cable. Underwater and submarine cables are not fetched here: they are the Offshore cables layer's (§10), which from 2026-11-03 draws OpenStreetMap's underwater power cables worldwide (until then only inside its US East Coast box, 24–45° N, 82–65° W — the Trans Bay Cable under San Francisco Bay, for one, was on neither layer and came from the HIFLD gap-fill below; the gap-fill's own comparison set is the copy of the 2026-04 layer named in its rule, unchanged). Alaska and Hawaii already receive cables from the sparse fill of 1b. Served from the first nightly build after this change (dated 2026-10-13).

Processing rules (etl/process_global.py::process_osm_lines_non_europe, process_lines)

2. Substations

served layer: Substations (substations.pmtiles, free) · raw files: osm_subs_<cc>.json, osm_subs_us_chunk_NN.json, osm_fr_subs_tile_NN.json, osm_gb_substations.json · modules: etl/download_global.py, etl/download_us_substations.py, etl/process_global.py · refresh: rolling: each nightly re-fetches the stalest files of the group, a full cycle in about 30 days (etl/_osm_refresh.py)

2a. One area query per country — download_global_substations

[out:json][timeout:120];
area["ISO3166-1"="{cc}"]->.a;
(
  node["power"="substation"](area.a);
  way["power"="substation"](area.a);
  relation["power"="substation"](area.a);
);
out center;

{cc} runs over 137 ISO 3166-1 codes: GB, FR, DE, ES, IT, NL, BE, AT, CH, PL, CZ, SE, NO, DK, FI, IE, PT, GR, RO, HU, SK, HR, BG, SI, LT, LV, EE, LU, RS, BA, ME, MK, AL, UA, MD, BY, IS, MT, CY, US, CA, MX, GT, HN, SV, NI, CR, PA, CU, DO, JM, TT, PR, BR, AR, CL, CO, PE, VE, EC, BO, PY, UY, GY, SR, JP, KR, CN, TW, IN, PK, BD, LK, NP, TH, VN, MY, SG, ID, PH, MM, KH, LA, TR, SA, AE, IL, JO, IQ, IR, KW, QA, BH, OM, YE, LB, SY, KZ, UZ, TM, KG, TJ, GE, AM, AZ, MN, ZA, EG, MA, DZ, TN, LY, NG, GH, KE, TZ, ET, CI, SN, CM, CD, AO, MZ, ZM, ZW, BW, NA, UG, RW, MG, MU, SD, AU, NZ, FJ, PG, RU. (The US entry times out; the US file comes from 2b. France's file is the merge of 2e's tiles.)

2b. United States in strips — etl/download_us_substations.py::build_query

[out:json][timeout:170];
(
  node["power"="substation"]({south},{west},{north},{east});
  way["power"="substation"]({south},{west},{north},{east});
  relation["power"="substation"]({south},{west},{north},{east});
);
out center;
keydescriptionsouthwestnortheast
West Coast24.0-125.049.0-114.9
Mountain24.0-115.049.0-104.9
Plains24.0-105.049.0-94.9
Midwest24.0-95.049.0-84.9
East Central24.0-85.049.0-74.9
Atlantic24.0-75.049.0-65.0
Alaska51.0-180.072.0-130.0
Hawaii18.0-161.023.0-154.0

2c. Great Britain, every substation — download_global.py::gb_substations_query, the gb_full group

[out:json][timeout:120];
area["ISO3166-1"="GB"]["admin_level"="2"]->.uk;
(
  node["power"="substation"](area.uk);
  way["power"="substation"](area.uk);
  relation["power"="substation"](area.uk);
);
out center;

Processing rules (etl/process_global.py::process_osm_substations_global)

2d. Great Britain HV substation polygons — gb_substations_hv_geom_query: fetched, not served

[out:json][timeout:300];
area["ISO3166-1"="GB"]["admin_level"="2"]->.uk;
(
  nwr["power"="substation"]["voltage"~"([1-9][0-9]{5,})"](area.uk);
  nwr["power"="substation"]["substation"~"^(transmission|generation|converter)$"](area.uk);
);
out geom;

Written to osm_gb_substations_hv_geom.json (the gb_full group). An input of the GB network topology work; no served layer reads it today. It is listed so the inventory is complete; it is included in the offer below.

2e. France in tiles — download_global.py::fr_substations_tile_query, the fr_subs_tiles group

[out:json][timeout:180];
area["ISO3166-1"="FR"]->.a;
(
  node["power"="substation"](area.a)(41.0,-5.8,44.5,0.5);
  way["power"="substation"](area.a)(41.0,-5.8,44.5,0.5);
  relation["power"="substation"](area.a)(41.0,-5.8,44.5,0.5);
);
out center;

France's area query (2a with {cc} = FR) outgrew Overpass's time limit, so France is fetched as 13 tiles: 2a's selection cut by bounding box. The query above is tile 01; every other tile is the same query with its own box, and tile 13 is one query with all of its boxes. The tiles' boxes cover the whole globe and the area filter keeps only France, so together they return what 2a returns for France. Each tile is cached as osm_fr_subs_tile_NN.json; once all 13 hold data they are merged, deduplicated by (element type, id), into osm_subs_fr.json, the file the processing rules above read.

tiledescriptionsouthwestnortheast
01south-west: Pays basque, Béarn, Landes41.0-5.844.50.5
02south: Toulouse, Occitanie west41.00.544.54.5
03south-east: Provence, Côte d'Azur, Corsica41.04.544.510.0
04Bordeaux, Charentes, Vendée44.5-5.847.00.5
05Limousin, Auvergne, Berry44.50.547.04.5
06Rhône, Alpes, Bourgogne south44.54.547.010.0
07Bretagne, Pays de la Loire, Maine47.0-5.849.00.5
08Île-de-France, Centre47.00.549.04.5
09Champagne south, Lorraine, Alsace, Franche-Comté47.04.549.010.0
10Normandie west, Cotentin49.0-5.851.50.5
11Normandie east, Picardie, Nord49.00.551.54.5
12Ardennes, Lorraine north, Alsace north49.04.551.510.0
13outside the metropolitan envelope (overseas)-90.0-180.041.0180.0
13outside the metropolitan envelope (overseas)51.5-180.090.0180.0
13outside the metropolitan envelope (overseas)41.0-180.051.5-5.8
13outside the metropolitan envelope (overseas)41.010.051.5180.0

3. GB wind turbines and farms (new layer)

served layer: GB wind turbines (OpenStreetMap) — a separate, all-OpenStreetMap layer (gb_wind_turbines.pmtiles), UK regional cut; served since 2026-10-03 — the first tile, built that day from a fetch with the widened sea boxes, went out with the deploy; the nightly refreshes it · raw files: osm_gb_wind_generators.json, osm_gb_wind_plants.json · group: gb_wind (etl/download_global.py) · builder: etl/build_gb_wind_turbines.py · refresh: rolling: each nightly re-fetches the stalest files of the group, a full cycle in about 30 days (etl/_osm_refresh.py; the layer's data window shows the extract date)

3a. Turbines — every wind generator in the UK area plus the offshore boxes (gb_wind_generators_query)

[out:json][timeout:300];
area["ISO3166-1"="GB"]["admin_level"="2"]->.uk;
(
  nwr["power"="generator"]["generator:source"="wind"](area.uk);
  nwr["power"="generator"]["generator:source"="wind"](51.25,0.7,51.95,2.4);
  nwr["power"="generator"]["generator:source"="wind"](50.4,-1.5,51.25,0.7);
  nwr["power"="generator"]["generator:source"="wind"](51.8,-0.5,56.6,2.95);
  nwr["power"="generator"]["generator:source"="wind"](55.8,-3.6,61.0,0.5);
  nwr["power"="generator"]["generator:source"="wind"](53.0,-5.6,54.95,-2.9);
);
out center tags;

3b. Wind farms — every wind plant, with member geometry (gb_wind_plants_query)

[out:json][timeout:300];
area["ISO3166-1"="GB"]["admin_level"="2"]->.uk;
(
  nwr["power"="plant"]["plant:source"~"wind"](area.uk);
  nwr["power"="plant"]["plant:source"~"wind"](51.25,0.7,51.95,2.4);
  nwr["power"="plant"]["plant:source"~"wind"](50.4,-1.5,51.25,0.7);
  nwr["power"="plant"]["plant:source"~"wind"](51.8,-0.5,56.6,2.95);
  nwr["power"="plant"]["plant:source"~"wind"](55.8,-3.6,61.0,0.5);
  nwr["power"="plant"]["plant:source"~"wind"](53.0,-5.6,54.95,-2.9);
);
out geom;

The United Kingdom area is land plus the 12-nautical-mile territorial sea; offshore farms beyond it are reached through these boxes, chosen to reach the UK offshore wind areas; where a box overlaps a neighbour's waters, the screen below refuses those points:

keydescriptionsouthwestnortheast
box 1Thames / outer estuary: London Array, Kentish Flats, Thanet, Gunfleet, Greater Gabbard, Galloper51.250.751.952.4
box 2Channel (Rampion)50.4-1.551.250.7
box 3southern + central North Sea51.8-0.556.62.95
box 4Scottish North Sea / Moray / Shetland55.8-3.661.00.5
box 5Irish Sea (points in the Isle of Man box 54.04–54.42 N, 4.85–4.30 W are dropped)53.0-5.654.95-2.9

Processing rules (the UK regional cut — method version 1.0, read from the builder's PROCESSING_RULES)

4. Proposed lines (OpenStreetMap)

served layer: Proposed lines (OpenStreetMap) (osm_proposed_lines.pmtiles; a FREE layer since 2026-11-03 — until then the planned_lines source-layer of the paid Planned upgrades tile, which now carries no OpenStreetMap data) · raw files: osm_planned_lines.json, osm_planned_subs.json · modules: etl/download_planned.py, etl/process_planned.py · refresh: fetched by the nightly when the cached raw file is missing or older than 28 days (ATLAS_PLANNED_MAX_AGE_DAYS; a re-pull replaces the cache only above the OSM rolling-refresh retention floor), otherwise kept as is

4a. Proposed / under-construction lines (worldwide, no bounding box)

[out:json][timeout:300];
(
  way["proposed:power"="line"];
  way["construction:power"="line"];
  way["power"="line"]["construction"="yes"];
  way["power"="line"]["planned"="yes"];
);
out geom;

4b. Proposed / under-construction substations (worldwide)

[out:json][timeout:120];
(
  node["proposed:power"="substation"];
  way["proposed:power"="substation"];
  relation["proposed:power"="substation"];
  node["construction:power"="substation"];
  way["construction:power"="substation"];
  relation["construction:power"="substation"];
);
out center;

Processing rules (etl/process_planned.py::process_planned_lines)

5. Gas pipelines

served layer: Gas pipelines (gas_pipelines.pmtiles, free) · raw files: osm_gas_<region>.json, gas_pbf_manifest.json · modules: etl/download_gas.py, etl/process_gas.py · refresh: the served tile is the WORLD build (below), re-made by hand from fresh Geofabrik extracts; the Overpass boxes roll through the staggered refresh (the stalest region re-pulled each night, a partial answer never replacing a cached one) but do not tile while the world build stands

The world build (served from the first deploy after 2026-11-03)

Not an Overpass query: etl/download_gas.py --from-pbf reads the Geofabrik continent extracts (.osm.pbf; Europe and the United States of 2026-11-02, the other continents of 2026-10-16) through osmium tags-filter w/man_made=pipeline and osmium export (GeoJSON sequence, linestrings, way ids), keeps every way whose substance is in the gas family — the same list the Overpass query below takes — and writes each extract in the Overpass answer shape, so etl/process_gas.py classifies it exactly as a box answer; a closed way tagged area=yes (a facility outline, never a pipeline) is not taken. A manifest (gas_pbf_manifest.json) names the files the processor reads; the committed stamp etl/seed/gas_pipelines_world.json records the build (extracts, sizes, md5, 108,566 ways) and keeps a box-only nightly from tiling over it. Nothing from any other source enters the OpenStreetMap part of the tile.

The Overpass boxes (the layer until 2026-11-03; still fetched for the suitability scorer)

[out:json][timeout:300];
(
  way["man_made"="pipeline"]["substance"~"^(gas|natural_gas|cng|lpg|ngl|hydrocarbons)$"]({s},{w},{n},{e});
);
out geom;
keydescriptionsouthwestnortheast
gas_europeEurope35-127242
gas_naNorth America14-14072-52
gas_saSouth America-56-8212-35
gas_asia_eastEast Asia187255150
gas_middle_eastMiddle East12324260
gas_africaAfrica-36-183852
gas_russiaRussia422872180
gas_oceaniaOceania-48110-10180

Processing rules (etl/process_gas.py)

6. Gas facilities, LNG sites and pipeline projects

served layers: Gas facilities (gas_facilities.pmtiles: compressor stations; LNG site locations) and Gas pipeline projects (gas_pipeline_projects.pmtiles), both free · modules: etl/build_gas_facilities.py, etl/build_gas_pipeline_projects.py, etl/_gas_facilities.py · refresh: a static release — the downloader is not in any workflow; re-fetched by hand (release 2026-09-29; the builders query Overpass when they run)

6a. Compressor stations — build_gas_facilities.py::osm_compressors

[out:json][timeout:300];(nwr["substation"="compression"]({s},{w},{n},{e});nwr["pipeline"="substation"]["substance"~"gas",i]({s},{w},{n},{e}););out center tags;
keydescriptionsouthwestnortheast
tile 124-12537-104
tile 237-12550-104
tile 324-10437-90
tile 437-10450-90
tile 524-9037-66
tile 637-9050-66
tile 714-12024-86
tile 850-14172-52
tile 940-17072-141
tile 1044-6650-52

Rules: every OpenStreetMap compressor station in North America is matched to the EPA Greenhouse Gas Reporting Program facility on the same site — within 1.5 km always; within 3 km when the names share a place word or station number; within 5 km when the operator or the full name also agrees — and the matched row carries both (src=OSM + GHGRP); an unmatched station stays an OpenStreetMap-only row (src=OSM); EPA-only stations sit at their reported coordinates. Tiles overlap at their edges only; the (type, id) key dedupes.

6b. LNG terminals

No Overpass query: each site's location comes from one documented public source named per row in etl/seed/lng_terminals.csv (EIA, EPA GHGRP, EPA Facility Registry Service, Wikidata or OpenStreetMap). The rows whose source is OpenStreetMap carry that credit; a machine-readable list of them is part of the offer.

6c. Gas pipeline projects — build_gas_pipeline_projects.py::osm_named_ways then osm_way_geometry

[out:json][timeout:300];(way["man_made"="pipeline"]["name"]["substance"~"gas",i]({s},{w},{n},{e});way["construction:man_made"="pipeline"]["name"]({s},{w},{n},{e});way["proposed:man_made"="pipeline"]["name"]({s},{w},{n},{e});way["man_made"="pipeline"]["construction"="yes"]["name"]({s},{w},{n},{e}););out tags center;
[out:json][timeout:300];way(id:{','.join(map(str, chunk))});out geom;
keydescriptionsouthwestnortheast
tile 124-12537-104
tile 237-12550-104
tile 324-10437-90
tile 437-10450-90
tile 524-9037-66
tile 637-9050-66
tile 750-17072-129

Rules: the US EIA Natural Gas Pipeline Projects tracker supplies the project list and attributes; a project is drawn only where OpenStreetMap maps a pipeline way of the same name in one of the project's states (names normalised; a name match against the wrong operator is rejected and logged); the geometry of the matched ways is then fetched by way id and the popup says how many miles are drawn. Every drawn geometry is OpenStreetMap-derived.

7. Water infrastructure

served layer: Water infrastructure (water_infrastructure.pmtiles, free; the map calls the layer Waterways) · raw files: <stem>-latest.osm.pbf (Geofabrik), osm_water_dams_<key>.json, osm_water_treatment_<key>.json, osm_water_towers_<key>.json, osm_water_pipes_<key>.json · modules: etl/process_water_fiber.py, etl/download_water_fiber.py, etl/fetch_water_pipelines.py · refresh: a static release — the downloader is not in any workflow; re-fetched by hand

7·0. Worldwide from the Geofabrik extracts (the served tile since 2026-11-03) — process_water_fiber.py --pbf

The served tile is built from the Geofabrik continent extracts (<stem>-latest.osm.pbf of 2026-11-02: africa, asia, australia-oceania, central-america, south-america, russia, europe, the four eastern-Europe country extracts, north-america canada / mexico and us — every continent but Antarctica; Greenland's own extract was not fetched), not from Overpass: osmium tags-filter with the expressions below (referenced nodes kept, so ways have geometry), then osmium export and the processing rules of this section. The expressions are the union of the tags the Overpass queries of 7a–7d ask for, plus man_made=reservoir_covered (the legend's Reservoirs, which no Overpass query fetched); man_made=water_well is left out. The Overpass queries remain the documented fallback and define the tag set.

nwr/man_made=dam,reservoir_covered,water_works,desalination_plant,wastewater_plant,pumping_station,water_tower
nwr/waterway=dam,pipeline
w/man_made=pipeline
w/communication=line
w/telecom=cable
w/utility=telecom

7a. Dams

[out:json][timeout:120];
(
  node["waterway"="dam"]({s},{w},{n},{e});
  way["waterway"="dam"]({s},{w},{n},{e});
);
out center;

7b. Water treatment, desalination, wastewater

[out:json][timeout:120];
(
  node["man_made"="water_works"]({s},{w},{n},{e});
  way["man_made"="water_works"]({s},{w},{n},{e});
  node["man_made"="desalination_plant"]({s},{w},{n},{e});
  way["man_made"="desalination_plant"]({s},{w},{n},{e});
  node["man_made"="wastewater_plant"]({s},{w},{n},{e});
  way["man_made"="wastewater_plant"]({s},{w},{n},{e});
);
out center;

7c. Water towers and pumping stations (the first seven regions below — Europe only)

[out:json][timeout:120];
(
  node["man_made"="pumping_station"]({s},{w},{n},{e});
  node["man_made"="water_tower"]({s},{w},{n},{e});
);
out;
keydescriptionsouthwestnortheast
gb49.9-10.560.91.8
fr42.0-5.551.19.6
de47.25.855.115.1
nl_be49.52.553.67.2
iberia36.0-10.044.04.0
italy36.06.547.118.5
nordics54.04.071.031.0
na_east24-10050-60
na_west24-13050-100

7d. Water and sewage pipelines — fetch_water_pipelines.py::download_all

[out:json][timeout:180];
(
  way["man_made"="pipeline"]["substance"="water"]({s},{w},{n},{e});
  way["man_made"="pipeline"]["substance"="drinking_water"]({s},{w},{n},{e});
  way["man_made"="pipeline"]["substance"="rainwater"]({s},{w},{n},{e});
  way["man_made"="pipeline"]["substance"="sewage"]({s},{w},{n},{e});
  way["man_made"="pipeline"]["substance"="wastewater"]({s},{w},{n},{e});
  way["waterway"="pipeline"]({s},{w},{n},{e});
);
out geom;
keydescriptionsouthwestnortheast
gb49.9-10.560.91.8
fr42.0-5.551.19.6
de47.25.855.115.1
nl_be49.52.553.67.2
iberia36.0-10.044.04.0
italy36.06.547.118.5
nordics54.04.071.031.0
ch_at45.05.549.517.5
pl_cz48.012.055.525.0
us_ne37.0-81.045.5-67.0
us_ca32.0-125.042.5-114.0
us_tx25.0-107.037.0-93.5

Processing rules (etl/process_water_fiber.py::process_water_infrastructure)

8. Data centres and the DC pipeline

served layers: Data centres (datacenters.pmtiles) and the DC pipeline (dc_pipeline.pmtiles), both free · raw file: osm_datacenters.json · modules: etl/download_telecom.py, etl/process_telecom.py, etl/process_dc_pipeline.py · refresh: fetched by the nightly only when the cached raw file is missing, otherwise kept as is (no age check; a layer can be months behind OpenStreetMap)

[out:json][timeout:300];
(
  node["telecom"="data_center"];
  way["telecom"="data_center"];
  node["building"="data_centre"];
  way["building"="data_centre"];
  node["man_made"="data_center"];
  way["man_made"="data_center"];
);
out center;

Processing rules

9. Telecom and fibre

served layers: Terrestrial fibre (terrestrial_fiber.pmtiles), Fibre routes (fiber_routes.pmtiles), US fibre (us_fiber.pmtiles), all free · modules: etl/download_water_fiber.py, etl/download_fiber_routes.py, etl/download_us_fiber.py, etl/process_water_fiber.py, etl/process_fiber_routes.py, etl/process_us_fiber.py · refresh: a static release — the downloader is not in any workflow; re-fetched by hand

9a. Terrestrial fibre — download_water_fiber.py::download_terrestrial_fiber (the tag set) and process_water_fiber.py --pbf (the served tile since 2026-11-03, worldwide)

[out:json][timeout:300];
(
  way["communication"="line"]["telecom:medium"="fibre"]({s},{w},{n},{e});
  way["telecom"="cable"]({s},{w},{n},{e});
  way["utility"="telecom"]({s},{w},{n},{e});
);
out geom;
keydescriptionsouthwestnortheast
fiber_gbGB fiber49.9-10.560.91.8
fiber_frFrance fiber42.0-5.551.19.6
fiber_deGermany fiber47.25.855.115.1
fiber_nl_beNetherlands+Belgium49.52.553.67.2
fiber_nordicsNordics fiber54.04.071.031.0
fiber_iberiaSpain+Portugal fiber36.0-10.044.04.0
fiber_italyItaly fiber36.06.547.118.5

Since 2026-11-03 the served tile comes from the Geofabrik continent extracts of 2026-11-02 (the same files and osmium steps as section 7·0), not from these seven Overpass boxes: a way matches when it carries one of the three clauses above (communication=line with telecom:medium=fibre, telecom=cable, or utility=telecom — classify_fiber); the filter expressions are the w/communication=line, w/telecom=cable and w/utility=telecom lines of:

nwr/man_made=dam,reservoir_covered,water_works,desalination_plant,wastewater_plant,pumping_station,water_tower
nwr/waterway=dam,pipeline
w/man_made=pipeline
w/communication=line
w/telecom=cable
w/utility=telecom

Rules (process_water_fiber.py::process_terrestrial_fiber / process_from_pbf): every matching way kept, deduplicated by OpenStreetMap id; properties name, operator, medium (telecom:medium, fibre when absent), location, osm_id.

9b. US confirmed fibre — download_fiber_routes.py::download_osm_fiber

[out:json][timeout:300];
(
  way["communication"="line"]({s},{w},{n},{e});
  way["telecom:medium"="fibre"]({s},{w},{n},{e});
  way["telecom"="cable"]({s},{w},{n},{e});
  way["utility"="telecom"]({s},{w},{n},{e});
);
out geom;
keydescriptionsouthwestnortheast
us_west24-13050-100
us_central24-10050-85
us_east24-8550-60

9c. European mainline rail (a fibre-corridor proxy) — download_fiber_routes.py::download_eu_rail

[out:json][timeout:300];
(
  way["railway"="rail"]["usage"~"main|branch"]["service"!~"siding|spur|yard"]({s},{w},{n},{e});
);
out geom;
keydescriptionsouthwestnortheast
eu_gb_ie49-11612
eu_france42-5518
eu_iberia35-10444
eu_benelux_de4725515
eu_nordics5447232
eu_italy3664719
eu_central46125224
eu_east42195630
eu_baltics53206029
eu_greece_tr35194230

Rules (process_fiber_routes.py): OpenStreetMap fibre ways are route_type=confirmed_fiber, source=OpenStreetMap; rail corridors are proxies (route_type=rail_proxy) with an estimated bandwidth class by rail class — the EU rail proxies are OpenStreetMap-derived, the US ones come from BTS / FRA. Elements deduplicated by OpenStreetMap id.

9d. US telecom exchanges — download_us_fiber.py::download_osm_telecom_exchanges

[out:json][timeout:300];
(
  node["telecom"="exchange"](24,-130,50,-60);
  way["telecom"="exchange"](24,-130,50,-60);
  node["telecom"="central_office"](24,-130,50,-60);
  way["telecom"="central_office"](24,-130,50,-60);
);
out center;

Rules (process_us_fiber.py::process_osm_exchanges): points (node or centre), deduplicated by id, type=exchange (no element id is kept; the CSV export credits these rows by layer and type); the colocation facilities (PeeringDB) and FCC BDC tract points in the same tile are not OpenStreetMap-derived.

10. Offshore cables

served layer: Submarine Power Cables (OSM) (offshore_cables.pmtiles, free) · raw files: osm_ow_pbf/<extract>.geojsonseq (+ .prov.json), osm_ow_<key>.json · modules: etl/download_offshore_cables.py, etl/process_offshore_cables.py · refresh: a static release — rebuilt by hand; worldwide from 2026-11-03 (Geofabrik extracts: Europe and the United States as of 2026-11-01, the other continents as of 2026-10-15), the eight Overpass boxes below until then

10a. Worldwide — the OpenStreetMap extracts through osmium (from 2026-11-03)

Geofabrik's continent extracts (africa, asia, australia-oceania, central-america, south-america, russia, north-america's canada / mexico / us, europe with its belarus / georgia / moldova / ukraine files; nothing for Antarctica — OpenStreetMap as of 2026-11-01 for europe and us, 2026-10-15 for the rest), each first reduced to the tags this site's OpenStreetMap layers read, then osmium tags-filter with the union of the four selections of the query below and osmium export (-f geojsonseq --geometry-types=linestring -a id: every kept way as a line with all its tags and its id):

osmium tags-filter -o <stem>.filtered.osm.pbf <extract>.osm.pbf w/power=cable w/location=underwater,submarine w/submarine=yes w/seamark:type

The processor then applies the query's AND conditions to every exported way (process_offshore_cables.is_offshore_cable: power=cable with location=underwater or submarine, or with submarine=yes; power=line with location=overhead and a seamark:type), so the extracts admit exactly the ways the Overpass query admits. 2026-11-03 build: 218,188 ways exported, 2,621 served (2,359 from the europe extract, 136 asia, 44 australia-oceania, 40 us, 21 canada, 11 south-america, 9 africa, 1 central-america; mexico, russia, belarus, georgia, moldova and ukraine 0 — OpenStreetMap maps no submarine power cable there under these tags). A cable tagged location=underground on the seabed, or with no location tag, is not served (215 such ways carry seamark:type=cable_submarine; the selection is the 2026-04 build's, unchanged).

10b. The eight Overpass boxes (the 2026-04 build; still read, adding only ways the extracts lack)

[out:json][timeout:300];
(
  way["power"="cable"]["location"="underwater"]({s},{w},{n},{e});
  way["power"="cable"]["location"="submarine"]({s},{w},{n},{e});
  way["power"="line"]["location"="overhead"]["seamark:type"]({s},{w},{n},{e});
  way["power"="cable"]["submarine"="yes"]({s},{w},{n},{e});
);
out geom;
keydescriptionsouthwestnortheast
ow_gbGB offshore49-10623
ow_ne_atlanticNW Europe Atlantic50-56212
ow_balticBaltic Sea5386630
ow_medMediterranean35-104636
ow_us_eastUS East Coast24-8245-65
ow_china_eChina East Coast1810542125
ow_japanJapan offshore3012846146
ow_taiwanTaiwan Strait2111726123

Rules: every way kept, deduplicated by OpenStreetMap id (the extracts first, then the boxes); properties name, operator, voltage (parsed as for the lines), cables, frequency, location, osm_id; the tile carries the credit "© OpenStreetMap contributors, ODbL 1.0" in its metadata. The 2026-04 layer's North American ways (west of 50° W) were copied to etl/seed/offshore_cables_na.geojson, which the HIFLD gap-fill of §1 compares HIFLD lines with (2026-10-13); that copy is pinned by checksum and did not change with the worldwide build.

11. Aerodromes: exclusion zones, suitability, WECC CEM screening

served: Exclusion zones (exclusions.pmtiles, the airports source-layer, free); Site suitability (suitability.pmtiles); WECC CEM screening rasters (excl_airports.cog.tif, combined_exclusion, bitmask bit 3) and the downloads bundle; the global route finder's grids on US land (cats.tif's airport bit, from 2026-11-04) and in Great Britain and Europe (from 2026-11-05); the 1 km and 100 m route grids (cats.tif, fine.tif: these aerodrome points from 2026-10-15, the aerodromes of the seeds below from 2026-11-05); Site Development Cost, Grid Connection by Size and Site Value through those bits · modules: etl/download_suitability.py, etl/process_exclusions.py, etl/score_suitability.py, etl/build_wecc_exclusions.py, etl/publish_wecc_cem_inputs.py, etl/build_route_global.py, etl/build_route_finder.py, etl/build_route_fine.py, etl/build_site_cost_ext.py, etl/_airport_outlines.py, etl/build_airport_outlines.py, etl/seed/us_airport_outlines.geojson, etl/seed/airport_outlines.geojson, etl/build_airport_point_names.py, etl/seed/airport_point_names.json · refresh: the weekly suitability workflow (Mondays 03:00 UTC) runs the downloader, which fetches the aerodrome file only when its cached copy is missing; the exclusions tile was built 2026-04 and rebuilt 2026-11-05 from the same points and the seeds below; the WECC CEM rasters are a static release (2026-09-11)

11a. Aerodromes worldwide — download_suitability.py::download_airports

[out:json][timeout:300];
(
  node["aeroway"="aerodrome"];
  way["aeroway"="aerodrome"];
  relation["aeroway"="aerodrome"];
);
out center;

11b. WECC aerodromes — build_wecc_exclusions.py::layer_airports

[out:json][timeout:300];(node["aeroway"="aerodrome"]({s},{w},{n},{e});way["aeroway"="aerodrome"]({s},{w},{n},{e});relation["aeroway"="aerodrome"]({s},{w},{n},{e}););out center;

{s},{w},{n},{e} is the bounding box of the eleven WECC states. Rules: the aerodrome points inside the WECC footprint are buffered by airport_buffer_km (3.0 km by default; the value is recorded in each raster's .prov sidecar) and burned into a 250 m uint8 mask (excl_airports.cog.tif; bit 3 of bitmask.cog.tif; part of combined_exclusion.cog.tif and of the per-state airport km² in screening_summary.csv). The published COGs are Produced Works of this derived database; the buffered aerodrome polygons and the source points are included in the offer, and the downloads bundle's README carries the credit and this page's address. The query has asked for relations too since 2026-11-05; the published rasters were built from a cache of nodes and ways, fetched before that.

12. The global route finder's constraints: protected areas, military land, aerodromes

served: Exclusion zones (route_constraints_global.pmtiles, the constraints source-layer, free; from 2026-11-03) and the global route finder's 2 km grids (the cats.tif no-go / sensitive bands and the route card's designation names) · modules: etl/build_route_global.py, etl/build_route_constraints_global.py · refresh: a static release — the extracts were downloaded 2026-10-16; re-fetched by hand with the global route grids

12a. Geofabrik extracts — build_route_global.osm_extract

Not Overpass: the continent extracts central-america-latest.osm.pbf, europe_moldova-latest.osm.pbf, europe_georgia-latest.osm.pbf, europe_belarus-latest.osm.pbf, europe_ukraine-latest.osm.pbf, north-america_mexico-latest.osm.pbf, australia-oceania-latest.osm.pbf, russia-latest.osm.pbf, south-america-latest.osm.pbf, north-america_canada-latest.osm.pbf, africa-latest.osm.pbf, asia-latest.osm.pbf from download.geofabrik.de, each filtered with osmium tags-filter and exported with osmium export --geometry-types=polygon,point (multipolygons assembled by osmium):

nwr/boundary=protected_area,national_park nwr/leisure=nature_reserve nwr/landuse=military nwr/military=airfield,base,danger_area,naval_base,range,training_area nwr/aeroway=aerodrome

12b. Classification — build_route_global.osm_class

Rules, the same for the route grids and the map: no-go (type=nogo) = boundary=national_park, or protect_class in 1, 1a, 1b, 2 on a boundary=protected_area / leisure=nature_reserve; sensitive = the other protected areas and nature reserves, except protect_class 7–29 (cultural, resource and social protection are not nature designations); military = landuse=military or military=airfield / base / danger_area / naval_base / range / training_area; airport = aeroway=aerodrome areas, and a 1.5 km disc round an aerodrome mapped as a point with an iata or icao code (an uncoded aerodrome point is left out). Properties kept: type, name (name:en, else name), kind (protection_title or designation, else "National park" / "Nature reserve" / "Protected area" / "Military land" / "Airport"). No element id is kept.

Where: only outside the countries whose designations the route grids take from the US / Europe route builds (PAD-US; Natura 2000, the nationally designated areas and the UK agencies — build_route_global.DESIG_COUNTRIES: the United States and its territories; the EU27, the UK, Norway, Iceland, Switzerland, Liechtenstein, the Balkans and Turkey), judged per feature by its representative point (the route grids judge each 2 km cell, so an area straddling such a border may differ at the line) (a feature is kept when any continental grid holding it reads OpenStreetMap there, else by the 5 km world grid's rule) with the feature's country from Natural Earth; one geometry exported twice (a way and its relation, or a border park in two extracts) is kept once. The route grids rasterise the same features at 2 km (a cell by its centre; airports by any touch). Aerodromes are the exception on the route grids: every one these rules keep from an extract is rasterised there, inside those countries too (Puerto Rico's, for one), while route_constraints_global.pmtiles leaves them out. The extracts barely reach US land and hold little of Europe, so the grids that hold the US or Europe designations also rasterise the aerodrome points of §11a there, and the outlines beside them (§11a says how); the map draws those points and a marker for each outline in the exclusions tile, not in route_constraints_global.pmtiles, and does not draw the outlines. US land on a grid holding no US designations reads the extracts alone: the far Aleutians, west of 180°, on the grid of Russia and Mongolia, and Guam and the Northern Marianas on their Asian grids.

13. Wind turbines — Mexico (the wind turbines layer's OpenStreetMap part)

served: the Wind turbines layer's Mexican turbines and projects (wind_turbines.pmtiles, source layers wind_turbines and wind_projects, free; from 2026-11-03) — the United States (USWTDB) and Canada (CWTD) in the same tile come from their own public sources, not from OpenStreetMap · modules: etl/build_wind_turbines.py --mexico-osm, etl/_gen_pipeline.py · refresh: a static release — rebuilt by hand with the layer; the extract was downloaded 2026-11-02

13a. The extract through osmium (not Overpass)

Geofabrik's north-america/mexico extract (as of 2026-11-02), through osmium tags-filter with the expression below, then osmium cat -f opl, parsed by the builder (nodes, ways and relations):

nwr/power=generator nwr/power=plant nwr/generator:source=wind nwr/plant:source=*wind

13b. Processing rules (the builder's mexico_features)

The offer (ODbL s.4.6)

For every dataset above, and for anything this page has missed, CEAtlas will supply on request, free of charge and without restriction beyond the ODbL itself:

Write to hello@compoundingenergy.com. The layers that mix OpenStreetMap with other sources (transmission lines, substations, planned upgrades, gas pipelines, gas facilities, the DC pipeline, fibre routes, US fibre, site suitability, wind turbines (Mexico)) are supplied as their OpenStreetMap-derived part; the analysis rasters built over the served lines, substations and aerodromes — Site Development Cost, Grid Connection by Size, the civil works adders, Site Value — in the United States (Alaska, Hawaii and Puerto Rico included), Great Britain and Europe are Produced Works of those datasets (§1, §2, §11), and the OpenStreetMap-derived data they were built from is the same served data, supplied on the same request; the other sources are credited under their own licences, listed on the licences page. Whether such a layer is one database or a collection of databases under the ODbL is not settled.

Licence and attribution

OpenStreetMap data is © OpenStreetMap contributors, available under the Open Database Licence (ODbL) 1.0; www.openstreetmap.org/copyright. The map shows “© OpenStreetMap contributors” in its credit, the CSV export writes it on every OpenStreetMap-derived row (by element id, source field, or layer and type where a layer keeps no id), the site report prints it in its footer when it quotes these layers, and the licences page lists them. Map images, rasters, charts and reports made from these layers are Produced Works and may be used under CEAtlas's terms with that credit (the paid analysis rasters — Site Development Cost, Grid Connection by Size, civil works, Site Value — are such Produced Works on every grid they cover, the United States included, and say so in their layer information); the OpenStreetMap-derived data in the vector map tiles, in the CSV rows and in the copies offered here is under the ODbL.

What is not OpenStreetMap-derived, so that the boundary is clear: the plant registers (EIA, REPD, powerplantmatching, the national registries), the GB fleet census and BM-unit tables, PyPSA-Eur gridkit lines and buses, the HIFLD Open territory and grid-region polygons, the Natural Earth features, the weather and capacity-factor products, and every Compounding Energy forecast. The GridFinder predicted grid is a published model output (CC BY 4.0) whose inputs included OpenStreetMap topology; the lines it marks source=osm are excluded from what we serve. OpenStreetMap is used as an internal cross-check for the GB plant and unit locations, and nothing is copied from it into them.

Change log

DateVersionChange
2026-11-071.11A substation node or way with a state that takes it out of service (disused, abandoned, under construction, demolished and the like, the lines' rule) is left out of the served substations (§2), as a relation already was.
2026-11-061.10The substation queries for the United States, every other country and France (§2), and the planned substations (§4), ask for relations as well as nodes and ways, as the Great Britain query already did. A station mapped as a relation sits on its centre; one that repeats a node or way counts as one station with it, and one out of service is left out (§2's rules). They join the Substations layer from the first nightly build after this change, as each file's refresh comes round. The paid analysis rasters read them at their next rebuild, and the Connection Study when its list of connection points is next rebuilt with them.
2026-11-051.9A new seed of aerodrome names and places (§11a), from the points of §11a and the regional extracts of §12. The route finder reads it only to name, in its words, the airport a line on the 2 km or 5 km grids may cross or a click stands on.
2026-11-051.8The aerodromes mapped as relations in the contiguous US, Puerto Rico, Great Britain, Northern Ireland and Europe, and those mapped as closed ways larger than the square their point gets, in the same places and in Alaska and Hawaii, join these readers from a new seed (§11a): the route grids at 100 m, 1 km and 2 km, the 5 km grid for those with an iata tag, Site Development Cost in Alaska, Hawaii and Puerto Rico, the Site Development Cost, Grid Connection by Size and Site Value rasters through the route grids' bits, and the exclusions tile's markers. The Suitability score and the WECC screening rasters still read nodes and ways only, a closed way as one point. Both queries ask for relations too, for their next refresh.
2026-11-041.7The global route finder's grids that hold the US designations read the aerodrome points of §11a on US land, Alaska and Hawaii included, where the extracts of §12 barely reach, and in Alaska and Hawaii the outlines of the aerodromes mapped as relations, from Geofabrik's US extract (§11a, §12); on the 5 km world grid only those with an iata tag. The query did not change.
2026-11-031.6The offer and the licence paragraph name the paid analysis rasters (Site Development Cost, Grid Connection by Size, civil works, Site Value) as Produced Works of the served lines, substations and aerodromes on every grid they cover — the United States with Alaska, Hawaii and Puerto Rico, Great Britain, Europe — whose OpenStreetMap-derived inputs are the served datasets of §1, §2 and §11, supplied on the same request. No query or rule changed.
2026-11-031.6The Offshore cables layer (§10) is rebuilt worldwide as Submarine Power Cables (OSM): Geofabrik's extracts of every continent (Europe and the United States as of 2026-11-01, the other continents as of 2026-10-15) through osmium (10a), the same selection and properties as the eight Overpass boxes of 2026-04 (10b, still read); 2,621 ways served, 2,252 before. Nothing else changed.
2026-11-031.6The Wind turbines layer (§13) gains Mexico: OpenStreetMap's wind generators and wind plants from Geofabrik's Mexico extract (osmium, not Overpass), beside the United States and Canadian turbines from their own public sources; the layer joins the mixed-source list of the offer. Nothing else changed.
2026-11-031.5The global route finder's OpenStreetMap constraints (§12) are drawn in the Exclusion Zones layer worldwide, outside the countries the US / Europe route builds cover: route_constraints_global.pmtiles, from Geofabrik's continent extracts (not Overpass) through the route grids' own classification. Nothing else changed.
2026-10-131.4United States (from the first nightly build after this change): the underground HV cables are fetched (1e) and served in the Transmission lines layer with the overhead lines; HIFLD lines are drawn only where no line on this layer or the Offshore cables layer has the line (the HIFLD gap-fill rule above). Which HIFLD lines are drawn is decided against the OpenStreetMap lines, so the offer covers them too.
2026-10-121.3Great Britain's 33–99 kV cables on land (from the first nightly build after this change): in the GB extract a cable is now kept from 33 kV, like a line, unless it runs under water below 100 kV (offshore-wind inter-array and island cabling stays out); the continental and Ireland files keep the 100 kV cable floor (§1). Substations: 100–219 kV from zoom 7 (was 9) and 31–99 kV from zoom 9 (was 11) in the tile (§2). The queries are unchanged.
2026-10-081.2France's substations in tiles (2e; from the first nightly build after this change): France's area query (2a) outgrew Overpass's time limit, so France is fetched as 13 bounding-box tiles with 2a's selection and merged into the same file. A cached substation extract with no elements is now fetched again rather than kept. The other countries' queries, the processing rules and the served properties are unchanged.
2026-10-041.1The GB backbone switch (served from the first nightly build after this change): Great Britain's lines and cables at 220 kV and up now come from the GB lines-and-cables extract (1d) — 400 kV, 275 kV and the 220 kV offshore-wind export cables, a dual-voltage way as two rows — with Great Britain's internal HVDC links and the four interconnectors gridkit lacks (Viking Link, IFA2, ElecLink, Greenlink) as whole OpenStreetMap ways; PyPSA-Eur gridkit's lines and links with both ends in Great Britain leave the served layer except eleven 275 kV circuits (92 km) OpenStreetMap does not map continuously at 275 kV and the Great Britain half of Nemo Link (it continues gridkit's cross-border link), and gridkit keeps its cross-border links (never drawn twice), Northern Ireland, Ireland and the continent. Rules in §1 (the backbone bullet); the fallback keeps gridkit whenever the extract is absent or substantially short. On the pilot extract of 2026-10-02 the switch serves, before de-duplication, 7,000 km of 400 kV, 3,067 km of 275 kV (the 250–344 kV class, which includes the 254 kV Hornsea ONE export cable) and 1,020 km of 220 kV route from OpenStreetMap in place of 457 gridkit features (11,880 km); the in-app question “transmission lines in the UK” now counts these rows. The licences page, the Transmission layer card and the manual carry the same wording. The GB substations layer is unchanged (gridkit buses stay).
2026-10-031.0First publication. The page lists the GB datasets of the 2026-10-03 change as they enter service (the lines-and-cables extract from the first nightly build after this change; the wind layer with the deploy of 2026-10-03): the lines-and-cables extract replaces the all-lines file (lines 33–219 kV and cables 100–219 kV served; a multi-voltage way kept at its sub-220 kV level); the GB wind turbines layer (OpenStreetMap only, UK regional cut with the widened offshore boxes); the HV substation polygons fetched for the network topology work (not served). Worldwide, busbars, bays and lifecycle-tagged ways leave the lines layer; the near-duplicate rule gains the route-coincidence test for pairs with a GB-file way (the rule elsewhere is unchanged). The map credit reads “© OpenStreetMap contributors”, the CSV export, the site report and the WECC CEM downloads README carry the credit, and the Terms carve ODbL data out of their restrictions.