本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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))