#include using namespace boost::polygon::operators; int main() { typedef boost::polygon::polygon_traits< boost::polygon::polygon_data >::point_type Point; typedef std::vector PointVector; typedef boost::polygon::polygon_90_data BoostPolygon90; typedef std::vector PolygonVector; typedef BoostPolygon90::iterator_type Polygon_iterator; typedef boost::polygon::polygon_90_set_data BoostPolygonSet90; PointVector pv1,pv2; BoostPolygon90 p1,p2; BoostPolygonSet90 set1,set2; pv1.push_back(Point(1082615,247880)); pv1.push_back(Point(1067615,247880)); pv1.push_back(Point(1067615,232880)); pv1.push_back(Point(1067615,208880)); pv1.push_back(Point(1082615,208880)); pv1.push_back(Point(1082615,232880)); p1.set(pv1.begin(), pv1.end()); set1 += p1; pv2.push_back(Point(1137615,247880)); pv2.push_back(Point(1122615,247880)); pv2.push_back(Point(1122615,232880)); pv2.push_back(Point(1122615,208880)); pv2.push_back(Point(1137615,208880)); pv2.push_back(Point(1137615,232880)); p2.set(pv2.begin(), pv2.end()); set2 += p2; BoostPolygonSet90 set = set1 | set2; PolygonVector setOutContainer; set.get( setOutContainer ); std::cout << "Size " << setOutContainer.size() << std::endl; for( PolygonVector::iterator it = setOutContainer.begin(); it != setOutContainer.end(); ++it ) { std::cout << "-------------\n"; for( Polygon_iterator startPoint = it->begin(); startPoint != it->end(); ++startPoint ) { std::cout << "Point: " << boost::polygon::x(*startPoint) << " " << boost::polygon::y(*startPoint) << "\n"; } } return 0; }