Bindings for the S2 Geometry Library into node.js.
S2 is a library that does spherical math over the world, and supports a very fancy Hilbert curve-related indexing scheme. S2 has no documentation besides source comments and this presentation. Notably it's used for MongoDB's 2dsphere index, as well as in viewfinderco's DynamoDB-powered database. s2map.com also demonstrates one of the killer features of the library, 'coverings', which are intelligently computed groups of cells that can be used to index geometries.
var s2 = require('s2');
var ll = new s2.S2LatLng(0, 0);
ll.isValid(); // true
var normalized = ll.normalized(); // true
var pt = ll.toPoint();
npm install
npm build . --build-from-source
npm test
node-s2 is a low level s2 wrapper. If you are simply looking to get geojson into s2, you should check out geojson-cover.
Some of the S2 API is not wrapped because it isn't meant to be exposed in this way, and is blocked from wrapping by DISALLOW_COPY_AND_ASSIGN.
- S2CellUnion
- S2Loop
- S2Polyline
- S2Polygon
- S2RegionCoverer
- S2RegionIntersection
- s2-geometry-javascript - an incomplete port of S2 to JavaScript.
- gos2 - very incomplete port to Go
- viewfinder built a python wrapper
- s2-geometry-php - another very incomplete port to PHP
- interview with david blackman