GeometryCollection
Une GeometryCollection est une collection de zéro ou plusieurs instances geometry ou geography. Une GeometryCollection peut être vide.
Instances GeometryCollection
Instances acceptées
Pour qu'une instance GeometryCollection soit acceptée, il doit s'agir d'une instance GeometryCollection vide ou toutes les instances comprenant l'instance GeometryCollection doivent être des instances acceptées. L'exemple suivant illustre des instances acceptées.
DECLARE @g1 geometry = 'GEOMETRYCOLLECTION EMPTY';
DECLARE @g2 geometry = 'GEOMETRYCOLLECTION(LINESTRING EMPTY,POLYGON((-1 -1, -1 -5, -5 -5, -5 -1, -1 -1)))';
DECLARE @g3 geometry = 'GEOMETRYCOLLECTION(LINESTRING(1 1, 3 5),POLYGON((-1 -1, -1 -5, -5 -5, -5 -1, -1 -1)))';
L'exemple suivant lève une exception System.FormatException, car l'instance LinesString dans l'instance GeometryCollection n'est pas acceptée.
DECLARE @g geometry = 'GEOMETRYCOLLECTION(LINESTRING(1 1), POLYGON((-1 -1, -1 -5, -5 -5, -5 -1, -1 -1)))';
Instances valides
Une instance GeometryCollection est valide lorsque toutes les instances qui comprennent l'instance GeometryCollection sont valides. L'exemple suivant illustre trois instances GeometryCollection valides et une instance non valide.
DECLARE @g1 geometry = 'GEOMETRYCOLLECTION EMPTY';
DECLARE @g2 geometry = 'GEOMETRYCOLLECTION(LINESTRING EMPTY,POLYGON((-1 -1, -1 -5, -5 -5, -5 -1, -1 -1)))';
DECLARE @g3 geometry = 'GEOMETRYCOLLECTION(LINESTRING(1 1, 3 5),POLYGON((-1 -1, -1 -5, -5 -5, -5 -1, -1 -1)))';
DECLARE @g4 geometry = 'GEOMETRYCOLLECTION(LINESTRING(1 1, 3 5),POLYGON((-1 -1, 1 -5, -5 5, -5 -1, -1 -1)))';
SELECT @g1.STIsValid(), @g2.STIsValid(), @g3.STIsValid(), @g4.STIsValid();
@g4 n'est pas valide car l'instance Polygon dans l'instance GeometryCollection n'est pas valide.
Pour plus d'informations sur les instances acceptées et valides, consultez Point, MultiPoint, LineString, MultiLineString, Polygon et MultiPolygon.
Exemples
L'exemple suivant instancie une GeometryCollection geometry avec les valeurs Z dans SRID 1 contenant une instance Point et une instance Polygon.
DECLARE @g geometry;
SET @g = geometry::STGeomCollFromText('GEOMETRYCOLLECTION(POINT(3 3 1), POLYGON((0 0 2, 1 10 3, 1 0 4, 0 0 2)))', 1);