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

Paul Ramsey pramsey at cleverelephant.ca
Sun Sep 28 11:54:27 PDT 2008


There's sort of a grey area between RDBMS and spatial semantics....

if A = B does st_equals(A,B) ?

same thing with null and GEOMETRY EMPTY, there is similarity but the
ideas are not identical

I would expect A = B to return false if SRIDs are not the same, but
ST_Equals(A,B) to error out if SRIDs are not the same. I'm that
screwed up. Blame my parents.

P.

On Sun, Sep 28, 2008 at 11:48 AM, Paragon Corporation <lr at pcorp.us> wrote:
> 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