[postgis-devel] ST_OrderingEquals what does it do

Kevin Neufeld kneufeld at refractions.net
Tue Jul 15 16:32:45 PDT 2008


It looks like the SQL definition of ST_OrderingEquals(geom1, geom2) is:
'SELECT $1 && $2 AND $1 ~= $2'

By rights, using this SQL, this function should be renamed to 
ST_EqualsExact ... but then, that's not a SQL/MM function.

According to the SQL/MM reference I have, this function should simply 
return true if the two geometries are ST_Equal.  It's just used to 
define ordering for the geometry datatype.  I think that's why this 
method attempted to implement ArcSDE's definition instead:
http://edndoc.esri.com/arcsde/9.1/sql_api/sqlapi3.htm#ST_OrderingEquals

In any case, you're right.  Either the description is should be updated 
to say that this function simply adds an index call to the equals exact 
operator (~=), or the implementation should change to reflect your 
assumption.  Based on the ESRI's definition, I think this method should 
be reimplemented.

-- Kevin

Obe, Regina wrote:
> I was preparing examples for the docs and was surprised to find this 
> returns false
> SELECT ST_OrderingEquals(ST_GeomFromText('LINESTRING(0 0, 10 10)'),
>   ST_GeomFromText('LINESTRING(0 0, 5 5, 10 10)'));
>  
> Evidentally I don't understand how Ordering Equals works.  I assumed 
> since the above returns
> true for ST_Equals and the line is in the same direction, the above 
> would return true as well.
>  
> Thanks,
> Regina
> 



More information about the postgis-devel mailing list