Modify

Ticket #9162 (closed Bugs: fixed)

Opened 4 years ago

Last modified 10 months ago

intersects returns incorrect result in spherical equatorial

Reported by: hujie.eagle@… Owned by: barendgehrels
Milestone: Boost 1.61.0 Component: geometry
Version: Boost 1.54.0 Severity: Problem
Keywords: within, intersects, spherical Cc:

Description

Hi,

The intersects does not return the correct result for point in polygon with spherical equatorial. These are two cases:

  1. a polygon with pole (north/south) in it

assume polygon PL: POLYGON((0 80,-90 80, -180 80, 90 80, 0 80)) a point P: POINT(0 90)

boost::geometry::intersects(P, PL)

should return TRUE, but return false in boost 1.54.

  1. point in the opposite side of the polygon

assume polygon PL: POLYGON((30 0,30 30,90 30, 90 0, 30 0)) a point P: POINT(-120 21)

boost::geometry::intersects(P, PL)

should return FALSE, but return true in boost 1.54.

The issue may be caused by the spherical_side_formula can not handle this two cases.

Attachment is the test case for these two issues.

Attachments

intersectstest.cpp Download (899 bytes) - added by anonymous 4 years ago.
Sample test

Change History

Changed 4 years ago by anonymous

Sample test

comment:1 Changed 10 months ago by awulkiew

  • Keywords within, intersects, spherical added
  • Status changed from new to closed
  • Resolution set to fixed
  • Milestone changed from To Be Determined to Boost 1.61.0

Thanks! The bug was located in winding strategy which was "scanning" segments using the second coordinate (latitude). In cartesian CS this is ok but in spherical and geographic it isn't. Fixed in Boost 1.61.

Last edited 10 months ago by awulkiew (previous) (diff)
View

Add a comment

Modify Ticket

Change Properties
<Author field>
Action
as closed
The resolution will be deleted. Next status will be 'reopened'
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.