S2 Geometry Library
This is a package for manipulating geometric shapes. Unlike many geometry libraries, S2 is primarily designed to work with spherical geometry, i.e., shapes drawn on a sphere rather than on a planar 2D map. This makes it especially suitable for working with geographic data.
S2 documentation can be found on s2geometry.io.
Requirements for End Users
- A C++ compiler with C++11 support, such as g++ >= 4.7.
- OpenSSL (for its bignum library)
- gflags command line flags, optional
- glog logging module, optional
- googletest testing framework (to build tests and example programs, optional)
On Ubuntu, all of these can be installed via apt-get:
sudo apt-get install cmake libgflags-dev libgoogle-glog-dev libgtest-dev libssl-dev
Otherwise, you may need to install some from source.
sudo port install cmake gflags google-glog openssl
Do not install
gtest from MacPorts; instead download release
cmake -DGTEST_ROOT=/...absolute path to.../googletest-release-1.8.0/googletest ..
in the build instructions below.
Thorough testing has only been done on Ubuntu 14.04.3 and macOS 10.12.
Build and Install
You may either download the source as a ZIP archive, or clone the git repository.
Via ZIP archive
Download ZIP file
cd [parent of directory where you want to put S2] unzip [path to ZIP file]/s2geometry-master.zip cd s2geometry-master
cd [parent of directory where you want to put S2] git clone https://github.com/google/s2geometry.git cd s2geometry
From the appropriate directory depending on how you got the source:
mkdir build cd build # You can omit -DGTEST_ROOT to skip tests; see above for macOS. cmake -DGTEST_ROOT=/usr/src/gtest .. make make test # If GTEST_ROOT specified above. sudo make install
Enable gflags and glog with
cmake -DWITH_GFLAGS=ON -DWITH_GLOG=ON ....
Disable building of shared libraries with
If you want the Python interface, you will also need:
- SWIG (for Python support, optional)
which can be installed via
sudo apt-get install swig
or on macOS:
sudo port install swig
Expect to see some warnings if you build with swig 2.0.
Python 3 is required.
Other S2 implementations
This is not an official Google product.