Python implementation of the amazing S2 Geometry Library.
Latest commit 0a38380 Jan 29, 2016 @johneth johneth Fixed typo
Fixed a typo affecting CellUnion
Failed to load latest commit information.
.gitignore Initial commit Apr 1, 2014
LICENSE Initial commit Apr 1, 2014 Updated Apr 1, 2014 Fixed typo Jan 29, 2016 Initial commit of sphere code. Apr 1, 2014


Python implementation of the amazing C++ S2 Geometry Library. The S2 Geometry Library is explained in more detail here.

It basically maps a sphere to a 1D index. This allows you to do scalable proximity searches on distributed indexes such as with MongoDB and App Engine Datastore. It also has a load of other excellent features for dealing with spheres. I am yet to find a better system for mapping spheres to 1D indexes.

The tests are quite extensive and reflect those in the original S2 Geometry Library.


  • Needs to be packaged properly for use with PIP.
  • A few more S2 features could be added especially those associated with segments of a sphere.
  • I regret some of the naming conventions and wish they were more in line with how the C++ S2 library was originally packaged. For example I think it might be nicer for there to be separate packages called r1, s1 and s2. This would make also make it conform better with the mathematics behind the S2 Geometry Library.