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 the documentation for an old version of Boost. Click here to view this page for the latest version.
PrevUpHomeNext
overlaps

Checks if two geometries overlap.

Synopsis

template<typename Geometry1, typename Geometry2>
bool overlaps(Geometry1 const & geometry1, Geometry2 const & geometry2)

Parameters

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

Returns

Returns true if two geometries overlap

Header

Either

#include <boost/geometry.hpp>

Or

#include <boost/geometry/algorithms/overlaps.hpp>

Conformance

The function overlaps implements function Overlaps from the OGC Simple Feature Specification.

Supported geometries

Point

Segment

Box

Linestring

Ring

Polygon

MultiPoint

MultiLinestring

MultiPolygon

Variant

Point

ok

nyi

nyi

nyi

nyi

nyi

ok

nyi

nyi

nyi

Segment

nyi

nyi

nyi

nyi

nyi

nyi

nyi

nyi

nyi

nyi

Box

nyi

nyi

ok

nyi

nyi

nyi

nyi

nyi

nyi

nyi

Linestring

nyi

nyi

nyi

ok

nyi

nyi

nyi

ok

nyi

nyi

Ring

nyi

nyi

nyi

nyi

ok

ok

nyi

nyi

ok

ok

Polygon

nyi

nyi

nyi

nyi

ok

ok

nyi

nyi

ok

ok

MultiPoint

ok

nyi

nyi

nyi

nyi

nyi

ok

nyi

nyi

nyi

MultiLinestring

nyi

nyi

nyi

ok

nyi

nyi

nyi

ok

nyi

nyi

MultiPolygon

nyi

nyi

nyi

nyi

ok

ok

nyi

nyi

ok

ok

Variant

nyi

nyi

nyi

nyi

nyi

nyi

nyi

nyi

nyi

nyi

Examples

Checks if two geometries overlap

#include <iostream>

#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/polygon.hpp>

namespace bg = boost::geometry; 1

int main()
{
    // Checks if the two geometries overlaps or not. 
    bg::model::polygon<bg::model::d2::point_xy<double> > poly1;
    bg::read_wkt("POLYGON((0 0,0 4,4 4,4 0,0 0))", poly1);
    bg::model::polygon<bg::model::d2::point_xy<double> > poly2;
    bg::read_wkt("POLYGON((2 2,2 6,6 7,6 1,2 2))", poly2);
    bool check_overlap = bg::overlaps(poly1, poly2);
    if (check_overlap) {
         std::cout << "Overlaps: Yes" << std::endl;
    } else {
        std::cout << "Overlaps: No" << std::endl;
    }

    bg::model::polygon<bg::model::d2::point_xy<double> > poly3;
    bg::read_wkt("POLYGON((-1 -1,-3 -4,-7 -7,-4 -3,-1 -1))", poly3);
    check_overlap = bg::overlaps(poly1, poly3);
    if (check_overlap) {
         std::cout << "Overlaps: Yes" << std::endl;
    } else {
        std::cout << "Overlaps: No" << std::endl;
    }

    return 0;
}

1

Convenient namespace alias

Output:

Overlaps: Yes

overlaps

Overlaps: No

PrevUpHomeNext