PostGIS 错误:类型“地理”不存在

Posted

技术标签:

【中文标题】PostGIS 错误:类型“地理”不存在【英文标题】:PostGIS Error: type "geography" does not exist 【发布时间】:2011-10-23 12:09:48 【问题描述】:

我刚刚将我的开发机器升级到 Windows 7,因此正在重新安装 PostgreSQL 和 PostGIS。我按照 Postgres 网站上的建议使用了 Postgres Plus installer,然后按照 this tutorial 进行安装。我使用 template_postgis 创建了一个数据库,我目前正在开发的应用程序能够毫无问题地连接到数据库。

但是,我的旧代码无法像以前那样使用 PostGIS Geography 创建表。例如,当我尝试创建下表时:

CREATE TABLE test_area (
    id SERIAL PRIMARY KEY,
    name VARCHAR(1000),
    area GEOGRAPHY(POLYGON, 4326),
    start_time DATE,
    end_time DATE
)

我收到以下错误:

ERROR:  type "geography" does not exist
LINE 4:         area GEOGRAPHY(POLYGON, 4326),
                     ^

如果我在 pgAdmin III 的对象浏览器中查看数据库,我看到一堆Geometry 函数,所以安装似乎运行正常。我不确定我的问题可能是什么。安装程序是否可以只安装 PostGIS Geometry,而不安装 Geography

【问题讨论】:

【参考方案1】:

我以前也遇到过这个问题,但帮助我的不是 GIS 网站上的答案。

我通过 Homebrew 安装了 Postgresql,还安装了 Postgresql 应用程序。但是,对于 PostGIS,我是通过 Homebrew 安装的。

当我遇到这个问题时,我是在运行 Postgresql 应用程序而不是在终端中运行它,所以你当然会收到这个 PostGIS 错误,因为 PostGIS 从未安装在 Postgresql 应用程序上。一旦我在终端中启动 Postgresql,它就对我有用。

2014 年 9 月 25 日更新:

您可能没有在数据库中创建 PostGIS 扩展:

$ psql

psql> \c databaseName;

psql> CREATE EXTENSION Postgis;

【讨论】:

【参考方案2】:

可能postgis有问题,先看看“geography”这个类型是否存在? 如下所示;

db_lbs=> \dT 地理

        List of data types
 Schema |   Name    | Description 
--------+-----------+-------------
 lbs    | geography | 
(1 row)

顺便请注意当前的search_path;

我猜你的架构中不存在“地理”类型,它可能存在于公共架构中, 所以先检查一下。

【讨论】:

【参考方案3】:

我在GIS site 上回答了我的问题。我安装了 PostGIS 1.4,但直到 PostGIS 1.5 才添加 Geography。所以我不得不卸载我所拥有的并重新安装 Postgres。不过,我很难找到包含 PostGIS 1.5 的版本。不过,有人建议我不要使用“Postgres Plus”专有软件,因为 EnterpriseDB 需要时间来移植最新的附加组件等。相反,我被重定向到 EnterpriseDB 网站上的常规 PostgreSQL 下载,这令人惊讶地难以找到。 Here it is。 PostGIS 没有附带 64 位版本,所以我不得不改用 32 位版本,这很有效。终于!

【讨论】:

【参考方案4】:

我遇到了同样的问题,我通过卸载 postgres、postgis 并重新安装,然后按照官方安装文档解决了这个问题。 对于窗户:

http://postgis.net/windows_downloads

对于 Ubuntu 和 OSX:

http://postgis.net/install

【讨论】:

【参考方案5】:

如果有人在连接到使用 Qurkus 编写的 Heroku 应用程序时遇到同样的错误,修复方法如下——需要将 ?currentSchema=YOUR_CURRENT_SCHEMA 附加到 JDBC URI

【讨论】:

以上是关于PostGIS 错误:类型“地理”不存在的主要内容,如果未能解决你的问题,请参考以下文章

Postgis安装:类型“几何”不存在

错误:匹配 postgis 自定义模式时,函数 postgis_lib_version() 不存在

PostGIS中数据类型地理(点,4326)的大小?

如何将纬度/经度对转换为 PostGIS 地理类型?

当 Postgres 已经具有地理类型时需要 Postgis

PostGIS安装及shp数据导入