/fetch-berlin-depth-contours

Fetch depth contour lines of Berlin bodies of water.

Primary LanguageJavaScriptISC LicenseISC

fetch-berlin-depth-contours

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 version ISC-licensed chat on gitter

Installing

npm install fetch-berlin-depth-contours

Usage

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)

API

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.

Contributing

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.