功能如下:
create or replace function point_to_M(x float,y float, i integer)
returns float AS
$$
DECLARE
geo geometry;
geo1 geometry;
begin
select testo.geom into geo from testo where lineid=i;
geo1=st_astext(st_line_interpolate_point(st_geometryN(geo,1),'point(x y)')');
return st_X(geo1);
end;
$$
language plpgsql;
当我输入SQL时:
select point_to_M(80,0,0);
错误是:
ERROR: invalid input syntax for type double precision: "point(x y)"
LINE 1: ...ext(st_line_interpolate_point(st_geometryN(geo,1),'point(x y...
所以我认为原因可能是参数没有转移到函数中,但我不确定,所以有人有这个问题吗?你能告诉我解决方案吗?非常感谢。
只需将lat转换为long
create or replace function point_to_M(x float,y float, i integer)
returns float AS
$$
DECLARE
geo geometry;
geo1 geometry;
begin
select testo.geom into geo from testo where lineid=i;
geo1=st_astext(st_line_interpolate_point(st_geometryN(geo,1),st_makepoint(x y)));
return st_X(geo1);
end;
$$
language plpgsql;