Also, the point probably doesn't lie *exactly* on the geometry due to roundoff error.

It's correct that Overlaps returns FALSE, since an interior point does not overlap its containing geometry. Intersects should have returned TRUE however - IF the point was precisely on a line segment. This is unlikely to happen in the general case.

Nicolas Ribot wrote:
Dear users,


with "SELECT astext(pointOnSurface(the_geom)) from ways where gid=14730"
I get the coordinates of a point that lies on the surface of a MULTILINESTRING.

I get: POINT(897169.996155569 6850066.73917209)

Then I try
SELECT overlaps (the_geom,Geomfromtext('POINT(897169.996155569 
6850066.73917209)',900913)) from ways where gid=14730;

...and I get FALSE ???

(I also tried with "touches" and "intersects" --> the
result there also FALSE).


Has anybody an idea how this can be?


Hi Kai,
Yes, this can be because of the OGC specifications, that define very
precisely these predicates, in terms of relationship between interior,
boundary and exterior of each object.
A point cannot overlap a polygon, for instance (as far as I remember)
Looking at the predicates definitions in the specifications may help
to understand what they mean, for each kind of objects (points, lines,
polygons):

http://www.opengeospatial.org/standards/sfs

(don't trust your 'human' understanding of what 'touches' or 'overlaps' mean)

You may also look at the Jump documentation, as it contains nice
graphics showing some common misunderstandings with these predicates
(http://www.vividsolutions.com/JUMP/)

HTH
Nicolas
_______________________________________________
postgis-users mailing list
[email protected]
http://postgis.refractions.net/mailman/listinfo/postgis-users


--
Martin Davis
Senior Technical Architect
Refractions Research, Inc.
(250) 383-3022

_______________________________________________
postgis-users mailing list
[email protected]
http://postgis.refractions.net/mailman/listinfo/postgis-users

Reply via email to