Fetch all tiles showing depth contour lines of Berlin bodies of water.
Warning: The tiles will be in the EPSG:3068
reference system.
Warning: This is a rather hacky WMS client. I should probably split this into focused modules and publish them on npm.
npm install fetch-berlin-depth-contours
const download = require('fetch-berlin-depth-contours')
const dir = path.join(__dirname, 'out')
const saveTile = (tile, res) => {
return res.buffer()
.then(buf => {
// write to disk here
})
}
const onSuccess = (_, job) => {
console.info('tile downloaded', job.title)
}
const onFailure = (err) => {
console.error(err)
process.exitCode = 1
}
download(saveTile, onSuccess, onFailure)
.catch((err) => {
console.error(err)
process.exit(1)
})
To save all tiles into a directory, you can use the saveToDir
helper:
const path = require('path')
const saveToDir = require('fetch-berlin-depth-contours/save-to-dir')
const dir = path.join(__dirname, 'tiles')
const saveToFile = saveToDir(dir)
download(saveTile, onSuccess, onFailure, [opt])
download
returns a Promise
that rejects if something fails badly. Note that it does not reject if a single tile can't be fetched, instead it will call onFailure
.
saveTile(tile, res)
should store the tile somewhere, as fetch-berlin-depth-contours
doesn't do this. tile
is in the common format [x, y, zoom]
.res
is a fetch
Response
object.
onSuccess(result, job)
and onFailure(err)
may report the progress.
opt
is an optional object that overrides these defaults:
{
zoom: 18,
size: 500,
concurrency: 4,
bbox: null, // default: bbox that the WMS server provides
layers: null // default: layer identified by lib/assert-capabilities
}
If provided, opt.bbox
must be in the EPSG:4326
reference system a.k.a. WGS 84 and look like this:
{minLat: 1.23, minLon: 2.34, maxLat: 3.45, maxLon: 4.56}
If provided, opt.layers
should be an array of layer IDs as strings.
If you have a question or have difficulties using fetch-berlin-depth-contours
, please double-check your code and setup first. If you think you have found a bug or want to propose a feature, refer to the issues page.