Postgis 和 Postgresql:类型错误“st_point”不存在

Posted

技术标签:

【中文标题】Postgis 和 Postgresql:类型错误“st_point”不存在【英文标题】:Postgis and Postgresql: type error "st_point" does not exist 【发布时间】:2016-01-20 08:47:54 【问题描述】:

我按照https://trac.osgeo.org/postgis/wiki/UsersWikiPostGIS21UbuntuPGSQL93Apt 指南在 Ubuntu 14.04 上设置了 PostGIS,尽管过程本身非常顺利,但结果并不那么令人满意。

即使我能够使用CREATE EXTENSION postgis; 在数据库中创建扩展,查询ALTER TABLE "realties" ADD "coordinates" ST_Point; 仍然会抛出ERROR: type error "st_point" does not exist

服务器版本为 9.4.5(包 postgresql-9.4-postgis-2.1)

谁能知道如何解决这个问题?

【问题讨论】:

【参考方案1】:

PostGis 只创建一个泛型类型geometrygeometry 类型的对象可以是点、多边形等。

ST_Point 不是类型,而是返回 Point 类型几何的函数。

因此正确的语法是:

ALTER TABLE "realties" ADD "coordinates" geometry(Point);

如果您知道要使用哪个SRID,那么最好也指定 srid,例如:

ALTER TABLE "realties" ADD "coordinates" geometry(Point, 4326);

如果您不确定要存储哪种几何图形,请不要指定任何内容:

ALTER TABLE "realties" ADD "coordinates" geometry;

PS:Postgis 还提供了geography 类型,类似于geometry。更多信息:http://postgis.net/docs/using_postgis_dbmanagement.html#PostGIS_Geography

【讨论】:

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

在java中存储PostgreSQL/PostGIS“几何(多多边形)”数据类型

PostgreSQL及PostGIS使用

PostgreSQL , PostGIS , 球坐标 , 平面坐标 , 球面距离 , 平面距离

更改 LC_CTYPE 以供 PostgreSQL 和 PostGIS 使用

如何在 docker 中为 postgresql 创建 postgis 扩展?

带有 Postgis Geodjango 安装的 Postgresql