Partager via


MultiPolygon

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

Instances Polygon

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

Les instances MultiPolygon sont acceptées si l'une des conditions suivantes est remplie.

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

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

Les exemples suivants illustrent 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 illustre une instance MultiPolygon qui lève 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 du MultiPolygon est une instance LineString et non une instance Polygon acceptée.

Instances valides

Les instances MultiPolygon sont valides s'il s'agit d'instances MultiPolygon vides ou si elles respectent les critères suivants.

  1. Toutes les instances comprenant l'instance MultiPolygon sont des instances Polygon valides. Pour des instances Polygon valides, consultez Polygon.

  2. Aucune des instances Polygon comprenant l'instance MultiPolygon n'en chevauche une autre.

L'exemple suivant illustre 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 n'est pas valide car les deux instances de Polygon se touchent uniquement sur un point tangent. @g3 n'est pas valide car les intérieurs des deux instances de 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');

Voir aussi

Référence

STArea (type de données geometry)

STCentroid (type de données geometry)

STPointOnSurface (type de données geometry)

Concepts

Polygon

Données spatiales (SQL Server)