(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>