如何为 Postgresql 安装 earthdistance(和需求立方体)模块?

如何为 Postgresql 安装 earthdistance(和需求立方体)模块?

我需要安装地球距离,Postgresql 的一个扩展。它的页面显示:

earthdistance 模块提供了两种不同的方法来计算地球表面的大圆距离。第一种方法依赖于 cube 包(必须先安装 cube 包,然后才能安装 earthdistance)。第二种方法基于内置的 point 数据类型,使用经度和纬度作为坐标。

这似乎是真的。

dealermade=# CREATE EXTENSION earthdistance FROM unpackaged;
ERROR:  required extension "cube" is not installed

cube但是我也无法安装

dealermade=# CREATE EXTENSION cube FROM unpackaged;
ERROR:  type "cube" does not exist

cube扩展需要它提供的类型,这似乎有点奇怪cube。我正在使用PostgreSQL 9.1.1。我在 Ubuntu 上执行此操作,并且安装了配套软件包。话虽如此,但我的系统上postgresql-contrib-9.1没有。cube.sql

如果我尝试直接安装,earthdistance.sql我会得到这个

$ psql -d db -f /usr/share/postgresql/9.1/extension/earthdistance--1.0.sql
CREATE FUNCTION
psql:/usr/share/postgresql/9.1/extension/earthdistance--1.0.sql:31: ERROR:  type "cube" does not exist
CREATE FUNCTION
CREATE FUNCTION
psql:/usr/share/postgresql/9.1/extension/earthdistance--1.0.sql:49: ERROR:  type "earth" does not exist
psql:/usr/share/postgresql/9.1/extension/earthdistance--1.0.sql:55: ERROR:  type earth does not exist
psql:/usr/share/postgresql/9.1/extension/earthdistance--1.0.sql:61: ERROR:  type earth does not exist
psql:/usr/share/postgresql/9.1/extension/earthdistance--1.0.sql:67: ERROR:  type earth does not exist
psql:/usr/share/postgresql/9.1/extension/earthdistance--1.0.sql:73: ERROR:  type earth does not exist
psql:/usr/share/postgresql/9.1/extension/earthdistance--1.0.sql:79: ERROR:  could not access file "MODULE_PATHNAME": No such file or directory
psql:/usr/share/postgresql/9.1/extension/earthdistance--1.0.sql:88: ERROR:  function geo_distance(point, point) does not exist

答案1

FROM unpackaged 仅适用于已作为 contrib 模块安装(即从 9.0 升级)且您需要将其转换为扩展的情况。因此,只需:

CREATE EXTENSION cube;
CREATE EXTENSION earthdistance;

相关内容