2.0.0 • Published 1 year ago

bbox-stream v2.0.0

Weekly downloads
3
License
ISC
Repository
github
Last release
1 year ago

bbox-stream

An async iterable of coordinates within a bounding box.

npm version ISC-licensed minimum Node.js version support me via GitHub Sponsors chat with me on Twitter

Installing

npm install bbox-stream

Usage

Note: If you're looking for a stream.Readable: This package does not expose it anymore, but since the Node.js stream APIs directly support (sync) iterables and async iterables, you likely won't need it.

async iterable interface

const coordsIterable = require('bbox-stream')

const it = coordsIterable([52.4, 13.4, 52.6, 13.6], .1)
for await (const coords of it) console.log(coords)
{ lat: 52.4, lon: 13.4 }
{ lat: 52.5, lon: 13.4 }
{ lat: 52.6, lon: 13.4 }
{ lat: 52.4, lon: 13.5 }
{ lat: 52.5, lon: 13.5 }
{ lat: 52.6, lon: 13.5 }
{ lat: 52.4, lon: 13.6 }
{ lat: 52.5, lon: 13.6 }
{ lat: 52.6, lon: 13.6 }

bbox must an array with 4 numbers, minLat, minLon, maxLat, maxLon. step must be a number.

You can pipe the async iterable into a Node.js stream.Writable using stream.pipeline():

const {pipeline} = require('stream')

pipeline(
	it,
	someWritableStream,
	(err) => {
		if (err) {
			console.error(err)
			process.exit(1)
		}
	}
)

callbag interface

const pipe = require('callbag-pipe')
const coords = require('bbox-stream/callbag')
const forEach = require('callbag-for-each')

pipe(
	coords([52.4, 13.4, 52.6, 13.6], .1),
	forEach(console.log)
)

Contributing

If you have a question, found a bug or want to propose a feature, have a look at the issues page.

1.0.1

1 year ago

2.0.0

1 year ago

1.0.0

6 years ago

0.1.0

7 years ago