The earth is no longer flat - introducing support for spherical geometries in Spherely and GeoPandas

Joris Van den Bossche

Wednesday 17:50 in Titanium3

Not all geospatial data are best represented using a projected coordinate system. Unfortunately, the Python geospatial ecosystem is almost fully based on planar geometries using Shapely, and is still lacking a general purpose library for efficient manipulation of geometric objects on the sphere. We introduce Spherely: a new Python library that fills this gap, aiming to provide a similar API as Shapely, but then gor geometries on the sphere.

Spherely provides Python/Numpy vectorized bindings to S2Geometry, a mature and performant C++ library for spherical geometry that is widely used for indexing and processing geographic data, notably in popular database systems. This is done via S2Geography, a C++ library that has emerged from the R-spatial ecosystem and that provides a GEOS-like compatibility layer on top of S2Geometry. Unlike S2Geometry’s SWIG wrappers or S2Sphere (pure-Python implementation), Spherely exposes its functionality via “universal” functions operating on n-dimensional Numpy arrays, therefore greatly reducing the overhead of the Python interpreter.

Complementary to Shapely 2.0, Spherely may be used as a backend geometry engine for Python geospatial libraries like GeoPandas, hence extending their functionality to more robust and accurate manipulation of geographic data (i.e., using longitude and latitude coordinates).

This presentation introduces spherely and its capabilities to work with vector geometries on the sphere, and its integration into GeoPandas.

Code repository: https://github.com/benbovy/spherely

Joris Van den Bossche

I am a core contributor to Pandas and Apache Arrow, and one of the maintainers of GeoPandas and Shapely. I did a PhD at Ghent University and VITO in air quality research, worked at the Paris-Saclay Center for Data Science and at Voltron Data contributing to Apache Arrow. I am a freelance open source software developer and teacher.