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 version of Boost is under active development. You are currently in the branch. 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> bool intersection(Geometry1 const & geometry1, Geometry2 const & geometry2, GeometryOut & geometry_out)
|
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) |
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![]()