共用方式為


MultiPolygon

適用於:sql Server Azure SQL 資料庫 Azure SQL 受控執行個體 Microsoft Fabric Microsoft Fabric SQL 資料庫中 Microsoft Fabric Microsoft 倉儲中的 SQL 分析端點

MultiPolygon 執行個體是零或多個 Polygon 執行個體的集合。

Polygon 執行個體

下圖顯示 MultiPolygon 執行個體的範例。

geometry MultiPolygon 實例範例的圖表。

如本圖所示:

  • 圖 1 是具有兩個 Polygon 元素的 MultiPolygon 執行個體。 界限是由兩個外部環形和三個內部環形所定義。

  • 圖 2 是具有兩個 MultiPolygon 元素的 Polygon 執行個體。 界限是由兩個外部環形和三個內部環形所定義。 這兩個 Polygon 元素會在正切點相交。

已接受的執行個體

如果下列其中一個條件成立,則接受 MultiPolygon 執行個體。

  • 它是空的 MultiPolygon 執行個體。

  • 組成 MultiPolygon 執行個體的所有執行個體都是可接受的 Polygon 執行個體。 如需可接受的 Polygon 執行個體的詳細資訊,請參閱< Polygon>。

下列範例會顯示可接受的 MultiPolygon 執行個體。

DECLARE @g1 geometry = 'MULTIPOLYGON EMPTY';  
DECLARE @g2 geometry = 'MULTIPOLYGON(((1 1, 1 -1, -1 -1, -1 1, 1 1)),((1 1, 3 1, 3 3, 1 3, 1 1)))';  
DECLARE @g3 geometry = 'MULTIPOLYGON(((2 2, 2 -2, -2 -2, -2 2, 2 2)),((1 1, 3 1, 3 3, 1 3, 1 1)))';  

下列範例示範會擲出 System.FormatException的 MultiPolygon 執行個體。

DECLARE @g geometry = 'MULTIPOLYGON(((1 1, 1 -1, -1 -1, -1 1, 1 1)),((1 1, 3 1, 3 3)))';  

MultiPolygon 中的第二個執行個體是 LineString 執行個體,不是可接受的 Polygon 執行個體。

有效的執行個體

如果 MultiPolygon 執行個體是空的 MultiPolygon 執行個體或符合下列準則,則為有效的執行個體。

  1. 組成 MultiPolygon 執行個體的所有執行個體都是有效的 Polygon 執行個體。 如需有效的 Polygon 執行個體,請參閱< Polygon>。

  2. 組成 Polygon 執行個體的所有 MultiPolygon 執行個體彼此不會重疊。

下列範例示範兩個有效的 MultiPolygon 執行個體和一個無效的 MultiPolygon 執行個體。

DECLARE @g1 geometry = 'MULTIPOLYGON EMPTY';  
DECLARE @g2 geometry = 'MULTIPOLYGON(((1 1, 1 -1, -1 -1, -1 1, 1 1)),((1 1, 3 1, 3 3, 1 3, 1 1)))';  
DECLARE @g3 geometry = 'MULTIPOLYGON(((2 2, 2 -2, -2 -2, -2 2, 2 2)),((1 1, 3 1, 3 3, 1 3, 1 1)))';  
SELECT @g1.STIsValid(), @g2.STIsValid(), @g3.STIsValid();  

@g2 有效,因為這兩個 Polygon 執行個體只在一個相切點接觸。 @g3 無效,因為這兩個 Polygon 執行個體的內部互相重疊。

範例

範例 A。

下列範例示範 geometry MultiPolygon 執行個體的建立作業,並傳回第二個元件的 Well-Known Text (WKT)。

DECLARE @g geometry;  
SET @g = geometry::Parse('MULTIPOLYGON(((0 0, 0 3, 3 3, 3 0, 0 0), (1 1, 1 2, 2 1, 1 1)), ((9 9, 9 10, 10 9, 9 9)))');  
SELECT @g.STGeometryN(2).STAsText();  

範例 B.

此範例會具現化空的 MultiPolygon 執行個體。

DECLARE @g geometry;  
SET @g = geometry::Parse('MULTIPOLYGON EMPTY');