Partager via


MultiPolygon

Une instance MultiPolygon est une collection de zéro ou 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 satisfaite.

  • Il s'agit d'une instance MultiPolygon vide

  • Toutes les instances comprenant l'instance Polygon sont des instances MultiPolygon acceptées. Pour plus d'informations sur les instances Polygon acceptées, consultez Polygon.

Les exemples suivants affichent 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 affiche une instance MultiPolygon qui lèvera un 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 dans 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. Toutes les instances qui comprennent l'instance MultiPolygon sont des instances Polygon valides. Pour les instances Polygon valides, consultez Polygon.

  2. Aucune des instances Polygon qui comprennent l'instance MultiPolygon ne se recoupe.

L'exemple suivant affiche 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 les intérieurs des deux instances Polygon se recoupent entre elles.

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