我怎么能转移点X和Y的值?

问题描述 投票:0回答:1

功能如下:

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

所以我认为原因可能是参数没有转移到函数中,但我不确定,所以有人有这个问题吗?你能告诉我解决方案吗?非常感谢。

function postgis
1个回答
0
投票

只需将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;
© www.soinside.com 2019 - 2024. All rights reserved.