[postgis-users] Point on a surface doesn`t touch geometry?

Nicolas Ribot nicolas.ribot at camptocamp.com
Tue Apr 28 07:44:46 PDT 2009


> 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



More information about the postgis-users mailing list