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

Paragon Corporation lr at pcorp.us
Sun Sep 28 12:04:04 PDT 2008


Charlie,

On second thought not sure how DB II deals with relational Union of
geometries.  Does anybody have that by chance to test?

I suppose we could say this is the same deal as difference in casing.

SELECT 'Regina'
UNION
SELECT 'REGINA'
UNION
SELECT 'Regina'

Even if both geometries are the same which SRID would you choose?  So we
should not be doing a geometry compare, but a binary compare.

SELECT ST_AsEWKB('SRID=4269;POINT(1 3)') = ST_AsEWKB('SRID=4326;POINT(1 3)')


Thanks,
Regina

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

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


_______________________________________________
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