[postgis-users] Re: Comparing Geometries with Different SRIDs

Paragon Corporation lr at pcorp.us
Sun Sep 28 11:48:02 PDT 2008


I feel your pain Charlie, but I'm on Reid's side.   Given that some spatial
databases do support cross compare between geometries of different SRID
(e.g. DB II), not sure about Oracle or SQL Server 2008, I would prefer an
answer that is in compliance or throws an exception when it can't be sure.
Its annoying from a debugging perspective  to deal with things that fail
silently.  Returning false is a fail silently in my book.

If we deal with this as a special case - why wouldn't we deal with
everything else the same with every other relational compare we do?  Its
just wrong, but granted doing the wrong thing would be conveniently useful
in many cases.

Thanks,
Regina

 

-----Original Message-----
From: postgis-users-bounces at postgis.refractions.net
[mailto:postgis-users-bounces at postgis.refractions.net] On Behalf Of Charlie
Savage
Sent: Sunday, September 28, 2008 2:10 PM
To: PostGIS Users Discussion
Subject: Re: [postgis-users] Re: Comparing Geometries with Different SRIDs



Reid Priedhorsky wrote:
> Charlie Savage wrote:
>>> The 2 point could be spatially equal given different SRIDS and 
>>> coordinates if they were projected to a common SRID. So should 
>>> geometry operators silently Call st_transform to make the righthand 
>>> match the lefthand before comparing? This would be quite the 
>>> expensive operation.
>>
>> No. You can't automatically transform between different SRID values 
>> Think of the case of one geometry with an SRID value of 4326 and one  
>> with an SRID value of -1 (no coordinate system).
> 
> Exactly.
> 
>> So different SRID values, then the geometries are not equal.
> 
> No -- as Stanley said, the geometries could be in fact equal, but 
> expressed in different SRS. So if ST_Equals() returned False, it would 
> be wrong.

Maybe.  But returning "Operation permitted" is even worse because it means
you can't do natural things like this (without extra annoying SRID checking
code) in plpgsql:

IF (geom1 == geom2) ... END IF;

Or the example with the union earlier posted


>> It is up to the user to transform geometries to the same SRID before 
>> calling ST_EQUALS.
> 
> Exactly. ;)

So, I still vote that st_equals will not blow up when comparing two
geometries with different SRID values, it just will return false.

Charlie





More information about the postgis-users mailing list