Compartilhar via


GeometryCollection

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

Instâncias GeometryCollection

Instâncias aceitas

Para uma instância de GeometryCollection ser aceita, ela dever ser uma instância de GeometryCollection vazia ou todas as instâncias que integram a instância de GeometryCollection devem 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 uma System.FormatException porque a instância de LinesString na instância de 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

A instância de GeometryCollection será válida quando todas as instâncias que integram a instância de GeometryCollection forem válidas. O exemplo a seguir mostra três instâncias de 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álida porque a instância de Polygon na instância de GeometryCollection não é válida.

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

Exemplos

O exemplo a seguir cria uma instância de geometryGeometryCollection com valores Z no 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);