[geos-devel] [GEOS] #841: Regression in prepared polygons contains
GEOS
geos-trac at osgeo.org
Wed Sep 6 11:54:33 PDT 2017
#841: Regression in prepared polygons contains
-------------------------------+---------------------------
Reporter: sgillies | Owner: geos-devel@…
Type: defect | Status: new
Priority: major | Milestone: 3.6.3
Component: Default | Version: 3.6.2
Severity: Unassigned | Resolution:
Keywords: prepared contains |
-------------------------------+---------------------------
Comment (by mdavis):
I can't comment on why there is a regression in GEOS, but I will note
something "interesting" about this case. Mathematically, the value of
contains for this case should be FALSE. This is because of the
consequence of the OGC contains semantics that "Polygons do not contain
their boundary". That said, in JTS (all versions) the value of contains
is TRUE (for both PreparedGeometry and Geometry)! This is because of
numerical precision issues. While mathematically the point (0.95, 0.05)
lies exactly on the line (1,0)-(0,1), slight discrepancies in the
floating-point representation result in a non-zero determinant being
computed in the CGAlgorithms.orientationIndex test, which in turn results
in the point being computed as NOT on the line segment.
Unfortunately for JTS, even the new extended-precision arithmetic approach
still computes a non-zero determinant, due to the mathematical 0.05 being
represented as 0.050000000000000002775557561562891 (and similarly for
0.95). Not sure at the moment how this can be resolved, or even whether
it should be.
--
Ticket URL: <https://trac.osgeo.org/geos/ticket/841#comment:1>
GEOS <http://trac.osgeo.org/geos>
GEOS (Geometry Engine - Open Source) is a C++ port of the Java Topology Suite (JTS).
More information about the geos-devel
mailing list