text: create or replace function ST_LineAngleAtPoint(
      point geometry,
      line  geometry,
      delta float default 1
  )
      returns float
  as $$
  declare
      posititon float;
      length    float;
  begin
      posititon = ST_LineLocatePoint(line, point);
      length = ST_Length(line);
      return ST_Azimuth(
          ST_LineInterpolatePoint(line, greatest(posititon - delta / 2 / length, 0)),
          ST_LineInterpolatePoint(line, least(posititon + delta / 2 / length, 1))
      );
  end
  $$ language 'plpgsql' immutable strict parallel safe;
  
  create or replace function ST_LineAngleAtPointD(
      point geometry,
      line  geometry,
      delta float default 1
  )
      returns float
  as $$
  select degrees(ST_LineAngleAtPoint(point, line, delta));
  $$ language 'sql' immutable strict parallel safe;
  