共用方式為


MultiPolygon

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

MultiPolygon 執行個體

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

幾何 MultiPolygon 執行個體的範例

如本圖所示:

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

  • 圖 2 是具有兩個 Polygon 元素的 MultiPolygon 執行個體。界限是由兩個外部環形和三個內部環形所定義。這兩個 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. 構成 MultiPolygon 執行個體的所有 Polygon 執行個體都沒有重疊。

下列範例顯示兩個有效的 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 執行個體彼此重疊。

範例

下列範例顯示 geometryMultiPolygon 執行個體的建立作業,並傳回第二個元件的已知的文字 (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();

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

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