[postgis-users] segmentize lines with order

Pedro Costa pedrocostaarma at sapo.pt
Tue Feb 25 03:59:46 PST 2014


I was trying CASE before but i doesn't know how to access 'next line 
start point'.
Example:


SELECT
     CASE
      WHEN (ST_Intersects(ST_EndPoint(geom),(SELECT ST_StartPoint(geom) 
FROM lines WHERE seq = seq+1)))  <--- I need to get next line geom
             THEN 1
     ELSE 0
     END AS reverse
FROM lines

Do you understand my problem?

Em 25-02-2014 11:42, Rémi Cura escreveu:
> You don't need a stored procedure,
> you can simply use pure sql with the CASE WHEN ... THEN .. WHEN .. 
> THEN .. .. END.
>
> doc : http://www.postgresql.org/docs/9.3/static/functions-conditional.html
>
> If you still need plpgsql : 
> http://www.postgresql.org/docs/9.3/static/plpgsql-control-structures.html#PLPGSQL-STATEMENTS-RETURNING
>
> Cheers,
> Rémi-C
>
>
> 2014-02-25 12:17 GMT+01:00 Pedro Costa <pedrocostaarma at sapo.pt 
> <mailto:pedrocostaarma at sapo.pt>>:
>
>     thanks Remi.
>     I'm tying to make a stored procedure to use st_reverse when draw
>     order is wrong.
>     Now, my difficult is in writing the loop.
>     I can't find something like that to guide me...
>
>
>
>     Em 25-02-2014 11:11, Rémi Cura escreveu:
>>     You can use
>>     http://postgis.refractions.net/docs/ST_Reverse.html
>>
>>     Or simply ORDER BY DESC for your path
>>
>>     Cheers,
>>
>>     Rémi-C
>>
>>
>>     2014-02-25 11:49 GMT+01:00 Pedro Costa <pedrocostaarma at sapo.pt
>>     <mailto:pedrocostaarma at sapo.pt>>:
>>
>>         Hi Rémi,
>>
>>         Thanks for your awnser.
>>         My problem is that the draw order isn't equal in all lines so
>>         the path of st_dumppoints sometimes return ascend order and
>>         another times descend. I need to make a loop to make a reverse...
>>
>>         Em 25-02-2014 08:33, Rémi Cura escreveu:
>>>         Hey,
>>>         I don't understand your problem.
>>>
>>>         If you have multilinestring, you need to break it to
>>>         linestring with an id per multilinestring.
>>>         If you have linestring, you just need to keep an id for each
>>>         line and an id per point (given in path).
>>>
>>>         Then you have several option to generate a ordered set of
>>>         point (use the ORDER BY and the row_number() postgres function).
>>>
>>>         If you give some detailled example maybe we could help better.
>>>
>>>         Cheers,
>>>         Rémi-C
>>>
>>>
>>>         2014-02-24 19:27 GMT+01:00 Stephen Woodbridge
>>>         <woodbri at swoodbridge.com <mailto:woodbri at swoodbridge.com>>:
>>>
>>>             On 2/24/2014 11:33 AM, Pedro Costa wrote:
>>>
>>>                 Hi guys,
>>>
>>>                 I'm trying to use lines from postgis to google maps
>>>                 android.
>>>                 To do that, I'm converting the lines to points with
>>>                 St_DumpPoints and,
>>>                 in gmaps, I make the lines. My problem is that I
>>>                 cannot create a correct
>>>                 sequence to order the points in android and so i get
>>>                 wrong lines (see ss
>>>                 atached). I'm already try to use st_dumpPoints path
>>>                 column and generate
>>>                 a serial but doesn't result.
>>>
>>>                 Anybody knows a solution to resolve that?
>>>
>>>
>>>             You probably need to write function that re-orients you
>>>             lines before you dump them to points. The algorithm is
>>>             like this:
>>>
>>>             1. for the first edge, if the start point match the the
>>>             start or end of the 2nd edge, if it does then
>>>             st_reverse() the first edge.
>>>
>>>             2. for the rest of the edges, if the edge point of the
>>>             current edge matches the end point of the last edge,
>>>             then st_reverse() the current edge.
>>>
>>>             You might be able to st_union all the edges into one
>>>             large edge and that should create a new reorder edge.
>>>
>>>             No you can dump them and the order will be correct.
>>>
>>>             -Steve
>>>             _______________________________________________
>>>             postgis-users mailing list
>>>             postgis-users at lists.osgeo.org
>>>             <mailto:postgis-users at lists.osgeo.org>
>>>             http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
>>>
>>>
>>>
>>>
>>>         _______________________________________________
>>>         postgis-users mailing list
>>>         postgis-users at lists.osgeo.org  <mailto:postgis-users at lists.osgeo.org>
>>>         http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
>>
>>
>>         _______________________________________________
>>         postgis-users mailing list
>>         postgis-users at lists.osgeo.org
>>         <mailto:postgis-users at lists.osgeo.org>
>>         http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
>>
>>
>>
>>
>>     _______________________________________________
>>     postgis-users mailing list
>>     postgis-users at lists.osgeo.org  <mailto:postgis-users at lists.osgeo.org>
>>     http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
>
>
>     _______________________________________________
>     postgis-users mailing list
>     postgis-users at lists.osgeo.org <mailto:postgis-users at lists.osgeo.org>
>     http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
>
>
>
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at lists.osgeo.org
> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20140225/a0fd988d/attachment.html>


More information about the postgis-users mailing list