[postgis-users] Precision problem

Maxime van Noppen maxime at altribe.org
Sat Jul 18 09:50:08 PDT 2009


Hello,

I face what I think is a precision problem. I have a point and a polygon
and I test whether the point is within the polygon or not. When both
geometries are in WKB, ST_Within returns false whereas when they are in
WKT it returns true.

WKB :
--------------------------------------------------------------------------
# SELECT ST_Within('010100000013898E0BA7E833C1FF843EA52C212C41', '
0103000000010000000400000000000000A09134C10000000088212A4100000000A0E832C10000000000812A41000000005E0634C1CDCCCCCC79512C4100000000A09134C10000000088212A41');
 st_within
-----------
 f
(1 row)
--------------------------------------------------------------------------


WKT :
--------------------------------------------------------------------------
# SELECT ST_Within('POINT(-1304743.04514367 921750.322742611)',
'POLYGON((-1348000 856260,-1239200 868480,-1312350 927932.9,-1348000
856260))');
 st_within
-----------
 t
(1 row)
--------------------------------------------------------------------------


The point is on the border of the polygon and I found that using DWithin
with 0 as tolerance makes both test work :

WKB :
--------------------------------------------------------------------------
# SELECT ST_DWithin('010100000013898E0BA7E833C1FF843EA52C212C41',
'0103000000010000000400000000000000A09134C10000000088212A4100000000A0E832C10000000000812A41000000005E0634C1CDCCCCCC79512C4100000000A09134C10000000088212A41',
0);
 st_dwithin
------------
 t
(1 row)
--------------------------------------------------------------------------

For now I'll use this solution but I find it quite hacky. Is this a
normal precision-related behaviour ?


Thanks,

-- 
yabo



More information about the postgis-users mailing list