Cloud-native conversions of the World Base Map draft shapefiles by Tom Patterson and Nathaniel Vaughn Kelso, redistributed with credit to the source: https://shadedrelief.com/ne-draft
Cloud-native conversions of the World Base Map draft shapefiles by Tom Patterson and Nathaniel Vaughn Kelso, redistributed with credit to the source: https://shadedrelief.com/ne-draft/
35 layers · 317,067 features · EPSG:4326 · five formats per layer.
This repository contains no new cartography. It is a format conversion of the upstream shapefiles, plus one documented geometry correction (see Corrections). All credit for the data belongs to the original authors.
Preliminary data. The upstream README states: "Warning: Use these preliminary data with appropriate caution." This is draft, in-progress cartographic data — not an authoritative reference. Errors found here should be reported to the authors via the contact form at https://shadedrelief.com/ne-draft/.
Each layer is published in five formats, mirroring the same directory layout:
Why these choices
Shapefiles use the .shp.zip convention, so GDAL 3.1+ and QGIS open them
directly — no unzipping, no sidecar juggling:
ogrinfo shapefiles/Land.shp.zip. The shapefile sits at the zip root, so
ordinary unzip tools work too.
GeoParquet rows are ordered by a Hilbert space-filling curve over each layer's own extent, so spatially adjacent features sit in adjacent rows. This makes row-group statistics tight and lets readers prune aggressively on bounding-box queries. ZSTD gives a better ratio than snappy at comparable read speed.
GeoPackage ships twice, because the format is good at two different jobs.
gpkg/<layer>.gpkg mirrors the per-layer layout of every other format, so you can
grab one layer alone. gpkg/World-Base-Map.gpkg puts all 35 layers in a single
file — drag it into QGIS once and the whole base map loads, no 35-file dance.
Both carry an RTree spatial index per layer (so bbox queries hit the index
rather than scanning) and unlike shapefiles have no 2 GB limit, no 10-character
field-name truncation, and no sidecar files. Layers are named after the file;
geometry lives in a column called geom. See the
fid note — six layers needed
care.
PMTiles stop at z8 because this is small-scale (~1:10m-class) generalized
data with no meaningful detail beyond that zoom. Overzooming is left to the client.
Tiles are built with -r1 (no dot-dropping): tippecanoe's default thins point
layers at low zoom — it would keep just 1 of 945 airports at z0. Every point is
retained at every zoom instead. All three point layers ship a scalerank
attribute (plus natlscale on Airports, and min_zoom on the two
Elev-Points layers) precisely so your style can filter by importance, which
is far better than tiles having silently discarded the data. Filter in the style:
"filter": ["<=", ["get", "scalerank"], 4].
Railroads-beta2 and Road_Ferries-beta2 carry the upstream -beta2 naming.
The upstream download ships two Coral-Reefs shapefiles, and they are not identical. Both are preserved here at their original paths:
They share 23,155 of 23,188 geometries — near-identical revisions differing in 33.
If you need just one, prefer the newer root-level Coral-Reefs.
Distinct paths keep these apart in every per-layer format, but the two files share a
stem, and layer names inside a single GeoPackage must be unique. So in
World-Base-Map.gpkg — and only there — the older copy is named
Coral-Reefs-2024-06-06; the newer keeps the plain name Coral-Reefs. This is
the one place a layer is not named verbatim after its file.
fid attribute and GeoPackage's primary keySix layers carry an upstream attribute whose name collides with fid,
GeoPackage's primary key. GDAL's behaviour splits by field type, and neither branch
is acceptable left alone:
All six are therefore written with -lco FID=gpkg_fid, so the GeoPackage primary
key is gpkg_fid and the upstream attribute survives under its original name and
type. The other 29 layers use the conventional fid key. No attribute was dropped
or renamed in any layer — check report_gpkg.json (fid_renamed) for which is which.
If you convert the shapefiles yourself rather than using gpkg/, you need the flag:
One correction was made. It is the only intentional deviation from upstream.
Admin0-Polygons.shp and Admin1-Polygons.shp contain rings with invalid
winding order. GDAL reports this on read:
Despite the "Autocorrecting them" in that message, the driver's default
ring-assembly does not repair these cases. It trusts the shapefile winding
convention (clockwise exterior, counter-clockwise hole — the same result as
OGR_ORGANIZE_POLYGONS=ONLY_CCW), and in six Admin0-Polygons countries the
real outline is stored in a ring that convention reads as a hole inside a tiny
sliver ring — so the country punches itself out and renders transparent. Guinea,
for example, reads as rings of [18, 1756] points: an 18-point sliver as the
exterior, its actual 1,756-point outline demoted to a hole, giving a negative
area of −20.2 deg².
Affected: Guinea, Sierra Leone, Somaliland, Angola, Nicaragua, Ashmore and
Cartier Islands (Admin0-Polygons), plus six Admin1-Polygons features in
Mozambique, Tunisia, Vietnam and Zanzibar.
These layers were therefore converted with OGR_ORGANIZE_POLYGONS=DEFAULT,
which resolves rings by geometric containment instead of trusting the winding
convention. Guinea now measures 20.23 deg², consistent with its real ~245,857 km².
No geometry was edited — only ring interpretation. The other 33 layers are
unaffected and use the driver default.
This correction is applied consistently across all five formats, including the
shapefiles. shapefiles/Admin0-Polygons.shp.zip and
shapefiles/Admin1-Polygons.shp.zip are therefore re-exported, not upstream
bytes: their rings are written in correct winding order, so they no longer trigger
the GDAL warning above. Attribute schemas, values and CRS are unchanged. The
other 33 shapefile zips are byte-for-byte identical to the upstream files.
If you specifically need the unmodified upstream Admin0/Admin1 shapefiles, take them from https://shadedrelief.com/ne-draft/ rather than from this repository.
This is an upstream data defect, not a conversion artifact; it is present in the original shapefiles and worth reporting to the authors.
Web Mercator cannot represent latitudes beyond ±85.0511° — the poles project to
infinity. Four Elev-Points-World features fall outside that range and therefore
cannot appear in the tiles:
They are present and complete in shapefiles/, geojson/, geoparquet/ and
gpkg/, which are all EPSG:4326. This is a projection limit inherent to web maps, not
a data loss — pmtiles/Elev-Points-World.pmtiles holds 3,244 of 3,248 points; the
other two point layers are complete.
Shapefiles — open the zip directly, no extraction needed:
In QGIS, drag the .shp.zip onto the canvas, or use /vsizip/shapefiles/Land.shp.zip/Land.shp.
GeoPackage — one layer per file, or the whole base map from one file:
In QGIS, drag World-Base-Map.gpkg onto the canvas and pick layers from the dialog.
The RTree index makes bbox filters cheap:
DuckDB — the Hilbert ordering makes bbox filters prune row groups efficiently:
Python (GeoPandas):
MapLibre GL JS — each PMTiles file exposes one layer, named after the file:
Please credit the original authors — Tom Patterson and Nathaniel Vaughn Kelso — and link https://shadedrelief.com/ne-draft/ in any use or derivative.
Per the upstream README, most of these data are in the public domain, with coral reefs called out as the exception.
The two sources disagree, and this repository does not resolve the conflict:
License: Creative Commons Attribution 4.0 International License (which permits commercial use)Citation: IMaRS/USF, IRD, UNEP-WCMC, WorldFish, and WRI.DataSource: World Resources Institute, 2011 — Tropical Coral Reefs of the World (500-m resolution grid)If you intend to use the Coral-Reefs layers commercially, verify the licence
directly with UNEP-WCMC / WRI first. Cite IMaRS/USF, IRD, UNEP-WCMC, WorldFish, and WRI. regardless. The other 34 layers are not affected by this
ambiguity.
Converted from the upstream shapefiles with:
ogr2ogr) — GeoJSON, GeoPackage, shapefile re-exportspatial (ST_Hilbert) — GeoParquetconvert.py (GeoJSON/GeoParquet/PMTiles), convert_gpkg.py (GeoPackage) and
zip_shapefiles.py (shapefiles) reproduce every output. report.json carries
per-layer geometry types, feature counts, attribute lists and byte sizes;
report_gpkg.json carries the GeoPackage sizes, counts and fid handling.
Verification performed on the published files:
geom geometry
column, and an attribute list identical to its source shapefile. The combined
file holds 35 uniquely-named layers totalling 317,067 features. The winding-order
correction below is confirmed present in both: Guinea measures 20.23 deg², matching
the GeoJSON and GeoParquet outputs..shp.zip opens through GDAL with a matching feature count; the 33
unmodified ones are byte-for-byte identical to upstream, and the two
re-exported ones preserve field names, values and CRS.GeoJSON is written with GDAL defaults rather than RFC7946=YES, deliberately:
RFC 7946 splits polygons at the antimeridian, which would alter Ocean and
Bounding-Box geometry. Coordinates are truncated to 7 decimals to keep files
manageable.
| 719 |
Bathymetry/Bathymetry-4000m | Polygon/MultiPolygon | 4,121 |
Bathymetry/Bathymetry-5000m | Polygon | 7,569 |
Bathymetry/Bathymetry-6000m | Polygon | 1,225 |
Bathymetry/Bathymetry-7000m | Polygon | 65 |
Bathymetry/Bathymetry-8000m | Polygon | 41 |
Bathymetry/Bathymetry-9000m | Polygon | 25 |
Bathymetry/Bathymetry-10000m | Polygon | 4 |
Bounding-Box | Polygon | 1 |
Coast | LineString | 6,997 |
Coral-Reefs | Polygon | 23,188 |
Coral-Reefs/Coral-Reefs | Polygon | 23,188 |
Elev-Points-CONUS | Point | 689 |
Elev-Points-World | Point | 3,248 |
Glaciers | Polygon | 3,420 |
Ice-Shelf-Area | Polygon | 261 |
Ice-Shelf-Line | LineString | 346 |
Lakes | Polygon/MultiPolygon | 6,972 |
Land | Polygon | 6,988 |
Ocean | Polygon/MultiPolygon | 309 |
Railroads-beta2 | LineString | 30,255 |
Rivers | LineString/MultiLineString | 31,228 |
Road_Ferries-beta2 | LineString | 119,386 |
Small-Islands | Polygon | 7,807 |
Urban-Areas | Polygon | 9,857 |
Wetlands | Polygon | 12,980 |