GeometryCollection
GeometryCollection
è una raccolta di zero o più istanze geometry
o geography
. GeometryCollection
può essere vuoto.
Istanze GeometryCollection
Istanze accettate
Per poter essere accettata, un'istanza GeometryCollection
deve essere un'istanza GeometryCollection
vuota oppure tutte le istanze che comprendono l'istanza GeometryCollection
devono essere istanze accettate. Nell'esempio seguente vengono illustrate le 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
, poiché 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 se tutte le istanze che comprendono l'istanza GeometryCollection
sono valide. Nell'esempio seguente vengono indicate tre istanze GeometryCollection
valide e un'istanza 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 è valida, poiché l'istanza Polygon
nell'istanza GeometryCollection
non è valida.
Per altre informazioni sulle istanze accettate e valide, vedere Point, MultiPoint, LineString, MultiLineString, Polygone MultiPolygon.
Esempi
Nell'esempio seguente viene creata un'istanza di un geometry``GeometryCollection
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);