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

Charlie Savage cfis at savagexi.com
Sun Sep 28 22:23:23 PDT 2008


> 
> ST_Equals(different srids) should return an error.  Its not that its unknown
> its that we are too lazy to calculate it.  Its quite known if we had the
> energy.

No - that is not true.  You cannot calculate it in some cases.

> We should go with binary equal rather than geometric equality.  I think that
> would satisfy Charlie too.  I guess I have my parents to blame too :)

I just want to be able to write this code:

IF (GEOM1 = GEOM2) THEN

And not have it blow up...

And related doing a UNION like described in an earlier email.

Last - I'm fine with what Paul proposes. That is that the = operator 
does not blow up, while ST_EQUALS does blow up.  Having 2 versions of a 
function, one that raises an exception and one that does not, is not 
that uncommon...Alternatively, ST_EQUALS could take a 2nd parameter that 
specifies whether to blow up or not, with a default value of blow up....

Charlie

> 
> Thanks,
> Regina
> 
> -----Original Message-----
> From: postgis-users-bounces at postgis.refractions.net
> [mailto:postgis-users-bounces at postgis.refractions.net] On Behalf Of Brent
> Wood
> Sent: Sunday, September 28, 2008 6:40 PM
> To: PostGIS Users Discussion
> Subject: RE: [postgis-users] Re: Comparing Geometries with Different SRIDs
> 
> After a belated case of RTFM...
> 
> It seems UNION does an implict distinct on all rows, unless UNION ALL is
> applied (How many Regina's do you want :-)
> 
> I guess it makes sense to drop duplicates unless otherwise specified.
> 
> 
> stations=# select 1 union select 1;
>  ?column?
> ----------
>         1
> (1 row)
> 
> stations=# select 1 union all select 1;
>  ?column?
> ----------
>         1
>         1
> (2 rows)
> 
> stations=# select 'Regina' union select 'REGINA';  ?column?
> ----------
>  Regina
>  REGINA
> (2 rows)
> 
> stations=# select 'Regina' union select 'REGINA' union all select 'Regina';
> ?column?
> ----------
>  Regina
>  REGINA
>  Regina
> (3 rows)
> 
> 
> Cheers
> 
>    Brent Wood
> 
> 
> 
> 
> --- On Mon, 9/29/08, Paragon Corporation <lr at pcorp.us> wrote:
> 
>> From: Paragon Corporation <lr at pcorp.us>
>> Subject: RE: [postgis-users] Re: Comparing Geometries with Different 
>> SRIDs
>> To: "'PostGIS Users Discussion'" 
>> <postgis-users at postgis.refractions.net>
>> Date: Monday, September 29, 2008, 11:13 AM Brent, Ah never mind.  For 
>> some reason I was under the false assumption that in SQL Server with 
>> dictionary sort order that even though
>>
>> REGINA = Regina
>>
>> That I would get 2 Reginas when I union them.  That is not the case.  
>> I just get one.
>>
>> I'm not sure why I thought that or maybe it was like that a long time 
>> ago.
>>
>> Anyrate - so I guess I am back to square one. 
>>
>> By the way -  I think we should be talking about ST_OrderingEquals not 
>> ST_Equals.
>>
>> I'm not sure which if any of those PostGIS is using to do the check, 
>> but it should be ST_OrderingEquals  since using ST_Equals introduces a 
>> whole lot more philosophical can of worms. Is space empty or is Empty 
>> space.
>>
>> Thanks,
>> Regina
>>
>>
>>  
>>
>> -----Original Message-----
>> From: Brent Wood [mailto:pcreso at yahoo.com]
>> Sent: Sunday, September 28, 2008 3:19 PM
>> To: lr at pcorp.us
>> Subject: RE: [postgis-users] Re: Comparing Geometries with Different 
>> SRIDs
>>
>> Hi Regina,
>>
>> I think that is more an encoding/language issue than case in such an 
>> analogy.
>>
>> To wax metaphysical, does a muslim worship a different god because 
>> they spell it allah? (Similarly Jews with Jehovah & French with 
>> dieu...)
>>
>> So is st_equals() a cross-language thesaurus, or is it restricted to 
>> the specified SRID? :-)
>>
>>
>>
>>
>> Spotcha,
>>
>>    Brent Wood
>>
>>
>> --- On Mon, 9/29/08, Paragon Corporation <lr at pcorp.us> wrote:
>>
>>> From: Paragon Corporation <lr at pcorp.us>
>>> Subject: RE: [postgis-users] Re: Comparing Geometries
>> with Different
>>> SRIDs
>>> To: "'PostGIS Users Discussion'" 
>>> <postgis-users at postgis.refractions.net>
>>> Date: Monday, September 29, 2008, 8:04 AM 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
>>>
>>>
>>> _______________________________________________
>>> 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
> _______________________________________________
> 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

-- 
Charlie Savage
http://cfis.savagexi.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3237 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20080928/10a7ed4e/attachment.bin>


More information about the postgis-users mailing list