GeometryCollection
GeometryCollection è una raccolta di zero o più istanze geometry o geography.
Istanze GeometryCollection
Istanze accettate
Affinché un'istanza GeometryCollection sia accettata deve essere un'istanza GeometryCollection vuota oppure tutte le istanze incluse nell'istanza GeometryCollection devono essere istanze accettate. Nell'esempio seguente vengono illustrate istanze accettate.
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)))';
Nell'esempio seguente viene generata un'eccezione System.FormatException in quanto l'istanza LinesString nell'istanza GeometryCollection non è accettata.
DECLARE @g geometry = 'GEOMETRYCOLLECTION(LINESTRING(1 1), POLYGON((-1 -1, -1 -5, -5 -5, -5 -1, -1 -1)))';
Istanze valide
Un'istanza GeometryCollection è valida quando tutte le istanze che includono l'istanza GeometryCollection sono valide. Nell'istanza seguente vengono mostrate tre istanze GeometryCollection valide e un'istanza che non è valida.
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 non è valido perché l'istanza Polygon nell'istanza GeometryCollection non è valida.
Per ulteriori informazioni sulle istanze valide e accettate, vedere Point, MultiPoint, LineString, MultiLineString, Polygon e MultiPolygon.
Esempi
Nell'esempio seguente viene creata un'istanza di un geometryGeometryCollection con i valori Z in SRID 1 in cui sono incluse le istanze Point e 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);
Vedere anche