Opened 9 years ago

Closed 9 years ago

#9756 closed Bugs (invalid)

boost::geometry::union_ no result

Reported by: yurkiko.iota@… Owned by: Barend Gehrels
Milestone: To Be Determined Component: geometry
Version: Boost 1.54.0 Severity: Problem
Keywords: union_ Cc:

Description

I'm trying to merge some polygons using boost::geometry::union_ but the output vector is empty for some entries.

here is an example :

#include <iostream>
#include <vector>

#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/polygon.hpp>
#include <boost/geometry/io/wkt/wkt.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((440820.110024126 4047009.80267429, 440806.545727707 4046942.39533656, 440797.171880196 4046895.8425726, 440804.202135392 4046888.73092639, 440813.573458131 4046935.27114371, 440827.140279322 4047002.69102807))", green);

boost::geometry::read_wkt(
    "POLYGON((440855.857887967 4046932.1248641, 440813.740724389 4046942.21109839, 440806.376538684 4046935.44583646, 440848.493702262 4046925.35960217))", blue);


if(boost::geometry::area(green) < 0) boost::geometry::reverse(green);
if(boost::geometry::area(blue) < 0 ) boost::geometry::reverse(blue);


std::vector<polygon> output;
boost::geometry::union_(green, blue, output);

std::cout << " output size is : " << output.size() << std::endl;

int i = 0;
std::cout << "green || blue:" << std::endl;

BOOST_FOREACH(polygon const& p, output)
{
    std::cout << i++ << ": " << boost::geometry::area(p) << std::endl;
}

system("pause");
return 0;
}

when I drew the two polygons I obtained : (attached image)

but the result of the code above was :

output size is : 0

green | | blue:

Press any key to continue . . .

is this a bug in this function or there is a mistake in my code ?

Attachments (1)

testPolygons.PNG (13.4 KB ) - added by anonymous 9 years ago.

Download all attachments as: .zip

Change History (2)

by anonymous, 9 years ago

Attachment: testPolygons.PNG added

comment:1 by Barend Gehrels, 9 years ago

Resolution: invalid
Status: newclosed

Your polygons are not closed. Please close them in the WKT, or call geometry::correct. If they are closed, the union works correctly. Or use a non-closed polygon as type.

Note: See TracTickets for help on using tickets.