ST_Area 不存在 Heroku Postgresql + Postgis

ST_Area does not exist Heroku Postgresql + Postgis

我在 Heroku 中使用 Postgis 2.5 版数据库扩展了 Postgres。

我要使用的功能:

ST_Area( a_polygon )

具体来说,我想要在 table 中生成一个列: alter table buildings add building_area float generated always as ( st_area( base_polygon ) ) stored;

其中 base_polygon 的类型为 polygon

但是,我收到此错误:

错误:函数st_area(多边形)不存在提示:没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。

这些命令不是应该在我 运行 CREATE EXTENSION postgis 之后可用吗?

或者,我还需要做些什么吗?

您的多边形列数据类型似乎是内置于 polygon 的 postgre 基础。

ST_Area 期望 postgis geometry 类型作为参数。

如文档中的示例 https://postgis.net/docs/ST_Area.html

select ST_Area(geom) sqft,
ST_Area(ST_Transform(geom, 26986)) As sqm
from (
     select
         'SRID=2249;POLYGON((743238 2967416,743238 2967450,
         743265 2967450,743265.625 2967416,743238 2967416))' :: geometry 
      geom
 ) subquery;

检查此示例是否有效,这意味着 ST_Area 函数存在。

您可以添加具有 postgis 几何类型的列。 https://postgis.net/docs/AddGeometryColumn.html

SELECT AddGeometryColumn ('my_schema','my_spatial_table','geom',4326,'POLYGON',2);

然后通过 postgis 函数将多边形转换为 postgis 格式。

例如https://postgis.net/docs/ST_MakePolygon.html

SELECT ST_MakePolygon( ST_GeomFromText('LINESTRING(75 29,77 29,77 29, 75 29)'));