Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hackergrrl/abstract-point-store
Test suite & interface to implement a geographic point storage backend.
https://github.com/hackergrrl/abstract-point-store
Last synced: 20 days ago
JSON representation
Test suite & interface to implement a geographic point storage backend.
- Host: GitHub
- URL: https://github.com/hackergrrl/abstract-point-store
- Owner: hackergrrl
- Created: 2018-01-30T18:38:22.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2018-02-03T01:08:11.000Z (almost 7 years ago)
- Last Synced: 2024-05-13T16:25:45.126Z (6 months ago)
- Language: JavaScript
- Homepage:
- Size: 19.5 KB
- Stars: 3
- Watchers: 1
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# abstract-point-store
> Test suite & interface to implement a geographic (2D) point storage backend.
## Background
An abstract point store is a data store that allows you to store, delete, and
make spatial queries over many points. A point has 2 (or more) dimensional
coordinates, and a value associated with it (that is compatible with the
[comparable-storable-types][cst] set of types).## Install
```
npm install abstract-point-store
```## Some modules that use this
- [kdb-tree-store](https://github.com/peermaps/kdb-tree-store)
- [grid-point-store](https://github.com/noffle/grid-point-store)
- (*COMING SOON*) [geohash-point-store](https://github.com/noffle/geohash-point-store)If you write a new one, send a PR adding it.
## API
### `pointStore = new PointStore(opts)`
Create a new point store. `opts` include:
- (required) `opts.types`: a size-3 array of [comparable-storable-types][cst] strings: X coord, Y coord, value.
- (optional) `opts.store`: a point-store-specific storage backend for the spatial data.### `pointStore.insert(pt, value[ ,cb])`
`pt` is a size-2 array with the coordinates of the point. `value` is the value
to be associated with this point.### `pointStore.remove(pt[, opts][, cb])`
Remove all points at location `pt` (`[x, y]`).
Valid `opts` include:
- (optional) `opts.value`: Only delete points at this location with this
specific value.### `pointStore.query(bbox[, opts][, cb])`
Query for points with `bbox`, a size-2 array of the shape `[[minX,maxX],[minY,maxY]]`.
Results are given as an array of points in `cb(err, results)`. Each element in
`results` has a `point` and `value` property.## Test suite
Publishing a test suite as a module lets multiple modules all ensure
compatibility since they use the same test suite.To use the test suite from this module you can
`require('abstract-point-store/tests')`.An example of this can be found in the
[grid-point-store](https://github.com/noffle/grid-point-store/blob/master/test.js)
test setup.To run the tests simply pass your test module (`tap` or `tape` or any other
compatible modules are supported) and your store's constructor (or a setup
function) in:```js
var tests = require('abstract-point-store/tests')
tests(require('tape'), require('your-custom-point-store'), instance-of-needed-storage-backend)
```## Acknowledgements
- @mafintosh and @Feross for
[abstract-chunk-store](https://github.com/Feross/abstract-chunk-store), which this README is heavily borrowed from.
- @maxogden for starting the immensely useful `abstract-***-store` pattern.
- @substack for all of the
[kdb-tree-store](https://github.com/substack/kdb-tree-store) tests that served
as a base for this module.## License
ISC
[cst]: https://github.com/substack/comparable-storable-types