[prev in list] [next in list] [prev in thread] [next in thread] 

List:       postgis-users
Subject:    Re: [postgis-users] How can I detect that geom != st_reverse(geom) for linestrings?
From:       "Paragon Corporation" <lr () pcorp ! us>
Date:       2015-09-02 21:44:28
Message-ID: 003601d0e5c8$8bf5b520$a3e11f60$ () pcorp ! us
[Download RAW message or body]

Steve,

Forgot to mention -- there was  subtle bug in ST_OrderingEquals that prevented it \
from using a spatial index, which Vicky pointed out.  I fixed it for not yet released \
2.1.9

https://trac.osgeo.org/postgis/ticket/3236

So sadly to be safe, you have to throw in an additional && if you need it to utilize \
spatial index.



-----Original Message-----
From: Paragon Corporation [mailto:lr@pcorp.us] 
Sent: Wednesday, September 02, 2015 5:40 PM
To: 'PostGIS Users Discussion' <postgis-users@lists.osgeo.org>
Subject: RE: [postgis-users] How can I detect that geom != st_reverse(geom) for \
linestrings?

Have you tried 

ST_OrderingEquals  ?

-----Original Message-----
From: postgis-users-bounces@lists.osgeo.org \
                [mailto:postgis-users-bounces@lists.osgeo.org] On Behalf Of Stephen \
                Woodbridge
Sent: Wednesday, September 02, 2015 5:05 PM
To: postgis-users@lists.osgeo.org
Subject: Re: [postgis-users] How can I detect that geom != st_reverse(geom) for \
linestrings?

Hi Bob,

Yes, for now I'm just taking a pgrouting path and reversing some of the edges so the \
coordinates flow correctly from end to end of the path. But it just dawned on me that \
I can change the test to geom::text = st_reverse(geom)::text and this will avoid the \
precision issue I was worded about.

It just seems like we should have a function that allows us to check for
sameness:

create or replace st_isSameGeometry(a geometry, b geometry) returns boolean language \
sql as $_$ select a::text=b::text; $_$;

-Steve

On 9/2/2015 4:37 PM, Basques, Bob (CI-StPaul) wrote:
> Hi Steve,
> 
> I think you almost need to check every point from at least one 
> linestring against the other linestring.
> 
> You could check just one end, but they could still be the same but the 
> other end different.  Also you could have line strings with the same 
> end points, but different intermediate points.
> 
> Your st_astext approach seems to be the most full proof, if it s just 
> the direction that you are looking for, then you may need to do a 
> double (or triple condition) pass if the line strings are congruent.
> You would need to check the ends against each other after finding out 
> that they match up in physical space in order to get direction.
> 
> bobb
> 
> 
> 
> 
> > On Sep 2, 2015, at 3:23 PM, Stephen Woodbridge 
> > <woodbri@swoodbridge.com> wrote:
> > 
> > Hi all,
> > 
> > I just noticed that it is not obvious how to determine that geom and
> > st_reverse(geom) are different!
> > 
> > It seems that by definition st_equals(geom, st_reverse(geom)) is true 
> > as is geom = st_reverse(geom). So this seems to be by definition, but 
> > it brings up the question how to quickly and efficiently determine 
> > that they are also different, even if they are "equal".
> > 
> > I'm doing st_astext(geom) != st_astext(st_reverse(geom)) but I worry 
> > about precision issues doing this. I suppose I could also check if 
> > the st_startpoint() of the two are the same, but that seems 
> > problematic also.
> > 
> > Thoughts, -Steve _______________________________________________
> > postgis-users mailing list postgis-users@lists.osgeo.org 
> > http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
> 
> _______________________________________________ postgis-users mailing 
> list postgis-users@lists.osgeo.org 
> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
> 

_______________________________________________
postgis-users mailing list
postgis-users@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users


_______________________________________________
postgis-users mailing list
postgis-users@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic