我在 Heroku 中有一個用 Postgis 2.5 版資料庫擴展的 Postgres。
我想使用該功能:
ST_Area( a_polygon )
具體來說,我想在我的表中生成一個列:
alter table buildings add building_area float generated always as ( st_area( base_polygon ) ) stored;
wherebase_polygon是 type polygon。
但是,我收到此錯誤:
錯誤:函式 st_area(polygon) 不存在 提示:沒有函式匹配給定的名稱和引數型別。您可能需要添加顯式型別轉換。
這些命令不是應該在我運行后可用CREATE EXTENSION postgis嗎?
或者,還有什么我需要做的嗎?
uj5u.com熱心網友回復:
看來您的多邊形列資料型別是 postgre base 內置多邊形。
ST_Area 需要 postgis幾何型別作為引數。
正如檔案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)'));
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/380159.html
