UNPKG

wmts-to-mbtiles

Version:

Save tiles from WMTS service to MBTiles format

56 lines (48 loc) 1.27 kB
#!/usr/bin/env node const express = require('express') const path = require('path') const MBTiles = require('@mapbox/mbtiles') const app = express() const fileArg = process.argv[2] || 'output.mbtiles' const file = path.resolve(path.join(__dirname, '../'), fileArg) const port = 5566 let tiles = null new MBTiles(file, (err, db) => { if (err) { console.log('Unable to open charts file: ', file) console.error(err) process.exit(-1) } else { db.getInfo(function(err, info) { if (err) { console.error(err) process.exit(-1) } console.log(info) tiles = db }) } }) app.get('/:z/:x/:y', (req, res) => { const {z, x, y} = req.params if (!tiles) { res.sendStatus(500) return } tiles.getTile(z, x, y, (err, tile, headers) => { if (err && err.message && err.message === 'Tile does not exist') { res.sendStatus(404) } else if (err) { console.error(`Error fetching tile ${z}/${x}/${y}:`, err) res.sendStatus(500) } else { res.writeHead(200, headers) res.end(tile) } }) }) app.use('/', express.static(__dirname)) app.listen(port, () => { console.log(`Listening ${port} and serving ${file}`) console.log(`Open http://localhost:${port}/`) })