[postgis-users] st_equals strangeness

Paul Ramsey pramsey at cleverelephant.ca
Fri Jan 8 09:41:58 PST 2010


More to the point, it's a float32 box, not a double64 box. Your two
points are in fact different, waaaaaay down deep into the precision of
their 64-bit double coordinates. So deep in fact that the human
readable decimal representations don't show it (look at the hexewkb
output, and you'll see the differences, you should be able to do that,
points are small enough to eyeball in hex).

So when the 32-bit box is extracted from the 64-bit doubles, the
points are identical at that level of precision and = returns true,
while st_equals working against the doubles does not.

P

On Fri, Jan 8, 2010 at 8:12 AM, Sufficool, Stanley
<ssufficool at sbcounty.gov> wrote:
> n1.geom = n2.geom is not binary equal, it is bounding box equal which may include rounding errors?
>
> st_asbinary(n1.geom) = st_asbinary(n2.geom) is binary equal
>
>
>
>> -----Original Message-----
>> From: postgis-users-bounces at postgis.refractions.net
>> [mailto:postgis-users-bounces at postgis.refractions.net] On
>> Behalf Of William Temperley
>> Sent: Friday, January 08, 2010 7:28 AM
>> To: postgis-users at postgis.refractions.net
>> Subject: [postgis-users] st_equals strangeness
>>
>>
>> Dear all,
>>
>> Given two points with exactly the same coordinates that are
>> binary equal (geom = geom), I don't understand how st_equals
>> can return false.
>>
>> The following statement:
>>
>> select
>> st_astext(n1.geom),
>> st_astext(n2.geom)
>> from nodes n1, nodes n2
>> where (n1.node_id = n2.node_id)
>> and (not st_equals(n1.geom, n2.geom)) and n1.geom = n2.geom;
>>
>>
>> yields:
>>                 st_astext                 |                st_astext
>> ------------------------------------------+-------------------
>> ----------
>> ------------------------------------------+-------------
>>  POINT(28.291805 37.0481949999918)        | POINT(28.291805
>> 37.0481949999918)
>>  POINT(28.291805 37.0481949999918)        | POINT(28.291805
>> 37.0481949999918)
>>  POINT(28.2538598984633 37.006806)        |
>> POINT(28.2538598984633 37.006806)
>>  POINT(28.0726373735563 37.022361)        |
>> POINT(28.0726373735563 37.022361)
>>
>> Could anyone shed any light on this please?
>>
>> POSTGIS="1.4.1" GEOS="3.1.1-CAPI-1.6.0"  btw.
>>
>>
>> Thanks
>>
>> Will
>> _______________________________________________
>> postgis-users mailing list postgis-users at postgis.refractions.net
>> http://postgis.refractions.net/mailman/listinfo/postgis-users
>>
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users
>



More information about the postgis-users mailing list