ST_ MakePolygon - Amazon Redshift

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

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 類型的表達式。子類型必須是 LINESTRINGlinestring 的值必須是封閉或空的。

geom2

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

傳回類型

POLYGON 子類型的 GEOMETRY

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

如果 geom1geom2 為 null,則傳回 null。

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

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

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

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

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

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

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

範例

以下 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))