GeometryCollection
Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure
GeometryCollection è una raccolta di zero o più istanze di tipo 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);