postgis 将字符串坐标重新格式化为 st_PointFromText() 的格式

postgis reformat string coordinates into format for st_PointFromText()

我在 postgresql table 中只有一个列 loc_coords,其中包含经纬度组合数据。该列中的数据如下所示:

(34.0539, -118.463)

为了使用 Postgis 函数 ST_PointFromText() 我必须重新格式化此文本以删除逗号和括号,意思是:

34.0539 -118.463

我一直在尝试找到一种一次性完成这些替换的方法,但总是出错。这是我在 SQL 中一直尝试做的事情:

WITH comma_repl as (
SELECT replace(loc_coords,',', '') FROM t_active_bus),
rparen as (
SELECT replace(loc_coords, '(','') FROM comma_repl),
lparen as (
SELECT replace(loc_coords, ')', '') FROM rparen)

UPDATE t_active_bus
SET st_loc = st_pointfromtext('POINT(||lparen||)',4326);

但是我一直收到 loc_coords 没有退出的错误。我想错误是关于 loc_coords 不存在于 rparenlparen 的子查询之一中。

关于如何更好地解决这个问题有什么建议吗?

您是否尝试过创建函数来实现此目的?

create or replace function process_coords() returns text as $$
begin;
return replace(replace(replace(,'(',''),')',''),',','');
end;
$$ language 'plpgsql';


UPDATE t_active_bus
SET st_loc = st_pointfromtext('POINT(' || process_coords(loc_coords) || ')',4326);