Boost.Geometry takes on the globe
Boost.Geometry is a concept-based, generic Boost library (accepted in Boost in 2009) that offers primitives and algorithms for solving geometric problems. Its design is based on meta-functions and tag dispatching, and offers a dimension-agnostic and coordinate-system-agnostic geometry kernel. In the past couple of years a lot of functionality has been added to Boost.Geometry (for geometries on the 2D Cartesian plane): this includes support for distance computations for all geometry combinations, support for segments in the spatial index, added support for relational and set operations on geometries, validity and simplicity testing, buffer computations (i.e., computation of offsets of geometries) and a lot of improvements, notably on numerical robustness issues. One of the current active branches of new development focuses on extending the existing Boost.Geometry functionality for spherical and geographic coordinate systems. In this talk we will give an overview of the functionality recently added for computations on the 2D Cartesian plane and describe how the library works behind the scenes. We will then present the challenges we have been facing for supporting algorithms on a spheroid, and how we have chosen to address them. In particular, we will pinpoint the differences between the 2D Cartesian plane and the surface of the spheroid, and discuss how the genericity of Boost.Geometry's design and the agnosticism of its algorithms with respect to the input's coordinate system has proven to be a truly valuable asset in supporting computations for spherical and geographic coordinate systems.
Speaker: Menelaos Karavelas