<div dir="ltr"><div dir="ltr">My two cents:<div>Since you are computing the distance, why not return it?  Also make the index zero based like most of the other st_ functions.<div><br></div><div>CREATE OR REPLACE FUNCTION ST_LineLocateN( line geometry, pt geometry )<br>RETURNS table(index integer, dist double precision)<br>AS $$<br>  Â  SELECT i - 1, dist FROM (<br>  Â  SELECT i, ST_Distance(<br>  Â  Â  Â  ST_MakeLine( ST_PointN( line, s.i ), ST_PointN( line, s.i+1 ) ),<br>  Â  Â  Â  pt) AS dist<br>  Â  Â  FROM generate_series(1, ST_NumPoints( line )-1) AS s(i)<br>  Â  Â  ORDER BY dist<br>  Â  ) AS t LIMIT 1;<br>$$<br>LANGUAGE sql STABLE STRICT;<br></div></div></div></div>