Opened 3 years ago

Closed 3 years ago

#11984 closed Bugs (fixed)

union_() generates self-intersecting polygon

Reported by: max@… Owned by: Barend Gehrels
Milestone: Boost 1.61.0 Component: geometry
Version: Boost 1.60.0 Severity: Problem
Keywords: Cc:


I have a program which generates unions of a multipolygon and a ring. Sometimes, I have an identical point in the two shapes. The union_ result is a self-intersecting polygon.

Demo source attached. Output with Boost 1.58 and 1.60:

input multipolygon is valid input ring is valid result multipolygon is invalid: Geometry has invalid self-intersections. A self-intersection point was found at (-95, 60); method: t; operations: i/i; segment IDs {source, multi, ring, segment}: {0, 0, -1, 3}/{0, 0, -1, 6}

Attachments (1)

union_bug.cxx (2.6 KB) - added by max@… 3 years ago.
Demo source for the union_ bug

Download all attachments as: .zip

Change History (3)

Changed 3 years ago by max@…

Attachment: union_bug.cxx added

Demo source for the union_ bug

comment:1 Changed 3 years ago by anonymous

I think the problem is not union_() - the correct result is a polygon that "touches" itself (but does not actually intersect), and that's what union_() does. The problem may just be a false negative in is_valid().

comment:2 Changed 3 years ago by Barend Gehrels

Milestone: To Be DeterminedBoost 1.61.0
Resolution: fixed
Status: newclosed

Thanks for the report. It is fixed in the branch feature/cluster_touch

  • still hope to get it in 1.61 because it fixes more issues
Note: See TracTickets for help on using tickets.