Opened 9 years ago

Closed 3 years ago

#732 closed defect (fixed)

BufferOp(0.0) makes the attached polygon "miss"!

Reported by: jiangdaidai Owned by: geos-devel@…
Priority: major Milestone: 3.9.1
Component: Default Version: 3.4.2
Severity: Significant Keywords: BufferOp
Cc:

Description

After doing BufferOp(0.0), the attached polygon turns out to be almost NON! I have observed the points and think there is non problems. I don't know why.

Attachments (1)

data.txt (2.6 KB ) - added by jiangdaidai 9 years ago.
the points of the polygon

Download all attachments as: .zip

Change History (11)

by jiangdaidai, 9 years ago

Attachment: data.txt added

the points of the polygon

comment:1 by jiangdaidai, 9 years ago

After doing BufferOp?(0.0), the attached polygon turns out to be almost NON! I have observed the points and think there is no problems. I don't know why.

comment:2 by jiangdaidai, 9 years ago

I find the reason: my polygon self-intersectes and is_ccw(my polygon) makes the key unexpected performance. During the learning of GEOS, I think there may be one bug :

SegmentIntersector.cpp Line 114, according to the algorithm logical,

int maxSegIndex=e0->getNumPoints()-1; -->

int maxSegIndex=e0->getNumPoints()-2;

Last edited 9 years ago by jiangdaidai (previous) (diff)

comment:3 by strk, 9 years ago

JTS is also subtracting 1 on that line. Martin, could you review ? BTW, where did the JTS code move ? The SourceForge SVN is not reachable anymore ?

comment:4 by strk, 9 years ago

Regina, I'd also confirm this before closing 3.5.0 out

comment:5 by strk, 7 years ago

Milestone: 3.4.33.6.1

Ticket retargeted after milestone deleted

comment:6 by strk, 7 years ago

Milestone: 3.6.13.6.2

Ticket retargeted after milestone closed

comment:7 by strk, 7 years ago

Milestone: 3.6.23.6.3

Ticket retargeted after milestone closed

comment:8 by robe, 6 years ago

Resolution: wontfix
Status: newclosed

comment:9 by mdavis, 3 years ago

Milestone: 3.6.33.9.1
Resolution: wontfix
Severity: CriticalSignificant
Status: closedreopened

This is the classic bow-tie buffer(0) failure. Fixed in JTS by https://github.com/locationtech/jts/pull/655

comment:10 by Paul Ramsey <pramsey@…>, 3 years ago

Resolution: fixed
Status: reopenedclosed

In efe09d6/git:

Port https://github.com/locationtech/jts/pull/655, Fix buffer to use largest enclosed area for invalid rings
Closes #732

Note: See TracTickets for help on using tickets.