Build terrain.pmtiles from Mapterhorn instead of fetching tiles ourselves
Mapterhorn (mapterhorn.com, Protomaps-affiliated) publishes pre-built Terrarium-encoded terrain as PMTiles: a global planet.pmtiles (z0-12) plus ~450 regional chunks (z13+). Same pmtiles extract --bbox=... mechanism offline.pmtiles already uses, just against their files — confirmed live against their real manifest and the documented Interlaken example. Replaces fetching every individual tile ourselves (even after this session's earlier concurrency fix, still tens of minutes for a real region) with 1-3 extract calls plus a merge when the bbox spans more than one chunk: seconds, not minutes. Removes CONCURRENT_TILE_FETCHES, write_terrarium_mbtiles, tile_range, lng/lat_to_tile_x/y, fetch_terrarium_tile, and the sqlite3 gem entirely — none of it is needed once the tiles arrive pre-packaged. dem.js's point-elevation lookup (shadow.js's terrain-shadow overlay) hardcoded a 256px PNG tile assumption that Mapterhorn's 512px WebP tiles would have silently broken — now reads the actually-decoded tile's own size and mime type instead of assuming either.
This commit is contained in:
1 parent
d041c21270
commit
f89dea5805
8 files changed
+224
-234
No files matched your search
+11
-1
@@ -80,8 +80,18 @@ class HillshadeControl {
|
||||
_addLayer() {
|
||||
if (this._map.getSource(HILLSHADE_ID)) return;
|
||||
|
||||
// terrain.pmtiles is built from Mapterhorn (mapterhorn.com — see
|
||||
// lib/maptool/pmtiles_builder.rb) whether generated in-app or by hand
|
||||
// (docs/development.adoc), so this credits them regardless of how it
|
||||
// got there — their own site lists the full per-region source
|
||||
// provenance (CC-BY-4.0 and similar), not practical to reproduce here.
|
||||
const source = this._offlineAvailable
|
||||
? { type: "raster-dem", url: `pmtiles://${window.location.origin}/tiles/terrain.pmtiles`, encoding: "terrarium" }
|
||||
? {
|
||||
type: "raster-dem",
|
||||
url: `pmtiles://${window.location.origin}/tiles/terrain.pmtiles`,
|
||||
encoding: "terrarium",
|
||||
attribution: "Terrain: Mapterhorn",
|
||||
}
|
||||
: {
|
||||
type: "raster-dem",
|
||||
tiles: ONLINE_TERRAIN_TILES,
|
||||
|
||||
Reference in new issue
Block a user