Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

s2-geometry

Package Overview
Dependencies
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

s2-geometry

A pure JavaScript/ES5.1 port of Google/Niantic's S2 Geometry library (used by Ingress, Pokemon GO)

  • 1.2.10
  • latest
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

s2-geometry (JavaScript/ES5.1)

| Sponsored by ppl

A pure JavaScript/ES5.1 port of Google/Niantic's S2 Geometry library (as used by Ingress, Pokemon GO)

Currently contains basic support for S2Cell

Face 2
Orientation A

Face 2


The North Pole
(and Canada / Europe)
Face 0
Orientation A

Face 0


Africa
Face 1
Orientation D

Face 1


Asia
Face 3
Orientation D

Face 3


Nothing
(and Australia)
Face 4
Orientation A

Face 4


The Americas
(and Provo, UT)
Face 5
Orientation D

Face 5


Antarctica

Where is this being used?

Simple Examples

'use strict';

var S2 = require('s2-geometry').S2;

var lat = 40.2574448;
var lng = -111.7089464;
var level = 15;



//
// Convert from Lat / Lng
//
var key = S2.latLngToKey(lat, lng, level);
// '4/032212303102210'



//
// Convert between Hilbert Curve Quadtree Key and S2 Cell Id
//
var id = S2.keyToId(key);
// '9749618446378729472'

var key = S2.idToKey(id);
// '9749618446378729472'


//
// Convert between Quadkey and Id
//
var latlng = S2.keyToLatLng(key);
var latlng = S2.idToLatLng(id);



//
// Neighbors
//
var neighbors = S2.latLngToNeighborKeys(lat, lng, level);
// [ keyLeft, keyDown, keyRight, keyUp ]



//
// Previous, Next, and Step
//
var nextKey = S2.nextKey(key);
var prevKey = S2.prevKey(key);

var backTenKeys = S2.stepKey(key, -10);

Previous and Next

You can get the previous and next S2CellId from any given Key:

  1. Convert from Lat/Lng to Key (Face and Hilbert Curve Quadtree)
  2. Get the Previous or Next Key
  3. Convert the Key to an Id (uint64 string)
var key = S2.latLngToKey(40.2574448, -111.7089464, 15);   // '4/032212303102210'
var id = S2.keyToId(key);                                 // '9749618446378729472'

var nextKey = S2.nextKey(key);
var nextId = S2.keyToId(nextKey);

var prevKey = S2.prevKey(key);
var prevId = S2.keyToId(prevKey);

var backTenKeys = S2.stepKey(key, -10);

// See it
console.log(prevKey);                                 // '4/032212303102203'
console.log(key);                                     // '4/032212303102210'
console.log(nextKey);                                 // '4/032212303102211'
console.log(nextId);

convert Cell Id to Hilbert Curve Quad Tree

Convert from base 10 (decimal) S2 Cell Id to base 4 quadkey (aka hilbert curve quadtree id)

Example '4/032212303102210' becomes '9749618446378729472'

'use strict';

var quadkey = '4/032212303102210'
var parts = quadkey.split('/');
var face = parts[0];                  // 4
var position = parts[1];              // '032212303102210';
var level = '032212303102210'.length; // 15

var cellId = S2.facePosLevelToId(face, position, level);

console.log(cellId);

Convert from hilbert quadtree id to s2 cell id:

Example '9749618446378729472' becomes '4/032212303102210'

'use strict';

var cellId = '9749618446378729472';

var hilbertQuadkey = S2.idToKey(cellId);

console.log(hilbertQuadkey);

Convert Key and Id to LatLng

var latlng = S2.keyToLatLng('4/032212303102210');

var latlng = S2.idToLatLng('9749618446378729472');

Keywords

FAQs

Package last updated on 10 Apr 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc