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 · four 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 four 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.
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].
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.
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.
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 four 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/ and geoparquet/,
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.
Converting to GeoPackage — mind the
FIDfield. Five layers (Glaciers,Ice-Shelf-Area,Land,Small-Islands,Wetlands) carry an upstream attribute literally namedFID, which collides with GeoPackage's reserved key and fails withERROR 1: Wrong field type for FID. Rename the GeoPackage key to sidestep it:The other 30 layers convert without the flag. This is upstream schema, preserved as-is rather than silently renamed.
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, shapefile re-exportspatial (ST_Hilbert) — GeoParquetconvert.py and zip_shapefiles.py reproduce every output; report.json carries
per-layer geometry types, feature counts, attribute lists and byte sizes.
Verification performed on the published files:
.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.| 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 |