首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从plv8访问PostGIS函数

从plv8访问PostGIS函数
EN

Stack Overflow用户
提问于 2016-03-02 02:01:40
回答 2查看 162关注 0票数 1

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

代码语言:javascript
复制
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;

当调用该函数时,我会得到

ERROR: ReferenceError: st_transform is not defined

如何从plv8内部访问这些PostGIS函数?

编辑: PostGIS已在此数据库中安装并正常运行。

EN

回答 2

Stack Overflow用户

发布于 2016-03-02 09:03:52

以下是该函数的工作版本。当然,在plv8中肯定有更好的方法来做到这一点……?

CREATE OR REPLACE FUNCTION utm_z(geometry) RETURNS integer AS $$ var geom_geog_wkt = plv8.execute("SELECT st_transform($1::geometry, 4326);", $1)[0].st_transform; var utm_zone = Math.floor( plv8.execute( "SELECT (st_x($1::geometry)+180)/6+1 AS \"utm_z\"", geom_geog_wkt )[0].utm_z ); return utm_zone; $$ LANGUAGE plv8;

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

票数 1
EN

Stack Overflow用户

发布于 2016-03-02 02:09:49

首先,您需要将Postgis安装到postgres

http://postgis.net/install/

然后将postgis扩展添加到您的数据库中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35730075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档