(sorry, sent to fast...)<div><br></div><div><div><font face="courier new, monospace">with pg_pts_oriented as (</font></div><div><font face="courier new, monospace"> -- extract exterior ring points</font></div><div><font face="courier new, monospace"> select st_dumpPoints(</font></div>
<div><font face="courier new, monospace"> -- extract polygon's exterior as a linestring</font></div><div><font face="courier new, monospace"> st_exteriorRing(</font></div><div><font face="courier new, monospace"> -- force polygon orientation</font></div>
<div><span style="font-family:'courier new',monospace"> st_forceRHR(</span></div><div> <span style="font-family:'courier new',monospace">'POLYGON (( 355 215, 390 220, 403 258, 364 234, 375 277, 326 274, 286 243, 355 215 ))'::geometry</span></div>
<div><font face="courier new, monospace"><span class="Apple-tab-span" style="white-space:pre"> </span>)</font></div><div><font face="courier new, monospace"> )</font></div><div><font face="courier new, monospace"> ) as d</font></div>
<div><font face="courier new, monospace">) </font></div><div><font face="courier new, monospace">select (p1.d).path[1] as edge_number, </font></div><div><font face="courier new, monospace">st_makeLine((p1.d).geom, (p2.d).geom) as edge </font></div>
<div><font face="courier new, monospace">from pg_pts_oriented p1,</font></div><div><font face="courier new, monospace"> pg_pts_oriented p2</font></div><div><font face="courier new, monospace">where (p2.d).path[1] = (p1.d).path[1] + 1;</font></div>
</div><div><font face="courier new, monospace"><br></font></div><div><font face="arial, helvetica, sans-serif">You can then play with edge_number to shift it according to choosen vertex index.</font></div><div><font face="arial, helvetica, sans-serif"><br>
</font></div><div><font face="arial, helvetica, sans-serif">Nicolas</font></div>