gpt4 book ai didi

postgresql - 从 plv8 访问 PostGIS 功能

转载 作者:行者123 更新时间:2023-11-29 13:24:45 33 4
gpt4 key购买 nike

我正在尝试编写一个 plv8 函数,它返回一个表示 UTM 区域值的整数。该函数利用 PostGIS 函数。这是(不起作用的)想法:

CREATE OR REPLACE FUNCTION utm_z(geometry)
RETURNS integer AS
$$
var geom_geog = st_transform($1, 4326);
var utm_zone = Math.floor((st_x(geom_geog)+180)/6)+1;
return utm_zone;
$$ LANGUAGE plv8;

调用该函数时我得到

错误:ReferenceError:st_transform 未定义

我如何才能从 plv8 内部访问这些 PostGIS 功能?

编辑:PostGIS 已安装并在此数据库中运行。 enter image description here

最佳答案

这是该函数的一个工作版本。在 plv8 中肯定有更好的方法来做到这一点......?

创建或替换函数 utm_z(geometry)
返回整数 AS
$$
var geom_geog_wkt =
plv8.execute("SELECT st_transform($1::geometry, 4326);", $1)[0].st_transform;
var utm_zone =
数学.floor(
plv8.执行(
“SELECT (st_x($1::geometry)+180)/6+1 AS\"utm_z\"", geom_geog_wkt
)[0].utm_z
);
返回 utm_zone;
$$ LANGUAGE plv8;

运行 plv8.execute() 返回一个对象数组。在上面的函数中,我获取了第 0 个数组对象,然后使用键访问该对象的值,该键是语句中调用的第一个函数名。

关于postgresql - 从 plv8 访问 PostGIS 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35730075/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com