GeometryCollection

Uma GeometryCollection é uma coleção de zero ou mais instâncias de geometry ou de geography.

Instâncias de GeometryCollection

Instâncias aceitas

Para uma instância GeometryCollection ser aceita, ela deve ser uma instância GeometryCollection vazia ou todas as instâncias que integram a instância GeometryCollection precisam ser instâncias aceitas. O exemplo a seguir mostra instâncias aceitas.

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)))';

O exemplo a seguir gera um System.FormatException porque a instância LinesString na instância GeometryCollection não é aceita.

DECLARE @g geometry = 'GEOMETRYCOLLECTION(LINESTRING(1 1), POLYGON((-1 -1, -1 -5, -5 -5, -5 -1, -1 -1)))';

Instâncias válidas

Uma instância GeometryCollection é válida quando todas as instâncias que integram a instância GeometryCollection são válidas. Veja a seguir três instâncias GeometryCollection válidas e uma instância que não é válida.

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ão é válido porque a instância Polygon na instância GeometryCollection não é válida.

Para obter mais informações sobre instâncias aceitas e válidas, consulte Ponto, MultiPoint, LineString, MultiLineString, Polígono e MultiPolygon.

Exemplos

O exemplo a seguir cria uma instância de geometryGeometryCollection com valores Z em SRID 1 contendo uma instância de Point e uma instância de 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);