ST_MAKEPOLYGON函數通過指定外部邊界(shell)和0個或者多個洞(hole)來構造Polygon類型的地理對象。
命令格式
GEOGRAPHY ST_MAKEPOLYGON(GEOGRAPHY <shell>[, ARRAY<GEOGRAPHY> <holes>])參數說明
shell:必填。LineString類型的地理對象。
holes:可選。ARRAY類型,ARRAY中的元素是LineString類型的地理對象。
LineString (線段)類型的地理對象,可根據需求使用ST_MAKELINE 函數來構造。注意:
Linestring(線段)必須至少包含三個不同的頂點。
Linestring(線段)必須閉合:即第一個頂點和最後一個頂點必須相同。如果第一個頂點和最後一個頂點不同,則函數會構建一條從第一個頂點到最後一個頂點的最終邊。
傳回值說明
返回一個Polygon類型的地理對象。返回規則如下:
若輸入的GEOGRAPHY為NULL或輸入的ARRAY或ARRAY中的任何元素為NULL,則返回NULL。
若輸入空GEOGRAPHY,則返回報錯。
由於S2地理庫的精度問題的影響,輸入和輸出可能有非常微小的差異。
使用樣本
-- 指定shell,沒有指定hole
SELECT ST_MAKEPOLYGON(ST_GEOGFROMTEXT('LINESTRING(0 0, 1 0, 1 1)'));
-- 返回結果:
+--------------------------------+
| _c0 |
+--------------------------------+
| POLYGON ((0 0, 1 0, 1 1, 0 0)) |
+--------------------------------+
-- 同時指定shell和hole
SELECT ST_MAKEPOLYGON(ST_GEOGFROMTEXT('LINESTRING(0 0, 10 0, 10 10, 0 10, 0 0)'), ARRAY(ST_GEOGFROMTEXT('LINESTRING(2 2, 2 4, 4 4, 4 2, 2 2)')));
-- 返回結果:
+--------------------------------------------------------------------+
| _c0 |
+--------------------------------------------------------------------+
| POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0), (4 2, 4 4, 2 4, 2 2, 4 2)) |
+--------------------------------------------------------------------+