Boost
C++ Libraries
...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
This is an older version of Boost and was released in 2024. The current version is 1.89.0.
Calculate the intersection of two geometries.
The free function intersection calculates the spatial set theoretic intersection of two geometries.
template<typename Geometry1, typename Geometry2, typename GeometryOut, typename Strategy> bool intersection(Geometry1 const & geometry1, Geometry2 const & geometry2, GeometryOut & geometry_out, Strategy const & strategy)
|
Type |
Concept |
Name |
Description |
|---|---|---|---|
|
Geometry1 const & |
Any type fulfilling a Geometry Concept |
geometry1 |
A model of the specified concept |
|
Geometry2 const & |
Any type fulfilling a Geometry Concept |
geometry2 |
A model of the specified concept |
|
GeometryOut & |
Collection of geometries (e.g. std::vector, std::deque, boost::geometry::multi*) of which the value_type fulfills a Point, LineString or Polygon concept, or it is the output geometry (e.g. for a box) |
geometry_out |
The output geometry, either a multi_point, multi_polygon, multi_linestring, or a box (for intersection of two boxes) |
|
Strategy const & |
Any type fulfilling a Intersection Strategy Concept |
strategy |
The strategy which will be used for intersection calculations |
Either
#include <boost/geometry.hpp>
Or
#include <boost/geometry/algorithms/intersection.hpp>
The function intersection implements function Intersection from the OGC Simple Feature Specification.
|
Case |
Behavior |
|---|---|
|
GeometryOut is a Point |
Calculates intersection points of input geometries |
|
GeometryOut is a Linestring |
Calculates intersection linestrings of input (multi)linestrings |
|
GeometryOut is a Polygon |
Calculates intersection polygons of input (multi)polygons and/or boxes |
![]() |
Note |
|---|---|
Check the Polygon Concept for the rules that polygon input for this algorithm should fulfill |
Shows the intersection of two polygons
#include <iostream> #include <deque> #include <boost/geometry.hpp> #include <boost/geometry/geometries/point_xy.hpp> #include <boost/geometry/geometries/polygon.hpp> #include <boost/foreach.hpp> int main() { typedef boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double> > polygon; polygon green, blue; boost::geometry::read_wkt( "POLYGON((2 1.3,2.4 1.7,2.8 1.8,3.4 1.2,3.7 1.6,3.4 2,4.1 3,5.3 2.6,5.4 1.2,4.9 0.8,2.9 0.7,2 1.3)" "(4.0 2.0, 4.2 1.4, 4.8 1.9, 4.4 2.2, 4.0 2.0))", green); boost::geometry::read_wkt( "POLYGON((4.0 -0.5 , 3.5 1.0 , 2.0 1.5 , 3.5 2.0 , 4.0 3.5 , 4.5 2.0 , 6.0 1.5 , 4.5 1.0 , 4.0 -0.5))", blue); std::deque<polygon> output; boost::geometry::intersection(green, blue, output); int i = 0; std::cout << "green && blue:" << std::endl; BOOST_FOREACH(polygon const& p, output) { std::cout << i++ << ": " << boost::geometry::area(p) << std::endl; } return 0; }
Output:
green && blue: 0: 2.50205![]()