MultiPolygon

Une instance MultiPolygon est une collection de zéros ou de plusieurs instances Polygon.

Instances MultiPolygon

L'illustration suivante montre des exemples d'instances MultiPolygon.

Exemples d'instances MultiPolygon géométriques

Comme indiqué par l'illustration :

  • La Figure 1 est une instance MultiPolygon avec deux éléments Polygon. La limite est définie par les deux anneaux extérieurs et les trois anneaux intérieurs.

  • La Figure 2 est une instance MultiPolygon avec deux éléments Polygon. La limite est définie par les deux anneaux extérieurs et les trois anneaux intérieurs. Les deux éléments Polygon se croisent à un point tangent.

Instances acceptées

Une instance MultiPolygon est acceptée si l'une des conditions suivantes est remplie.

  • Il s'agit d'une instance MultiPolygon vide.

  • L'instance Polygon est composée uniquement d'instances MultiPolygon acceptées. Pour plus d'informations sur les instances Polygon acceptées, consultez Polygon.

Les exemples suivants montrent des instances MultiPolygon acceptées.

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)))';

L'exemple suivant montre une instance MultiPolygon qui lèvera une exception System.FormatException.

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

La deuxième instance composant l'instance MultiPolygon est une instance LineString et non une instance Polygon acceptée.

Instances valides

Une instance MultiPolygon est valide s'il s'agit d'une instance MultiPolygon vide ou si elle répond aux critères suivants.

  1. L'instance MultiPolygon est composée uniquement d'instances Polygon valides. Pour en savoir plus sur les instances Polygon valides, consultez Polygon.

  2. Les instances Polygon composant l'instance MultiPolygon ne se chevauchent pas.

L'exemple suivant montre deux instances MultiPolygon valides et une instance MultiPolygon non valide.

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 est valide car les deux instances Polygon se touchent uniquement à un point tangent. @g3 n'est pas valide car l'intérieur des deux instances Polygon se chevauchent.

Exemples

L'exemple suivant illustre la création d'une instance geometryMultiPolygon et retourne l'entrée WKT (Well-Known Text) du deuxième composant.

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();

Cet exemple instancie une instance MultiPolygon vide.

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