View a markdown version of this page

ST_MakePolygon - Amazon Redshift

Amazon Redshift 將不再支援在 2026 年 6 月 30 日之後使用 Python UDFs。我們將開始分階段強制執行。如需 Python 生命週期結束和遷移選項的詳細資訊,請參閱 2025 年 6 月 30 日發佈的部落格文章。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

ST_MakePolygon

ST_MakePolygon 具有傳回多邊形的兩個變體。一個採用單一幾何,另一個採用兩個幾何。

  • 第一個變體的輸入是定義輸出多邊形外環的 linestring。

  • 第二個變體的輸入是 linestring 和 multilinestring。這兩個都是空的或封閉的。

    輸出多邊形的外環的邊界是輸入 linestring,而多邊形內環的邊界是輸入 multilinestring 中的 linestring。如果輸入 linestring 為空,則會傳回空多邊形。會忽略 multilinestring 中的空 linestring。產生幾何的空間參考系統識別碼 (SRID) 是兩個輸入幾何的公共 SRID。

傳回幾何的維度與輸入幾何的維度相同。外環和內環必須具有相同的維度。

語法

ST_MakePolygon(geom1)
ST_MakePolygon(geom1, geom2)

引數

geom1

GEOMETRY 資料類型的值,或是評估為 GEOMETRY 類型的表達式。子類型必須是 LINESTRING。linestring 的值必須是封閉或空的。

geom2

GEOMETRY 資料類型的值,或是評估為 GEOMETRY 類型的表達式。子類型必須是 MULTILINESTRING。

傳回類型

POLYGON 子類型的 GEOMETRY。

傳回幾何的空間參考系統識別碼 (SRID) 等於輸入的 SRID。

如果 geom1 或 geom2 為 null,則傳回 null。

如果 geom1 不是線串,則會傳回錯誤。

如果 geom2 不是 multilinestring,則會傳回錯誤。

如果 geom1 未封閉,則會傳回錯誤。

如果 geom1 是單點或未封閉,則會傳回錯誤。

如果 geom2 包含至少一個具有單一點或未封閉的 linestring,則會傳回錯誤。

如果 geom1 和 geom2 具有不同的 SRID 值,則會傳回錯誤。

如果 geom1 和 geom2 具有不同的維度,則會傳回錯誤。

範例

以下 SQL 會從輸入 linestring 傳回多邊形。

SELECT ST_AsText(ST_MakePolygon(ST_GeomFromText('LINESTRING(77.29 29.07,77.42 29.26,77.27 29.31,77.29 29.07)')));
st_astext --------------- POLYGON((77.29 29.07,77.42 29.26,77.27 29.31,77.29 29.07))

下列 SQL 會從封閉 linestring 和封閉 multilinestring 建立多邊形。Linestring 用於多邊形的外環。Multilinestring 中的 linestring 用於多邊形的內環。

SELECT ST_AsEWKT(ST_MakePolygon(ST_GeomFromText('LINESTRING(0 0,10 0,10 10,0 10,0 0)'), ST_GeomFromText('MULTILINESTRING((1 1,1 2,2 1,1 1),(3 3,3 4,4 3,3 3))')));
st_astext ---------------------------------- POLYGON((0 0,10 0,10 10,0 10,0 0),(1 1,1 2,2 1,1 1),(3 3,3 4,4 3,3 3))