我正在try 编写一个postgres函数,该函数接受一个数组数组(例如[[65.8434183140001,38.905535066],[65.8433595220001,38.905479615],[65.843286031,38.9054103],[65.843108611,38.9055251450001],[65.8432114970001,38.905622185],[65.8434183140001,38.905535066]]
),并将所有值连接成一个字符串,该字符串将用作postgis LINESTRING的输入.
该函数的期望输出为:65.8434183140001 38.905535066, 65.8433595220001 38.905479615, 65.843286031 38.9054103, 65.843108611 38.9055251450001, 65.8432114970001 38.905622185, 65.8434183140001 38.905535066
在阅读了许多关于so的答案和阅读了许多文章后,我得出了以下结论(我对postgres函数和过程还不熟悉):
create or replace
function flatten_points (points text[])
returns text
language sql
immutable
as $func$
DECLARE
flattened varchar[];
p text[];
BEGIN
FOREACH p SLICE 1 IN ARRAY points
LOOP
RAISE NOTICE 'CONCAT(flattened, %,%)', m[1], m[2];
END LOOP;
END
RETURN flattened
$func$;
不幸的是,这个函数甚至没有被创建,并且postgres出现语法错误.我不确定我做错了什么.
我怎么才能写出我想要的函数.欢迎您提供任何答案或建议.
附注:如果有一种方法可以使用POSTGIS从数组直接创建面,那将是非常棒的